当前用于计算的并行模型


30

1980年代出现了并行计算的PRAMBSP模型。似乎两个模型的鼎盛时期都在80年代末和90年代初。

这些领域在并行算法的研究方面仍然活跃吗?是否有更新的更复杂的模型用于并行计算?通用模型是否仍在流行,或者研究人员正在尝试专门研究GPGPU或基于云的计算吗?

Answers:


19

有许多模型可供选择,但其中最突出的是:

  1. MUDMapReduce的模型,主要是有关捕获MapReduce框架,但是更一般地可以被看作是计算的并行分布式模型
  2. 已经提出了各种多核模型(但尚未成为标准)

上个月在DIMACS举办了一个有关该主题的研讨会:仔细阅读摘要将为您提供更多指导。


DIMACs研讨会很棒!谢谢。
Nicholas Mancuso

3
在2009年,有一个更早的研讨会umiacs.umd.edu/conferences/tmc2009在我看来,与最近的DIMAC相比,它的磨练甚至更为深刻。Leslie Valiant在那里介绍了Multi-BSP模型(在今年的研讨会上进行了更详细的讨论),而Intel的Phil Gibbons提出了一个令人发指的演讲理论:在转向许多值得研究的内核时睡着了。对我而言,DIMACs研讨会过于关注MapReduce,而Google不再将其用于构建Web索引。
安德拉斯·萨拉蒙

确实如此。我忘记了较早的那个。
Suresh Venkat

22

对于此答案的博客文章格式,我事先表示歉意。我不由自己概述一下并行计算世界。

您可以将并行编程模型大致分为两类:控制流模型和数据流模型。

控制流模型尽量做到明确的控制程序的环境中并行工作,基本上每个可编程计算机今天。解决的根本问题是,这种“冯·诺依曼体系结构”不是为并行执行而设计的,而是为高效的顺序计算而设计的。在这种情况下,并行性是通过复制部分基本模块(内存,控制,算术)获得的。

仅重复算术运算即可获得SIMD指令,所有ALU共享相同的程序计数器(PC),因此即使对不同的数据也始终并行执行相同的操作。

复制ALU和PC,但将指令排序器保留在控制单元中会给您带来乱序(OoO)执行,从而产生一些流水线并行性。在此类别中,您还具有超长指令字(VLWI)和分支预测技术。但是,您很少在软件级别上看到此类别。

更进一步的做法是复制整个“核心”,但保持内存共享,这些是当前为您提供任务(或线程)并行性的多核处理器。在这种情况下共享内存给您带来非常非常棘手的细微并发问题。因此,当前多核上的并行计算完全围绕同步/并发问题,性能(无同步)和所需语义(完全同步,顺序执行语义)的谨慎平衡进行。例如,PRAM或近来流行的Cilk射击,例如fork / join(IntelTBBJava.Utils.Concurrency)。CSP和Actor模型是并发模型,但是如上所述,并发和并行性在共享内存环境中变得模糊。nb并行性是为了提高性能,并发性保持正确的语义。

复制内存也可以使您使用MPI及其同类软件进行编程的联网计算机,或者只是奇怪的非冯诺依曼体系结构,例如片上网络处理器(云处理器,Transputer,Tilera)。内存模型(例如UMANUMA)试图维持共享内存的错觉,并且可以存在于软件或硬件级别。MPI保持程序级别的并行性,并且仅通过消息传递进行通信。消息传递还用于硬件级别的通信和并发(Transputer)。

第二类是数据流模型。这些是在计算机时代的曙光中设计的,它是一种记录和执行并行计算的方法,从而避免了冯·诺依曼(Von Neumann)的设计。到了80年代,这些性能已经不再流行(对于并行计算),而后继性能则呈指数增长。但是,实际上许多并行编程系统(例如Google MapReduce,Microsoft的Dryad或Intel的Concurrent Collections)都是数据流计算模型。在某些时候,它们将计算表示为图形,并以此来指导执行。

通过指定模型的各个部分,您可以获得数据流模型的不同类别和语义。您将图形的形状限制为什么:DAG(CnC,Dryad),树(mapreduce),有向图?是否有严格的同步语义(光泽),反应式编程]?您是否不允许递归具有静态计划(StreaMIT),或者通过具有动态计划程序(Intel CnC)提供更多的表达能力?传入或传出边缘的数量是否有限制?当输入数据的子集可用时,触发语义是否允许触发节点?是边缘数据流(流处理)还是单个数据令牌(静态/动态单个分配)。对于相关工作,您可以先查看Arvind,K. Kavi,j。等人的数据流研究工作。Sharp,W。Ackerman,R.Jagannathan等

编辑:为了完整性。我应该指出,还有并行的归约驱动模型和模式驱动模型。对于约简策略,您大致具有图约简和字符串约简。Haskell基本上使用图归约,这是一种在顺序共享内存系统上非常有效的策略。减少字符串的重复项可以工作,但是具有私有内存属性,使其更适合隐式并行化。模式驱动的模型是并行逻辑语言,例如并发序言。Actor模型也是模式驱动的模型,但是具有私有内存特性。

PS。我广泛使用“模型”一词,涵盖用于正式和编程目的的抽象机。


我不明白mapreduce是如何形成一棵树的。你能解释一下吗?
·雅各布

@Riko Jacob,可以说您将“ +”映射到(1 2 3 4),从概念上讲,这将创建一个应用程序树,在每个节点上都带有“ +”,每个数字都留有叶子。减少(或折叠,如果您来自哈斯克尔)将使用其子节点的数据折叠每个节点。
牛肉

ķ22

如果您不考虑图形本身的创建(例如,将a,b映射到键/价位对),则可以得到两棵树进行约简,并带有一些善意:)也许更多的是k-连通图或点阵图如你所说。没错,它比简单的树更通用。我试图与更通用的DAG数据流结构区分开。
牛肉

8

对于消息传递体系结构,一个与BSP十分相似但更易于处理且性能分析接近于真实计算机上的模型的模型肯定是CGM或粗粒度多计算机。它是由Frank Dehne提出的,您会发现许多有趣的论文,介绍了在这种情况下开发的算法。

CGM适合假设p个处理器的粗粒度架构,每个处理器具有O(n / p)个本地内存,并且输入n的大小比p大得多(相差几个数量级),即p≪n。因此,该模型在当前架构上的映射比其他映射要好得多。它已经被广泛研究。该模型基于以下假设:(i)算法执行所谓的超级步骤,包括一个阶段的本地计算和一个阶段的中间屏障同步的处理器间通信,(ii)所有p个处理器都可以访问O(n / p)个本地内存,(iii)在每个超级步骤中,处理器最多可以发送和接收O(n / p)个元素,并且(iv)处理器之间的通信网络可以是任意的。在该模型中,通过计算时间和通信回合数对算法进行评估。尽管该模型很简单,但是可以为并行算法的实际性能提供合理的预测。实际上,用于CGM的并行算法通常在理论上的复杂度分析非常接近在实现和基准测试时通过实验确定的实际时间。



4

据我所知,BSP和LogP模型如今已用于分布式算法。同样,由于采用了GPU计算,PRAM再次变得流行,但是在分析中应该包括存储器层次结构。您可以检查UPMH模型(统一并行存储器层次结构),该模型很好地补充了PRAM。

B. Alpern,L。Carter,E。Feig和T. Selker。统一内存层次模型的计算。Algorithmica,12:72-109,1994。10.1007 / BF01185206。

Bowen Alpern,Larry Carter和Jeanne Ferrante。将并行计算机建模为内存层次结构。在In Proc。《大规模并行计算机的编程模型》,第116–123页。IEEE计算机协会出版社,1993年。

对于GPU计算,也有人提出了一种理论计算模型的建议。K模型:

Gabriele Capannini,Fabrizio Silvestri和Ranieri Baraglia。K模型:用于流处理器的新计算模型。在2010年IEEE第12届国际高性能计算和通信国际会议论文集中,HPCC '10,第239-246页,华盛顿特区,美国,​​2010年。IEEE计算机学会。

最后,我已经看到将蜂窝自动机(CA)建模为并行计算机,我个人认为这是一个非常有趣的研究主题。谁知道未来的处理器将以这种方式制造,就像很小的计算空间一样。我对此没有可靠的参考,您可以在网上查看。


3

纯函数程序允许并行执行独立的表达式。因此,我将它们视为并行计算模型。


函数式编程没有特别的成本模型,因此这不能解决问题。参见cstheory.stackexchange.com/questions/376/…–
Charles Stewart

2
这种基于lambda演算的语言的评估机制是归约法,它实际上并没有直接映射到实际硬件。这就是为什么Haskell仍然必须引入像“ par”这样的显式并行构造的原因。参考:csg.csail.mit.edu/projects/languages/ph.shtml
牛肉

3

我更喜欢Bader-Jaja方法(请参阅第2.1节)。您将复杂性建模为消息传递问题。对于每个发送的消息,既有用于启动通信的等待时间的变量,也有带宽的变量。

ŤüpŤüp


-3

您特别提到了云计算。出现了与这一领域短短几年激烈的创新之内亚马逊的弹性计算云,谷歌应用程序引擎和各种工具及其相关概念并行处理“模式”。

特殊的开放源代码工具包括Google的Mapreduce,Apache HadoopNoSQL数据库,它们已成为并行化算法“最佳实践”和“设计模式”中新的,强大的,广泛适应的标准。此外,memcacheD越来越多地用作内存中的分布式数据库。最近的一篇论文[1]中描述了Facebook使用的一个例子。

[1] Berezecki等人的许多核心键值存储


再次。我要求模型或并行计算。不是工具。MapReduce就是这样一种模型。但是Hadoop和NoSQL不是。Hadoop是MapReduce的基于Java的版本。据我所知,NoSQL是放松密钥存储的模型。
尼古拉斯·曼库索

MapReduce最初是一种工具,后来通过广泛使用/采用逐步发展为模型。与其他人一样。Hadoop与MapReduce不同,但也许相似。是的,我想我被Suresh包含MapReduce的投票最多的答案所抛弃了……人们似乎并不在乎,或者宁愿不讨论此站点上的实际软件pkg,无论使用多么广泛。即使考虑到他们像MapReduce一样激发/
交叉授粉

2
问题是,您没有回答这个问题。此处的政策是与问题切线相关的建议不是可接受的答案。如果您不喜欢此政策,则可以选择不参加。如果您有关于如何为现实世界中的并行系统建模的实际想法,那将是更多话题(尽管仍然无法回答所提出的问题)
Sasho Nikolov 2012年

-3

另一个角度。诚然,有些人可能认为这有些晦涩难懂,但有一些工作以一般方式并行化概率算法,这些算法被认为在某种程度上自然适用于并行性。

参见例如 工作站集群上的并行概率计算 Radenski,Vann,Norris:

概率算法是用于解决棘手问题的计算密集型近似方法。概率算法是集群计算的极佳候选者,因为它们需要很少的通信和同步。可以将公共并行控制结构指定 为概率群集计算的通用算法。 可以将此类通用并行算法与特定于域的顺序算法粘合在一起,以得出针对不同棘手问题的近似并行解决方案。在本文中,我们提出了一种用于在工作站集群上进行概率计算的通用算法。我们使用这种通用算法来导出针对两个离散优化问题的特定并行算法:背包问题和旅行商问题。

在不清楚的情况下,与概率计算以及整体转换一起称为“通用并行控制结构作为通用算法”的就是“模型”。

可以说概率计算不是严格的经典计算或图灵完备的。因此请注意,将经典与概率计算联系在一起也有一些工作,特别是在并行环境中,例如

Rao 关于概率并行程序推理

在算法的设计和分析中使用随机化可以解决困难的问题,而某些问题可能没有确定性的解决方案,因此可以使用简单有效的算法。简单性,效率和可解性的这种提高导致了对算法的绝对正确性的传统概念的权衡,从而获得了更为定量的概念:概率为0到1的正确性。随机化的思想使得关于概率并行程序的推理变得更加曲折和困难。在本文中,我们解决了确定和推导具有确定性或概率为1的概率并行程序的属性的问题。

当然,QM计算与概率计算高度相似(强调这一点的一个很好的参考文献是Fortnow的《一个复杂性理论家的量子计算观点》),并且有一些暗示,这些方法可能会在那里扩展,例如在并行QM模拟中。


-6

有些人会认为这是有争议的,甚至这个角度的支持者在研究的早期阶段也必须承认这一点,但是基本上量子计算似乎与并行性和并行计算有很多联系。这些参考文献目前分散,但是一个坚定的研究人员可以看到一个新兴的主题。

也许最好的联系是与格罗弗斯搜索算法有关,该算法最近被证明在一般意义上可用于加快大多数NP完整问题的速度[5]。Grovers算法似乎与并行数据库搜索算法有很强的类比/联系。最好的经典串行算法不能达到相同的性能,但是最近至少有一个权威人士认为,搜索的QM方法实际上并不比并行化经典算法好。[1]

进一步的证据是在量子搜索中明确考虑并行性的方案,例如[2]。还提出了基于并行/分布式处理的量子模拟器[3] [4],并且由于该方案非常适合并导致有效且易于处理的模拟(参考文献[3]中模拟了30量子比特),因此这种转换当然,这不仅是巧合,而且表明了并行经典计算和QM计算之间更深的桥梁,但到目前为止可能还没有发现。

[1] 量子搜索实用吗?由Viamontes等人撰写

[2] Wu / Dian提出的基于平行unit判别方案精确量子搜索

[3] Niwa,Matsumoto,Imai的量子计算通用并行模拟器

[4] Beals et al 2012的高效分布式量子计算

[5] 用Furer 2008 解决量子搜索中NP完全问题


@vnz,这似乎充其量是概念量子的随机杂物箱。谷歌搜索“平行量子”并在此处列出结果对我和阅读此文章的其他人毫无用处。我认为,对于社区而言,最好是实际回答您感到满意和了解的答案,而不是仅仅为信誉点发疯。将量子计算视为并行搜索是非建设性的,并且可能是无关紧要的。用您的描述,量子计算具有“强类比/连接”的概率搜索,而不是并行的。
Nicholas Mancuso 2012年

我不知道在课堂上教的教条是什么,但是如果那里的人实际上有一个参考而不是仅仅具有BASELESS ASSERTIONS的话,那表明为什么到目前为止尚未发现的完成并行经典计算的QM对应关系就没有合法性。...我将阅读它。QM计算会返回精确的答案ala /例如shor因数,否则它不是一个实际的计算系统.....除了我素描之外,还有其他方法可以证明QM计算在某种意义上必须等效于并行经典计算。由于它不在教科书中,所以一定是错误的吧!
vzn

这里有一门关于量子计算的完整的免费课程:coursera.org它可以为您澄清事物。
尼古拉斯·曼库索

ps作为“大杂烩” ...尝试实际阅读REF ..或只是略读它们在你的情况眨眼=)
vzn 2012年

1
(6.)您的参考文献[5] 再次描述了Grover算法的扩展方式,但又没有解决您在量子计算中寻求的并行性。总而言之:您对量子计算和并行计算之间存在联系的解释似乎源于QM的“多世界解释”。尽管不是晦涩难懂,但它也不是没有争议,并且当然不允许我们将量子计算有效地描述为“并行计算”,除非在一定程度上我们不到这些计算...这并不是一个有力的论据他们的存在。
Niel de Beaudrap 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.