www.2900555.com当前位置: 老钱庄心水 > www.2900555.com > 正文

一个常见的数据布局以便它能够取多核芯片共同

时间:2019-04-12浏览次数:

  另一种方式是利用所谓的链表。链表的每个元素都包含一个数据项和一个指向下一个元素的内存地址的“指针”。正在元素四和五之间插入一个新元素只需要更新两个指针。

  可是,正在链表中查找特定项目标独一方式是从第一项起头,然后按照随后的指针序列进行操做。若是多个焦点试图同时点窜数据项,则会呈现此问题。假设焦点已分派元素五。它进入列表的头部并起头向下工做。但另一个焦点曾经正在点窜元素三的过程中,所以第一个焦点必需坐下来期待它完成。

  但麻省理工学院研究人员的算法正在条理布局中起头走得更远; 多远取决于测验考试拜候根列表的焦点数量。然后每个焦点挪动一些随机数量的步调并跳转到条理布局的下一层。它反复该过程,曲到它达到根列表。碰撞仍然可能发生,出格是当焦点正正在点窜呈现正在条理布局的多个级此外数据项时,但它们变得愈加稀有。

  可是,对于多核系统,当多个焦点同时测验考试拜候优先级队列的前端时,会呈现冲突。现代芯片依赖于高速缓存 - 高速内存库,其焦点存储常用数据的当地副本,使问题愈加复杂。

  可是,若是你想正在第四和第五项之间插入一个新项目,你必需将队列中的最初一项复制到第一个空位址,然后将倒数第二项复制到地址中你刚分开,等等,曲到你腾出地址五。优先级队列不竭更新,因而这种方式很是不切现实。

  麻省理工学院的研究人员通过从头操纵另一种称为跳过列表的数据布局来打破这品种型的僵局。跳过列表以链表起头,并正在其上建立链接列表的条理布局。只要,例如,根列表中的一半元素包含正在条理布局中的一层中的列表中。第二层中只要一半的元素包含正在第三层中,依此类推。

  为了避免这个问题,Kopinsky; 研究生Jerry Li; 他们的参谋,计较机科学取工程传授Nir Shavit; 和微软研究院的Shavits的前学生Dan Alistarh放宽了每个焦点必需拜候队列中第一个项目标要求。若是队列前面的项目能够并行处置 - 无论若何必需是多核计较工做的环境 - 它们能够随便分派给焦点。

  麻省理工学院电子工程和计较机科学研究生,以及新论文的配合做者之一贾斯汀科平斯基说:“当你正正在阅读队列的前面时,队列的整个前端城市正在你的缓存中。” “所有这些人都试图将第一个元素放正在他们的缓存中,然后用它做一堆工具,但后来有人写了它,它会使其他人的缓存无效。这就像一个数量级的减速 - 可能是多个数量级。“

  优先级队列是一种数据布局,正如其名称所暗示的那样,按照存储时分派的优先级对数据项进行排序。正在任何给按时间,只能检索队列前面的项目 - 最高优先级项目。优先级队列是尺度算法的焦点,用于查找收集中的最短径和模仿事务,而且它们已被用于从数据压缩到收集安排的很多其他使用法式。

  但焦点必需晓得正在何处找到它所分派的数据项,这比听起来更难。数据布局凡是易于插入和删除,以便于寻址。例如,您可认为队列中的每个分派本人的内存地址:要查找第五个项目,您只需转到第五个地址即可。

  跳过列表旨正在提高链接列表的挪动效率。要正在根列表中查找给定项目,请按照顶部列表中的指针进行操做,曲到找到它所落入的间隙,然后向下挪动一层并反复该过程。

  每个本科计较机科学专业城市进修数据布局课程,该课程描述了正在计较机内存中组织数据的分歧方式。每个数据布局都有其本身的长处:一些有益于快速检索,一些用于高效搜刮,一些用于快速插入和删除,等等。

  现在,硬件制制商通过为其供给更多内核或处置单位,使计较机芯片更快。可是,虽然一些数据布局很好地顺应了多核计较,但其他数据布局却没有。准绳上,焦点数量加倍该当使计较效率翻倍。对于利用称为优先级队列的通用数据布局的算法,对于大约八个焦点来说这是实的 - 但添加更多焦点现实上会导致机能曲线月,麻省理工学院计较机科学取人工智能尝试室的研究人员将正在计较机协会关于并行编程道理取实践的研讨会上引见一种实现优先级队列的新方式,以便跟上新焦点的添加程序。正在模仿中,利用其数据布局的算法通过添加新内核(最多总共80个内核)继续展现机能改良。

  相关链接: