欢迎来到天天文库
浏览记录
ID:11314154
大小:170.00 KB
页数:26页
时间:2018-07-11
《无巧不成书——阿拉伯第一部小说之新说》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第12章并行算法有一个钟表的人知道时间;有两个钟表的人无所适从。佚名首先,必须注意,尽管共和国可能很小,但为了防止少数人的阴谋,议员必须有一定的数量;另外,尽管共和国可能很大,但为了防止民众混乱,议员人数也必须限定为某一数额。詹姆士×麦迪逊,178712.1引言近10年来,并行计算已经从计算机科学的边缘成为计算机科学的主流,和计算机科学的其他领域相比,它的发展是及其迅速的。目前有多种形式的并行计算机,包括的处理器数也从2到65,536不等。现存的各种并行计算机的差异,就算对没有用过的人来说,也是巨大的。我们再不能假定有一个“通用”的计算模型并希望其适合于所有的并行计算机。并行算法
2、的设计、分析和正确性证明比相应的串行算法来说要困难得多。不能期望短短的一章能覆盖并行计算的所有或大多数领域,这里只是给出使用不同计算模型和不同技术的例子,并尝试展示并行算法的风格并探究并行算法设计的困难。本章以并行计算共同特性的介绍开始,接着是本章所使用的主要并行计算模型的简单描述,最后是算法和技术的例子。衡量串行算法复杂度的主要标准是运行时间和占用的空间,这些度量对于并行计算也同样重要,但我们还必须顾及其他的资源开销。一种重要的资源是处理器数,有些问题是固有串行的,它们不能被“并行”化,因此就算有任意多的处理器也无济于事。然而,大多数问题可以在某种程度上并行化,使用的处理器越多
3、(在某个界限之内)算法越快。研究并行算法的界限,探讨可并行求解的问题的特性,是很重要的。然而,由于处理器数是有限的,如何有效地使用这些处理器也很重要。另一个重要的问题是处理器间的通信。通常,交换数据所花费的时间比对数据进行简单操作所花费的时间要长。进一步,一些处理器可能相隔相近,而另一些之间的距离则可能很远。因此,以有效的方式放置处理器以减少通信开销就很重要。还有一个重要的事情是同步,它对于那些运行在由某种通信网络连接在一起的计算机上的并行算法来说是主要的问题。这种形式的算法通常称为分布式算法。由于篇幅,本书不准备讨论分布式算法,而仅讨论那些假定完全同步的模型。一些并行计算模型要
4、求所有的处理器每步执行完全相同的指令,遵循该限制的并行计算机称为SIMD(单指令流多数据流)机器。连接机(connectionmachine)就是这类机器的一个显著例子。如果并行计算机内不同的处理器可以执行不同的程序,该并行计算机就被称为MIMD(多指令流多数据流)机器。除非特别指出,本书假定讨论的计算机是MIMD的。12.2并行计算模型介绍所有的并行计算模型不是本书的主题,这里只涉及一些主流的和那些将在本章使用到的模型。本节包括一些适用于大多数模型的概述性的讨论和定义,后续每节都将考察一种模型,包括其详细描述和算法例子。我们将算法的运行时间记为T(n,p),其中n是输入的大小,
5、p是处理器的数目。比率S(p)=T(n,1)/T(n,p)称为算法的加速比。使S(p)=p的并行算法是最有效的,因为在这种情况下,算法获得了完美的加速比。T(n,1)的值应取自众所周知的串行算法。处理器利用率的一个重要度量是并行算法的效率,定义为―――――――――――――――原书第376页公式―――――――――――――――效率是一个处理器(运行串行算法)所花费的时间与p个处理器所花费总的时间的比率(总的时间是实际流逝时间乘以处理器的数目)。效率显示了与串行算法相比,未浪费的处理器时间的百分比。如果E(n,p)=1,则在算法执行过程中所有处理器完成的工作量的总和等于串行算法所需要的
6、工作量,在这种情况下,算法取得了最优的处理器使用效率。获得最优效率的机会是很小的,在大多数情况下,并行算法会引入一些对串行算法来说是不需要的开销。我们的目标是使效率最大化。在设计并行算法时,可以将p固定为已有的处理器数,再尝试使T(n,p)最小,但若如此,当处理器的数目改变时,就必须设计新的算法。设计一个对不同的处理器数均能工作的算法是值得的。下面讨论如何将一个工作在某一个p值上的算法转换为工作在一个处理器数比p小的机器上而不损失效率的方法。一般来说,对任意常数k,我们可以将一个T(n,p)=X的算法修改为一个T(n,p/k)»kX的算法。换言之,我们可以使用原来k份之一的处理器
7、工作k倍时间来完成同样的工作。算法修改的原理是通过一个处理器执行k步计算来仿真原来k个处理器完成的一步工作。但这个原理不能适用于所有的情况。例如,k可能不能整除p,算法可能依赖于处理器的互连模式(在12.4讨论),另外决定那些处理器进行仿真也将耗费一定的时间。然而,该并行折叠原理(parallelismfoldingprinciple)不仅普遍而且有用,它表明我们可以在不影响效率的情况下减少处理器的数目。例如,如果原来的对于一个较大的p所设计的程序有很好的加速比,则我们可以对任何
此文档下载收益归作者所有