并行算法的设计基础课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《并行算法的设计基础课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 并行 算法 设计 基础 课件
- 资源描述:
-
1、2022-12-211第四章第四章 并行算法的设计基础并行算法的设计基础 并行计算相关的研究分支并行计算相关的研究分支1.1.并行计算机体系结构并行计算机体系结构2.2.并行计算的性能评价并行计算的性能评价3.3.并行算法并行算法4.4.并行程序设计并行程序设计一、并行算法相关的基本概念及表示一、并行算法相关的基本概念及表示二、介绍几种并行计算模型二、介绍几种并行计算模型3.并行算法并行算法1.并行计算机体系结构并行计算机体系结构2.并行计算的性能评价并行计算的性能评价2022-12-212一、并行算法相关的基本概念及表示一、并行算法相关的基本概念及表示1.基本概念基本概念2.并行算法的表示并
2、行算法的表示3.并行算法的复杂性度量并行算法的复杂性度量4.并行算法的同步与通信并行算法的同步与通信2022-12-2131.1.基本概念基本概念定义定义1 1:算法算法:在有限步骤内求解某一特定问题的:在有限步骤内求解某一特定问题的一组无二义性的规则。一组无二义性的规则。定义定义2 2:并行算法并行算法是由一些独立的、可以并行运行是由一些独立的、可以并行运行的计算模块(进程)构成,模块(进程)之间的计算模块(进程)构成,模块(进程)之间能相互作用和协调,以完成对一个给定问题的能相互作用和协调,以完成对一个给定问题的求解。求解。2022-12-214根据算法的不同特征,可以对并行算法进根据算法
3、的不同特征,可以对并行算法进行不同的分类:行不同的分类:SIMDSIMD算法和算法和MIMDMIMD算法算法同步算法和异步算法同步算法和异步算法数值计算算法和非数值计算算法数值计算算法和非数值计算算法共享存储算法和分布存储算法共享存储算法和分布存储算法2022-12-215定义定义3 3:同步算法同步算法(synchronized algorithm):是指算是指算法的诸进程的执行必须相互等待的一类并行算法。法的诸进程的执行必须相互等待的一类并行算法。SIMDSIMD算法是同步算法中的一种特例。算法是同步算法中的一种特例。定义定义4 4:异步算法异步算法(asynchronous algori
4、thm):是指算是指算法的诸进程的执行不必相互等待的一类并行算法。法的诸进程的执行不必相互等待的一类并行算法。定义定义5 5:分布并行算法分布并行算法(distributed algorithm):将:将同一任务分解为若干个子任务,使之分布在由通信同一任务分解为若干个子任务,使之分布在由通信链路连接的多个节点上协同完成运算的算法。链路连接的多个节点上协同完成运算的算法。分布式算法的执行时间,在很大程度上受通信开分布式算法的执行时间,在很大程度上受通信开销的影响。销的影响。2022-12-216定义定义6 6:确定算法确定算法 (deterministic algorithm)(determin
5、istic algorithm):每:每个运算步骤上均确定唯一操作的算法。如线性方个运算步骤上均确定唯一操作的算法。如线性方程组求解的算法。程组求解的算法。不确定算法不确定算法 (non-deterministic algorithm)(non-deterministic algorithm):在问题求解的搜索过程中,提出多种可供选择的在问题求解的搜索过程中,提出多种可供选择的操作,它们中的任一种都有希望获得问题的解答,操作,它们中的任一种都有希望获得问题的解答,但都不能肯定解出,有时甚至不能确定这些操作但都不能肯定解出,有时甚至不能确定这些操作中哪一种求解的可能性更大些。对此,只能选择中哪一
6、种求解的可能性更大些。对此,只能选择其中任意一种搜索下去。这种搜索方法称为不确其中任意一种搜索下去。这种搜索方法称为不确定算法。定算法。2022-12-217定义定义7 7:随机算法随机算法(randomized algorithm,(randomized algorithm,probabilistic algorithm)probabilistic algorithm)计算步骤具有随机计算步骤具有随机性的算法。在算法的某一步或某些步上,可以在性的算法。在算法的某一步或某些步上,可以在指定范围内随机地选择下一个演算步的走向。指定范围内随机地选择下一个演算步的走向。如果方法得当,可比一般算法更快
7、地得出结果,如果方法得当,可比一般算法更快地得出结果,并且能以较高的概率提供正确的结果。并且能以较高的概率提供正确的结果。2022-12-218表示算法的要求表示算法的要求 无二义性无二义性 力图直观、易懂力图直观、易懂 不苛求严格的语法格式不苛求严格的语法格式一般的串行算法常用类一般的串行算法常用类PascalPascal、类、类AlgolAlgol表示表示2.2.并行算法的表示并行算法的表示2022-12-2191.par-do语句语句 for i=1 to n par-do :end for 表示其间的表示其间的 n(i=1 to n(i=1 to n)n)次语句序列的执行次语句序列的执
8、行可以并行完成可以并行完成表示表示 k k 个个处理器同时处理器同时执行其间的执行其间的语句序列语句序列2.for all 语句语句 for all Pi where 0 i k-1 do :end for并行算法常引入以下两条并行语句:并行算法常引入以下两条并行语句:2022-12-21103.3.并行算法的复杂性度量并行算法的复杂性度量令令 f(n)f(n)和和 g(n)g(n)是定义在自然数集合是定义在自然数集合N N 上的两个函数,上的两个函数,定义定义8 8:如果存在两个正数如果存在两个正数 c c 和和 n n0 0,使得对于所有,使得对于所有的的 n n n n0 0 均有均有f
9、(n)f(n)c c g(n)g(n),则标记为:,则标记为:f(n)=f(n)=(g(n)(g(n)我们称我们称 g(n)g(n)为为 f(n)f(n)的的上界上界。定义定义9 9:如果存在两个正数如果存在两个正数 c c 和和 n n0 0,使得对于所有,使得对于所有的的 n n n n0 0 均有均有f(n)f(n)c c g(n)g(n),则标记为:,则标记为:f(n)=f(n)=(g(n)(g(n)我们称我们称 g(n)g(n)为为 f(n)f(n)的的下界下界。2022-12-2111定义定义1010:如果存在正数:如果存在正数 c c1 1、c c2 2 和和 n n0 0,使得
10、对于,使得对于所有的所有的 n n n n0 0 均有均有c c1 1 g(n)g(n)f(n)f(n)c c2 2 g(n)g(n),则标记为则标记为 f(n)=f(n)=(g(n)(g(n)我们称我们称 g(n)g(n)为为 f(n)f(n)的的紧致界紧致界。即:如果即:如果 f(n)=f(n)=(g(n)(g(n)且且 f(n)=f(n)=(g(n)(g(n)则则 f(n)=f(n)=(g(n)(g(n)2022-12-2112 比较两个算法的时间复杂性函数比较两个算法的时间复杂性函数g g(n n)和和f f(n n)的阶的的阶的方法:方法:n 用用定义定义判断判断n 用用求极限的方法
11、求极限的方法来加以判断。来加以判断。若若 则则(1 1)当)当c c00时,说明时,说明f f(n n)和和g g(n n)同阶,记为同阶,记为f f(n n)=)=(g g(n n)(2 2)当)当c c=0=0时,说明时,说明f f(n)(n)比比g g(n n)低阶,记为低阶,记为f f(n n)=)=O O(g g(n n)(3 3)当)当c c=时,说明时,说明f f(n)(n)比比g g(n n)高阶,记为高阶,记为f f(n n)=)=(g g(n n)cngnfn)()(lim2022-12-2113 并行算法的并行算法的运行时间运行时间 t(n)t(n):对于输入规模为:对于
12、输入规模为 n n 的问题,在给定的并行计算模型之下求解问题所的问题,在给定的并行计算模型之下求解问题所需的时间,也称为需的时间,也称为时间复杂性时间复杂性 (time(time complexity)complexity)。运行时间运行时间 =计算时间计算时间 +通信时间通信时间 处理器数处理器数p(n)p(n):表示对给定的问题规模:表示对给定的问题规模 n n,并行,并行算法所用的处理器的个数。算法所用的处理器的个数。并行算法的并行算法的成本成本c(n)c(n):并行算法的运行时间:并行算法的运行时间 t(n)t(n)与所需的处理器数与所需的处理器数 p(n)p(n)之积,即之积,即c(
13、n)=t(n)c(n)=t(n)*p(n)p(n)2022-12-2114例例:(1)设设f(n)=n2/2,g(n)=307n2,则,则因此,因此,f(n)=n2/2与与g(n)=307n2是同阶的。是同阶的。(2)设设f(n)=lg n,g(n)=n,则,则所以,所以,f(n)=lg n比比g(n)=n低阶。低阶。0)/(lnlim)2ln/1()2ln/(lnlim)/(loglimnnnnnnnnn614/1)307/()2/(lim22nnn2022-12-2115定义定义1111:一个并行算法:一个并行算法最坏情况下的时间复杂性最坏情况下的时间复杂性(worst-case time
14、-complexity)(worst-case time-complexity):对于所有输:对于所有输入规模为入规模为 n n 的问题,在给定的并行计算模型之下的问题,在给定的并行计算模型之下求解问题所需的时间的最大值。求解问题所需的时间的最大值。定义定义1212:一个并行算法的:一个并行算法的期望时间复杂性期望时间复杂性(expected time-complexity)(expected time-complexity):对于所有输入:对于所有输入规模为规模为 n n 的问题,在给定的计算模型之下求解问的问题,在给定的计算模型之下求解问题所需的时间的平均值。题所需的时间的平均值。2022
15、-12-2116定义定义1313:一个并行算法:一个并行算法最坏情况下的空间复杂性最坏情况下的空间复杂性(worst-case space-complexity)(worst-case space-complexity):对于所有输:对于所有输入规模为入规模为 n n 的问题,在给定的并行计算模型之下的问题,在给定的并行计算模型之下求解问题所需的内存空间的最大值。求解问题所需的内存空间的最大值。定义定义1414:一个并行算法的:一个并行算法的期望空间复杂性期望空间复杂性(expected(expected space-complexity)space-complexity):对于所有输入规模为
16、:对于所有输入规模为 n n 的的问题,在给定的计算模型之下求解问题所需的内问题,在给定的计算模型之下求解问题所需的内存空间的平均值。存空间的平均值。2022-12-2117定义定义1515:如果一个并行算法的成本与其对应的最佳:如果一个并行算法的成本与其对应的最佳串行算法的最坏情况下时间复杂性在同一个数量串行算法的最坏情况下时间复杂性在同一个数量级上,则称该并行算法为级上,则称该并行算法为成本最佳的成本最佳的(cost-(cost-optimal)optimal)或最佳并行算法或最佳并行算法 (optimal parallel(optimal parallel algorithm)algor
17、ithm)。总运算总运算量量W(n):(W(n):(并行并行)算法中所要完成的总的操算法中所要完成的总的操作数量作数量(the number of computational(the number of computational operations)operations)2022-12-21184.4.并行算法中的同步与通信并行算法中的同步与通信同步同步(synchronization)(synchronization):使多个相关事件的发:使多个相关事件的发生保持相同的节奏,彼此之间能良好地配合。生保持相同的节奏,彼此之间能良好地配合。在并行算法的各进程异步执行过程中,为了确保在并行算法
18、的各进程异步执行过程中,为了确保各处理器的正确工作顺序和对共享存储器的访问,各处理器的正确工作顺序和对共享存储器的访问,程序员需要在算法的适当位置设置同步点。程序员需要在算法的适当位置设置同步点。下面给出一个利用下面给出一个利用 lock lock 和和 unlock unlock 构造的临界构造的临界区完成数组求和的算法区完成数组求和的算法2022-12-2119begin S=0 for all Pi where 0 i p-1 do L=0 for j=i to n-1 step p do L=L+aj end for lock(u)S=S+L unlock(u)end forend算法
19、算法4.1.3 共享存储多处理机上求和算法共享存储多处理机上求和算法输入:输入:A=(a0,a1,an-1),处理器数处理器数 p;输出:输出:a 0+a 1+a n-1 存放在全局变量存放在全局变量S 中。中。2022-12-2120通信通信(communication)(communication):把信息用一定手段通过:把信息用一定手段通过某种介质或传输线路从一个点传送至另一点的过某种介质或传输线路从一个点传送至另一点的过程。程。通信是在空间上对并发执行的进程实现数据交换。通信是在空间上对并发执行的进程实现数据交换。原语原语 (primitive)(primitive):它由若干条机器指
20、令构成的,:它由若干条机器指令构成的,用来完成特定功能的一段程序。原语有以下特点:用来完成特定功能的一段程序。原语有以下特点:不可中断性不可中断性:一旦原语被开始执行,就应不间:一旦原语被开始执行,就应不间断地执行到结束;断地执行到结束;不可侵犯性不可侵犯性:原语一旦被执行,中间不许插入:原语一旦被执行,中间不许插入任何其他操作。任何其他操作。2022-12-2121通信可使用通信原语来表示:通信可使用通信原语来表示:1.1.在共享存储的多处理机中,可使用在共享存储的多处理机中,可使用1)global read(1)global read(X X,Y),Y)将全局存储器中数据将全局存储器中数据
21、 X X 读入局部变量读入局部变量 Y Y;2)global write(U,2)global write(U,V V)将局部数据将局部数据 U U 写入共享存储变量写入共享存储变量 V V 中。中。2.2.在分布存储的多计算机中,可使用在分布存储的多计算机中,可使用1)send(X,i)1)send(X,i)或或 send(X,Psend(X,Pi i)当前处理器发送数据当前处理器发送数据 X X 到到 P Pi i ;2)receive(Y,j)2)receive(Y,j)或或 receive(Y,Preceive(Y,Pj j)当前处理器从当前处理器从P Pj j 接收数据接收数据 Y
22、Y。2022-12-2122算法算法4.1.4 分布存储多计算机上矩阵向量相乘算法分布存储多计算机上矩阵向量相乘算法给定给定:一个一个 n*n 的矩阵的矩阵 A 和一个向量和一个向量 X a11 a12 a13 a1n-1 a1n a21 a22 a23 a2n-1 a2n A=a31 a32 a33 a3n-1 a3n .an1 an2 an3 ann-1 ann x1 x2X=x3 xn计算计算:A:A*X X,得到一个向量。假设,得到一个向量。假设 r=n/p r=n/p 为一整数为一整数因为我们打算在分布存储的多计算机系统上运行该因为我们打算在分布存储的多计算机系统上运行该算法,被计算
23、的数据只能分布在各个处理器的局部算法,被计算的数据只能分布在各个处理器的局部存储器上。存储器上。2022-12-2123我们把我们把 A A 按列分为按列分为 p p 个个 n n*r r 的小矩阵的小矩阵A A1 1,A,A2 2,A,Ap p 把把 X X 按行分为按行分为 p p 个个 r r*1 1 的小向量的小向量X X1 1,X,X2 2,X,Xp p计算计算 A A*X X就转化为计算就转化为计算:A A1 1 X X1 1+A+A2 2 X X2 2+A Ap p X Xp p所以处理器所以处理器P Pi i(其中(其中1 1 i i p p)将将A Ai i 和和 X Xi
24、i 存放存放在自己的局部存储器中,各处理器首先计算在自己的局部存储器中,各处理器首先计算 A Ai i X Xi i ,然后利用通信实现数据求和。,然后利用通信实现数据求和。X1(r*1)X2(r*1)Xp(r*1)A=A1 A2 Ap X=(n*r)(n*r)(n*r)2022-12-2124我们假设处理器是以环结构组织的我们假设处理器是以环结构组织的PiP2PpP12022-12-2125算法算法4.1.4 分布存储多计算机上矩阵向量相乘算法分布存储多计算机上矩阵向量相乘算法输入:输入:处理器数处理器数 p,第第 i 个个 A 矩阵分量矩阵分量 Ai 于于 B 中,中,第第 i 个个 X
25、向量分量向量分量 Xi于于 w 中中;输出:输出:A*X 于于 P1 变量变量 y 中。中。begin compute z=Bw if i=1 then y=0 else receive(y,left)endif y=y+z send(y,right)if i=1 then receive(y,left)end2022-12-2126p1p3p2p4计算计算z=Bw计算计算z=Bw计算计算z=Bw计算计算z=Bwy=0rec(y,p1)rec(y,p2)rec(y,p3)y=y+zsend(y,p2)send(y,p3)send(y,p4)rec(y,p4)send(y,p1)y=y+zy(1
展开阅读全文