




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
并行算法讲稿第一页,共五十三页,编辑于2023年,星期六把有唯一输入向量和唯一输出向量的一个程序段在某一环境下的一次执行称为一个进程。设有一组程序段A1…An,若{Ai}在n个处理机上同时执行的结果等同于{Ai}以任意顺序执行的结果,则称{Ai}为可并行执行的。设两个程序段A、B,且A先于B,若A与B数据相关或控制相关,则称A是B的父进程。第二页,共五十三页,编辑于2023年,星期六A1:x=1A2:y=2A3:s=2*x+yA4:t=x*x*yA5:u=3*s-tA6:v=cos(t)A7:z=u*v+1如下例所示:u,vzA7tvA6s,tuA5x,ytA4x,ysA3yA2xA1输入输出进程输入输出表如下:BeginA1A2A3A4A5A6A7End进程流程图如下:第三页,共五十三页,编辑于2023年,星期六下面简单例子让我们能更深刻理解并行算法:倍增法求和倍增法是并行分治的一种简化形式。其基本思想是将原问题反复分解为等规模的两个子问题,在逐步分解的过程中,子问题个数成倍增加。将各个子问题恰当地映射到各台处理机上,即可实现计算过程的并行化。例如:倍增法求和计算序列L[0..n-1]的和,记为S(0,n-1)。intBSum(intL,ints,intt){if(s==t)returnL[s];intk=(s+t)/2;returnBSum(L,s,k)+BSum(L,k+1,t);}并行求和第四页,共五十三页,编辑于2023年,星期六从以上一个简单的例子我们可以看到并行算法的真谛!所以这么说基于普通的算法大家开始加,串行从1到100加很累,而这个高斯思想的并行处理结果又快又准确!体现出了这个思想,由此引申到计算机并行处理可以看出它潜力巨大,对解决现实问题有很大的指导作用,希望大家认真听讲。那么什么叫并行算法?
科学家已经定义为:利用并行计算机系统进行数据与信息的并行处理称为并行计算。第五页,共五十三页,编辑于2023年,星期六并行计算研究的内容包括并行计算方法、并行计算模型、并行算法、并行程序设计、并行测试程序设计、测试结果分析等。由于各种并行计算机的系统结构不同,系统内各处理器和各功能部件之间在体现算法时的相互作用不同,使得并行算法不能通用。因此,当前并行处理的研究重点,除了并行计算机体系结构之外,就是研究基于各种并行与分布式计算机系统上的并行算法或分布式算法。
第六页,共五十三页,编辑于2023年,星期六并行计算方法的研究,不仅对提高并行计算机的使用效率是必需的,而且往往能找到改进现有串行算法的新途径。并行计算方法的研究是研制高效并行数值计算软件的基础。并行计算中可供选择的技术路线有两条:一条是在现有的串行算法基础上作并行化;另一条是直接从数学物理问题出发,面向并行系统研制高效率的计算方法和设计算法。在并行算法设计中广泛采用的是“DivideandConquer”(分而治之)和重新排序两种基本方法。从以上基本方法引申具体以下几种算法:
第七页,共五十三页,编辑于2023年,星期六三、并行编程的基本方法这里主要介绍网络并行编程的基本模式和负载平衡的基本方法。(1)网络并行编程的基本模式
应用标准化环境进行网络并行编程与MPP并行机(如IBMSPZ,IntelParagon等)在算法设计和编程逻辑的基本方法上是相同的,它们存在的不同点是:
★任务管理方式不同,网络并行标准化环境编程要涉及到进程的动态创建与命名。
★标准环境不同,网络并行编程要求在正式计算前完成语句的初始化。
★粒度选取不同,分布式网络并行计算的并行粒度较大。
★计算环境不同,分布式网络并行计算要考虑到异构环境。
从不同计算任务组织的角度看,分布式编程主要有星形计算模式和树形计算模式两种:
第八页,共五十三页,编辑于2023年,星期六三、并行编程的基本方法
▲星形计算模式。由一组相互紧密关联的进程组成,它们可以是执行相同的程序,只是数据不同,共同执行同一计算问题的不同部位。这种计算模式又可以分为两类:一种是主从式(masterslave),这种计算模式有一个控制程序作为主进程,负责进程的生成、初始化、收集并显示结果,其余的进程(slave)执行实际计算,从进程的负载或由主进程分配,或由自身分配;另外一种是纯结点模式,这时所有进程都在执行单个程序,只是少数进程(初始时由人工指定)同时负责非计算的功能(如I/O等)。
第九页,共五十三页,编辑于2023年,星期六三、并行编程的基本方法
▲树形(tree)计算模式。在这种计算模式中,进程通常是在计算过程中以树形方式动态生成。在求解组合优化问题时常用的一种算法是构造性的探索算法,主要思想是对解集合反复进行分支,对每个分支计算最优解的界。如果该解符合要求,则继续分支以探索更好的解,直到所有的子集合中仅有一个最优的解为止。这种方法在人工智能的搜索策略中以及递归的“分而治之”算法中也常使用。第十页,共五十三页,编辑于2023年,星期六三、并行编程的基本方法(2)负载平衡的基本方法
各处理器之间的负载是否能做到基本平衡,是并行计算效率能否提高的一个关键。对于网络分布式并行计算而言,负载平衡的基本方法有两个:数据分解与功能分解。
数据分解方法,有时也称数据分割法,这种方法适应于各处理器执行相同的任务、只是数据不同的情况。数据的分解有静态方式和动态方式的区别。静态方式中每个进程的负载是固定的,而在动态方式中各进程的负载分配是随计算过程而改变的。第十一页,共五十三页,编辑于2023年,星期六三、并行编程的基本方法功能分解方法。网络计算的并行化也可通过把总负载按功能进行分解,分配给各个处理器承担。最简单的是把整个计算过程分为输入数据、计算进程和输出结果三个部分。当然根据实际情况这三个部分又可以再进行细分。第十二页,共五十三页,编辑于2023年,星期六三.并行计算基本概念
(1)并行算法的目标
并行算法的目标就是以增加空间的复杂性来减少时间的复杂性,即增加空间的维数,增加处理器的台数,来减少算法实现所需的时间。从算法的结构观察,通常的串行算法树“深而窄”,而并行算法树结构截然不同。为达到把时间的复杂性转化为空间复杂性的目的,并行算法树采用了“浅而宽”的结构。(2)并行加速比
并行加速比表示采用多个处理器计算速度所能达到的加速的倍数。(3)粒度(granularity)
第十三页,共五十三页,编辑于2023年,星期六三.并行计算基本概念粒度是各个多处理机可独立并行执行的任务大小的度量。大粒度反映可并行执行的运算量与程序量大,有时称粗粒度。任务级并行的粒度大于语句级的并行。向量机主要是对内层Do循环语句作向量化,所以向量化是一种小粒度(细粒度)并行;在网络并行计算中,由于通信开销比较大,应尽量采用粗粒度方式。(4)可扩展性(Scalability)可扩展性是指并行机和并行算法有效利用多处理机台数增加的能力的一个度量。随着处理机的增加,如果效率曲线基本保持不变,或略有下降,则认为该算法在所用的并行机上扩展性好;否则,其可扩展性差。影响一个并行算法的扩展性因素较多,评判的准则也不尽相同。第十四页,共五十三页,编辑于2023年,星期六四.并行算法分类依据处理对象划分,并行算法可分为两类:
●数值并行算法主要为数值计算而设计的并行算法;●非数值并行算法如神经网络算法、演化算法、遗传算法、格子气算法、格子依据算法中进程的控制方式划分,可分为以下两种:ltzmann算法以及为符号计算而设计的并行算法。
●同步并行算法(synchronizedalgorithm)。是指某些进程必须等待其他进程的一种并行算法,要求所有进程必须在一个给定时刻同步。SIMD以及共享存储型MIMD并行机上通常运行同步并行算法。
第十五页,共五十三页,编辑于2023年,星期六四.并行算法分类异步并行算法(asynchronizedalgorithm),是指诸进程执行相对独立、不要互相等待的一类算法。其主要特征是在计算的整个过程中都不需要等待,而是根据当前的最新信息决定进程的继续或终止。这种算法通常是针对分布式存储的MIMD并行机设计的。另外,还有分布式算法(distributedalgorithm),是指由包括网络在内的通信链路连接的多结点机或计算机群协同完成某个计算任务的算法。第十六页,共五十三页,编辑于2023年,星期六五.并行计算模型所谓计算模型,是算法设计者进行理论分析时所依据的计算机模型。冯·诺依曼机是理想的串行计算模型。由于并行机在飞速发展之中,尚未定型,故目前尚没有所谓的通用并行计算模型。当前,人们将并行计算机的某一些特征抽象出来,形成了各种特定的并行计算理论模型,以便于并行算法的设计与理论分析。并行机的特征有:消息包的长度或延迟时间、消息包传递的开销、处理器连续传递消息的最小间隔(或通信的带宽)、处理器个数等。由诸如此类的参数构成各种特定的并行计算模型。常用的并行计算模型有PRAM、VLSI、BSP、LogP和C3模型。下面我讲述几点经典算法。第十七页,共五十三页,编辑于2023年,星期六5.1平衡树法
平衡树法的评估:以平衡树法求解最大值是一个EREW算法,计算时间tp(n)=O(logn),运用处理器最多为p(n)=n/2,工作量为O(nlogn),不是工作量有效的算法。平衡树方法的优点是在树中能快速存取信息,对数据的传递、压缩、抽取和前缀计算均十分有用。第十八页,共五十三页,编辑于2023年,星期六5.2向量法向量法的基本思想★以向量方式描述计算过程;★以并行方式执行向量计算。以矩阵计算为例
对n阶矩阵,串行加法的计算量为n2,若动用n个(或n2个)处理器,分别处理每行(或列)的相加运算,则可以得到计算量亦为n2,工作量有效。第十九页,共五十三页,编辑于2023年,星期六5.2
向量法以矩阵计算为例矩阵相乘:C=A*B第二十页,共五十三页,编辑于2023年,星期六5.2向量法串行算法:{fori=1tondo forj=1tondo ci,j=0 fork=1tondo ci,j+=ai,k*bj,k
}并行算法:fori=1tondo forallPjj=1tondo ci,j=0 //Ci.=0 fork=1tond //Ci.=∑ai,k*Bk. forallPjj=1tondo ci,j+=ai,k*bk,j第二十一页,共五十三页,编辑于2023年,星期六5.3线性代数方程组法高斯消去法
第二十二页,共五十三页,编辑于2023年,星期六串行求解算法:for(k=1;i<N;i++){forallPjj=k…NdoA[k][j+1]=A[k][k]; for(i=1;i<=N;i++) if(i!=k) forallPjj=k…Ndo A[i][j+1]=A[i][k]*A[k][j+1];}第二十三页,共五十三页,编辑于2023年,星期六并行求解算法:for(k=1;i<N;i++){ forallPjj=k…NdoA[k][j+1]=A[k][k]; for(i=1;i<=N;i++) if(i!=k) forallPjj=k…Ndo A[i][j+1]=A[i][k]*A[k][j+1];}第二十四页,共五十三页,编辑于2023年,星期六5.4
MIMD算法算术表达式的同步MIMD算法例:(A+B(C+D*E*F))+G变形为:A+G+B*C+B*D*E*F第二十五页,共五十三页,编辑于2023年,星期六P1P2P3P4a1=A+GP(r1)a1+=a2P(v3)a1+=a3a2=B*CV(r1)a3=B*DP(r2)a3*=a4V(r3)a4=E*FV(r2)第二十六页,共五十三页,编辑于2023年,星期六5.5
MIMD算法区间分割法解代数方程的根求单调连续函数f(x)=0的根。设已知两端l~u,对区间进行n+1等分,令y[0]=f(l),y[n+1]=f(u)。第二十七页,共五十三页,编辑于2023年,星期六5.5
MIMD算法同步牛顿迭代法解代数方程的根迭代公式:第二十八页,共五十三页,编辑于2023年,星期六P0P1while未达到精度{ y=f(x); wait(y’) x=x–y/y’;}while未达到精度{ wait(x) y’=f’(x);}并行进程如下:P0P1y0=f(x0)y0’=f’(x0)x1=x0–y0/y0’y1=f(x1)y1’=f’(x1)x2=x1-y1/y1’…………并行计算过程如下:第二十九页,共五十三页,编辑于2023年,星期六5.5
MIMD算法异步牛顿迭代法解代数方程的根P1P2While未达到精度{ y=f(x); x=x–y/y’;}While未达到精度{ y’=f’(x);}第三十页,共五十三页,编辑于2023年,星期六5.6
流水线技术
归并排序:设输入长度为n=2r,用p(n)=r+1个处理器并行完全合并排序的任务。设处理器编号从1到r+1,其中首处理器有一个输入,尾处理器有一个输出,其他处理器各有两个输入和两个输出。各处理器同步运行,在一个时间步内,P1从原始输入序列中读取一个数并将其作为结果输出,Pi(i=2…r+1)接收从Pi-1输出的两个长度为2i-2的子序列,并将其合并为一个长度为2i-1的子序列。从P1到Pr,每一个处理器交替地在上面和下面两条输出线上产生合并子序列。除P1外,每个处理器Pi当其前一个处理器的一条输出线上已经产生了长为2i-2的子序列,另一条输出线上出现了第一个元素时,就可以开始归并了。第三十一页,共五十三页,编辑于2023年,星期六设Pi和Pi+1之间通过的队列为q2i和q2i+1,即q2i和q2i+1是Pi的输出序列,Pi+1的输入序列。如下图所示:第三十二页,共五十三页,编辑于2023年,星期六设n=2r,p(n)=r+1,算法描述如下:P1:j2;fork=1tondo{ xkq1; qjxk; j=5-j;}Pi:i=2…rj0;k1;whilek<=ndo{ ifq2(i-1)+j已装满2i-2个元素and q2(i-1)+(1-j)已出现1个元素then { form=1to2i-1do q2i+jmin(q2(i-1)+j,q2(i-1)+(1-j)); j1-j; kk+2i-1; }}Pr+1:ifq2r已装满2r-1个元素,且q2r+1已出现1个元素then{ form=1to2rdo q2(r+1)min(q2r,q2r+1);}第三十三页,共五十三页,编辑于2023年,星期六十五、接力技术基本思想F:让两种算法接力,产生一个求解该问题的新算法,使得既有耗时少的特性又有工作量有效性较高的特性。S:先用需要较少时间(速度较快)的算法求解给定的问题,直到问题的规模减到某一个阈值为止;L:再用工作量有效性较高的算法,继续求解,直到获得最终的解答。第三十四页,共五十三页,编辑于2023年,星期六5.8接力技术求解最大值的常数时间算法对n个元素的数组,可以动用n2个处理器,在O(1)的时间内求解出最大值。A1A2A3mA1?F?FA2TTTTA3?F?FforallPii=1…ndo m[i]true;forallPi,ji=1…n,j=1…ndo if(A[i]<A[j])m[i]false;forallPii=1…ndo if(m[i]==true)maxA[i];第三十五页,共五十三页,编辑于2023年,星期六216个叶子根28个结点,每个分28个叶结点28*24个结点,每个分24个叶结点28*24*22个结点,每个分22个叶结点28*24*22*2个结点,每个分2个叶结点第三十六页,共五十三页,编辑于2023年,星期六十五、接力技术求解最大值的重对数时间算法设n个元素的序列,定义一棵以n个元素为叶结点的重对数深度平衡树如下:
树中每一个非叶子结点u的子结点的个数为以u为根的子树上的叶结点的个数的平方根。则第0层为树根,有一个结点,第1层为n1/2个结点,每个结点为根的子树上有n/n1/2=n1/2个叶子,所以每个结点有n1/4个子结点,可以证明,以第i层上每一个结点为根的子树上有个叶子结点,第i层上共有个结点,可知这样一棵树的高度为loglogn+1,因此称为重对数深度平衡树。在重对数深度平衡树上,除第0层外,对每一层按父结点分组,对每一组用常数时间算法求解最大值,结果放在其父结点中。可证明,共须n个处理器,经过loglogn+1个并行步完成计算,时间复杂度为O(loglogn)。第三十七页,共五十三页,编辑于2023年,星期六5.5、流水线技术排序问题每个进程一次从前一个进程接收待排序序列中的一个数,保存当前接受到的最大的数字,把比这个数小的其他数传给下一个进程。第一个进程P0直接从待排序序列接收数据。P0P1P2P3P44|3|1|2|512345第三十八页,共五十三页,编辑于2023年,星期六P0P1P2P3P4-----4|3|1|2|55----4|3|1|25----4|3|1252---4|3152---431531--42542--315431-254321第三十九页,共五十三页,编辑于2023年,星期六十四、流水线技术质数生成问题顺序解法for(i=2;i<=n;i++) prime[i]=1;for(i=0;i<=sqrt_n;i++) if(prime[i]==1) for(j=i*i;j<=n;j+=i) prime[j]=0;第四十页,共五十三页,编辑于2023年,星期六质数生成问题流水线解法:第一个流水线级输入一系列连续的数,然后剔出所有2的倍数,并把余下的数传递给第二级流水线;第二级剔出所有3的倍数并把余下的数传递给第三级流水线;以此类推;流水线的个数与质数的个数的方根相同;十四、流水线技术第四十一页,共五十三页,编辑于2023年,星期六十五、接力技术对数深度树和重对数深度树算法接力第一步,利用对数深度平衡树方法向上逐层进行计算,经过logloglogn层的选拔后停下来。第二步,以第一步选拔出的最大值候选结点为叶结点,按重对数时间算法进行继续计算,直到所求的解。第一步所需时间为O(logloglogn),工作量为O(nlogloglogn),在第一步结束时,剩下的结点数为:n’=n/2logloglogn=n/loglogn。则第二步需要的时间为O(loglogn’)=O(loglogn),工作量为O(n’loglogn)=O(n)。从而进一步提高了工作量的有效性。第四十二页,共五十三页,编辑于2023年,星期六十二、并行分治分治通过将一个问题分解成若干个性质相同的子问题,并递归地对子问题进行求解,然后将各子问题的解加以合并构造出原问题的解。分治步骤将问题的输入进行均匀划分,构成规模大致相等的若干个同类的子问题;递归求解各子问题;将各子问题的解归并成为原问题的解;第四十三页,共五十三页,编辑于2023年,星期六十二、并行分治并行分治:F(I){ if输入足够小then OAnswer(I); else {
分解输入:I1,…Ik;
forallPii=1…kdo Oi
F(Ii,Oi); OCombine(O1,…Ok); }}第四十四页,共五十三页,编辑于2023年,星期六十二、并行分治最近点对问题d1d2d2d第四十五页,共五十三页,编辑于2023年,星期六十三、划分法划分法与分治法相似,划分原理也是将原问题进行分解,分别求解,再归并子问题的解。所不同的是,分治法采用简单的分解方法,因此设计的难点在于如何归并子问题的解,而划分方法则讲究分解的方法,以获得简单的归并策略。有序序列归并:设A=(a1,a2,…,an),
B=(b1,b2,…,bm),
是U上的单调增序列,且A∩B=Ф。
将A和B归并到:
C=(c1,c2,…,cm+n)。第四十六页,共五十三页,编辑于2023年,星期六十三、划分法有序序列归并定义:对U上的有序序列列X=(x1,x2,…,xt),x∈U,x在X上的位序rank(x:X)为X中小于等于x的元素个数。归并问题即求rank(x:A∪B),x∈A∪B。分别求出rank(ai:B)和rank(bj:A),即可得到rank(x:A∪B)=rank(x:A)+rank(x:B)。这样就可以在O(logn)时间内用O(nlogn)工作量完成合并的任务。但这样的解法不是一个工作量有效的算法。通过进一步划分,可以得到工作量有效的解法。第四十七页,共五十三页,编辑于2023年,星期六十三、划分法有序序列归并定义:对U上的有序序列列X=(x1,x2,…,xt),x∈U,x在X上的位序rank(x:X)为X中小于等于x的元素个数。归并问题即求rank(x:A∪B),x∈A∪B。分别求出rank(ai:B)和rank(bj:A),即可得到rank(x:A∪B)=rank(x:A)+rank(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025钢筋买卖合同范本钢筋买卖合同格式
- 2025年度利润目标承包合同书
- 2025私人借款协议个人借款合同范本
- 2025店面租赁合同样本下载
- 2025采购租赁合同签订注意事项
- 2025混凝土采购合同
- 服装材料考试题及答案
- 深入理解纺织品质检流程的细节试题及答案
- 2024年纺织品科技应用的前景试题及答案
- 2024年纺织品设计师证书考试概念解析试题及答案
- 铸就数字坚盾网络安全技术知到课后答案智慧树章节测试答案2025年春青岛工学院
- (高清版)JTGT 3650-01-2022 公路桥梁施工监控技术规程
- 中国历史地理智慧树知到期末考试答案章节答案2024年北京大学
- MOOC 跨文化交际通识通论-扬州大学 中国大学慕课答案
- API520-安全阀计算PART1(中文版)
- 超声引导下针刀精准治疗膝骨关节炎课件
- 国内旅客临时住宿登记表格式
- 八年级期末质量分析-课件
- 10000中国普通人名大全
- 费森4008s常见故障排除
- 积极心态与消极心态
评论
0/150
提交评论