并行算法综述摘要:本文主要对并行算法的概念、设计等进行综述。
首先概要的介绍有关并行算法的相关概念,接着详细的介绍并行算法的设计策略、设计方法等,最后对并行算法的前景做简单的分析讨论,并做总结。
关键词:并行算法;算法设计;设计策略;设计方法中图分类号:tp393随着计算机时代的到来,计算机的应用和开发主要延伸到社会的各个领域,无论是国家的经济科技还是生活教育等,都能看到计算机的身影。
而高性能计算机的研究和开发更能直接体现出一个国家的经济科技水平,同时由于信息化国防建设也使得高性能计算机成为国防安全的宠儿。
世界各国都在努力争夺高性能计算机的战略制高点,这也充分说明高性能计算机对于一个国家科技实力的重要性。
计算机的发展迅速,从最初的电子管到现在大规模继承电路技术的应用,计算机的运算速度更快,功能也更加强大。
当然,其关键因素就是并行算法,并行算法直接决定着计算机性能的高低,同时并行算法的发展程度也相当明显的显示出国家计算机科技水平的发达程度,是国家综合国力的一个体现。
1 并行算法1.1 国内外研究现状并行算法研究的高峰期在70、80年代。
这一时期,涌现除了很多优秀的非数值并行算法,它们在整个并行算法研究历史上占据着非常辉煌的一页。
90年代中期以后,并行算法的研究渐渐面向实际,内容也有所扩展。
近年来,并行算法的研究更是趋于实际应用中。
比如:一种基于局部小型分布式存储架构的大规模fock矩阵建设的新的并行算法:rt并行算法;基于共享内存架构的节能性能权衡分析并行算法;在多核心cpu与gpu中基于块三角矩阵求解线性系统的并行算法;同构新的并行划分方法和巨人矩阵转置并行算法,等等。
图像匹配的并行算法;面向异构体系结构的粒子输运并行算法;海量数据拟合并行算法;基于gpu的高性能并行算法;遥感数字影像中提取植被指数的并行算法;fermi架构下超声成像组织运动可视化并行算法;分布式水文模型的并行计算;声纳图像对比度增强的并行算法;大规模稀疏矩阵特征问题求解的并行算法;分布动载荷识别的并行算法,等等。
1.2 并行算法并行算法就是通过多台处理器对于一些可同时执行的问题联合求解的方法和步骤。
其特点是各个子问题相对独立。
并行算法是计算机设计相对复杂的技术之一,虽然算并行法的设计是复杂的,但并不是无迹可寻。
随着计算机的普及和应用,技巧也被后来的人掌握并总结为最基本的设计基础。
并行算法可从不同的角度分类成数值计算和非数组计算的并行算法;同步的、异步的和分布式的并行算法;共享存储的和分布存储的并行算法;确定的和随机的并行算法等等。
1.2.1 并行算法的设计策略并行算法的设计策略主要有:并行算法的直接并行化、从问题描述开始设计并行算法、借用已有算法求解新问题。
具体描述如下:的并行计算方法之一,它的基本操作是将现有的串行算法进行对串行代码进行发串行算法直接并行化是现在最常用掘和利用,并合并化处理的过程。
当然并不是所有的程序都适合串行算法直接合并化。
从问题描述开始设计并行算法,即从问题本身描述出发,不考虑相应的串行算法,设计一个全新的并行算法。
设计方法:挖掘问题的固有特性与并行的关系。
设计全新的并行算法是一份具有挑战性和创造性的工作,利用串的周期性的pram-crcw算法是一个很好的范例。
借用已有算法求解新问题,就是找出求解问题和某个已解决问题之间的联系,改造或利用已知算法应用到求解问题上。
这是一项创造性的工作,使用矩阵乘法算法求解所有点对间最短路径是一个很好的范例。
1.2.2 并行算法的基本设计技术目前为止,并行算法的设计技术主要有:划分设计技术、分治设计技术、平衡树设计技术、倍增设计技术、流水线设计技术。
其中划分设计技术又可分为均匀划分技术、方根划分技术、对数划分技术、功能划分技术。
具体描述如下:划分设计技术:(1)均匀划分技术,划分方法,将n个元素a[1…n]分成p组,每组a[(i-1)n/p+1…in/p],i=1…p;(2)方根划分技术,划分方法,n个元素a[1…n]分成a[(i-1)n+1…in],i=1…n;(3)对数划分技术,划分方法,n个元素a[1…n]分成a[(i-1)logn+1…ilogn],i=1…n/logn;(4)功能划分技术,划分方法,n个元素a[1…n]分成等长的p 组,每组满足某种特性。
分治设计技术,设计步骤如下:将输入划分成若干个规模相等的子问题,同时(并行地)递归求解这些子问题,并行地归并子问题的解,直至得到原问题的解。
平衡树设计技术,设计思想为:以树的叶结点为输入,中间结点为处理结点,由叶向根或由根向叶逐层进行并行处理。
倍增设计技术,设计思想为:以树的叶结点为输入,中间结点为处理结点,由叶向根或由根向叶逐层进行并行处理。
流水线设计技术,设计思想:将算法流程划分成p个前后衔接的任务片断,每个任务片断的输出作为下一个任务片断的输入,所有任务片断按同样的速率产生出结果。
1.2.3 并行算法的一般设计过程pcam(partitioningcommunicationagglomerationmapping)设计方法学,它代表了并行算法设计的四个阶段:(1)划分就是通过编译技术通过计算将计算机的任务进行分解,以便达到最佳的计算和数据分布形式,其目的是尽可能地合理分配给各处理器进行开拓和执行任务的机会。
划分方法分为两个步骤,第一是对数据进行分解,也称域分解,通过对计算机的数据分解之后开始对计算机的功能进行分解。
将数据集和计算集分离。
(2)通信。
通过对数据的划分,确认任务执行的数据交换以及协调执行任务,通过进一步的检测来进一步检测划分的合理性。
通讯也是pcam设计过程中的最重要的环节之一,他能够促进划分环节中的任务之间的数据交流,解决划分环节不能完全独立执行的问题,并通过交流限制功能划分的数据并发执行。
(3)组合是提高性能和减少通信开销的重要方法之一,也是对于前两个阶段的性能要求和代价的实现结果进行的重要考察,以便确认是否将任务组合成更大的任务量。
组合是对任务量的优化,也是一个从抽象到具体的过程,通过在并行机上的有效执行,合并较小的任务量,以便达到减少任务数的目的。
通过一系列组合,达到增加任务的粒度和重复计算,可以减少通讯成本。
(4)映射。
通过执行、通信和组合,计算机的并行计算的任务数已经达到了一种相对合理的程度,这时将计算机的任务合理地分配给相应的处理器,缩短执行时间,提高相应处理器的执行效率和利用效率,从而达到进一步节约通讯成本的目的。
其具体方法是将每一个经过优化的任务映射到相对应的具体的处理器。
通过对相应处理器的定位和运行,进行计算和处理。
如果其任务数大于处理器的数目时,则需要对处理器的负载和任务调度进行平衡和调整。
映射实际是一种权衡,属于np完全问题。
2 总结随着计算机软、硬件性能的不断提高,并行算法也得到不断的改进和创新,学者们正在以各种不同的方式提高算法的性能。
同时,随着时代的进步,并行算法的研究方向也在进行的不断的调整。
目前并行算法研究的新走向是:并行算法研究内容不断拓宽,并行计算被纳入研究范畴;与广大用户领域结合,注重应用,强调走到用户中去,为用户解决问题;重视新的、非常规计算模式,如神经计算、量子计算等,这些模式能够解决某类特定问题,有其自身的优越性。
参考文献:[1]陈国良.并行计算[m].北京:高等教育出版社,2003,8.[2]hajimetakashima,soyamada,shigeruobara,kunihirokitamura,shinjiroinabata,nobuakimiyakawa,kazutoshitanabe,umpeinagashima.anovelparallelalgorithmforlarge-scalefockm atrixconstructionwithsmalllocallydistributedmemoryarchite ctures:rtparallelalgorithm.journalofcomputationalchemistry,2002,11.[3]vijayanandkorthikanti,gulagha.energy-performancetrade-offanalysisofparallelalgorithmsforsharedmemoryarchitectures.sustainablecomputing:informaticsandsystems,2011,11.[4]elenan.akimova,dmitryv.belousov.parallelalgorithmsforsolvinglinearsystem swithblock-tridiagonalmatricesonmulti-corecpuwithgpu.jour nalofcomputationalscience,2012,11.[5]zhouqihai,liyan.isomorphicnewparalleldivisionmethodsandparallelalgo rithmsforgiantmatrixtranspose,2010.[6]qingkuichen,haifengwang,songlinzhuang,bochengliu.parallelalgorithmofidctwithgpusandcudaforlarge -scalevideoqualityof3g,2012.7.[7]陈文浩.并行计算前景展望[j].高性能计算发展与应用,2010,1.[8]陈国良.并行算法研究进展[j].中国计算机学会通讯.[9]于二丽.图像匹配的算法研究[j].计算进应用技术,2011,3.[10]龚春叶.面向异构体系结构的粒子输运并行算法研究[j].计算机科学与技术,2011,12.[11]冯小丹.基于mpi的海量数据拟合并行算法研究[j].中国软件与理论,2008,5.[12]白洪涛.基于gpu的高性能并行算法研究[j].计算机软件与理论,2010,6.[13]于延.遥感数字影像中提取植被指数并行算法的研究与实现[j].科技通报,2013,2.[14]何兴无.fermi架构下超声成像组织运动可视化并行算法[j].计算机系统应用,2013,4.[15]刘军志.分布式水文模型的并行计算研究进展[j].2013,4.[16]王石成.声纳图像对比度增强的并行算法研究[j].微型机与应用,2013,4.[17]吴洋.一类大规模稀疏矩阵特征问题求解的并行算法[j].2013,6.[18]殷海涛.分布动载荷识别的并行算法研究[j].国外电子测量技术,2012.8.[19]雷英杰,霍红卫.典型并行算法的实现性能分析[j].空军工程大学学报,2003,10.[20]蔡启先.计算机系统结构[m].北京:电子工业出版社.作者单位:百色职业学院,广西百色 533000;广西英华国际职业学院,广西百色 535000。