第四章 并行算法的设计基础

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

lim (log n / n) lim ln n /(n ln 2) (1 / ln 2) lim (ln n / n) 0
n n n
所以,f(n)=lg n比g(n)=n低阶。
2013-7-13
14
定义11:一个并行算法最坏情况下的时间复杂性 ( worst-case time-complexity ) :对于所有输
区完成数组求和的算法
2013-7-13
18
[算法4.1.3] 共享存储多处理机上求和算法 输入:A = (a0 , a1 ,…, an-1) , 处理器数 p; 输出: a 0 + a 1 +…+ a n-1 存放在全局变量S 中。 begin 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 for 2013-7-13 end
f ( n) lim c n g ( n)
则 (1)当c≠0时,说明f(n)和g(n)同阶,记为f(n)=Θ(g(n)) (2)当c=0时,说明f(n)比g(n)低阶,记为f(n) =O(g(n)) (3)当c=∞时,说明f(n)比g(n)高阶,记为f(n)=Ω(g(n))
2013-7-13 12


2013-7-13
20

通信可使用通信原语来表示:
1) global read (X, Y)
1. 在共享存储的多处理机中,可使用
将全局存储器中数据 X 读入局部变量 Y;
2) global write (U, V) 将局部数据 U 写入共享存储变量 V 中。
2. 在分布存储的多计算机中,可使用
1) send (X, i ) 或 send (X, Pi )
当前处理器发送数据 X 到 Pi ;
2) receive (Y, j ) 或 receive (Y, Pj ) 当前处理器从Pj 接收数据 Y。
2013-7-13 21
[算法4.1.4] 分布存储多计算机上矩阵向量相乘算法 给定: 一个 n*n 的矩阵 A 和一个向量 X x1 a11 a12 a13…… a1n-1 a1n
存空间的平均值。
2013-7-13 16
定义15:如果一个并行算法的成本与其对应的最佳 串行算法的最坏情况下时间复杂性在同一个数量
级上,则称该并行算法为成本最佳的( costoptimal ) 或最佳并行算法 (optimal parallel algorithm )。 • 总运算量W (n): (并行)算法中所要完成的总的操 作数量( the number of computational operations )
定义4:异步算法(asynchronous algorithm):是指算 法的诸进程的执行不必相互等待的一类并行算法。
定义5:分布并行算法(distributed algorithm):将 同一任务分解为若干个子任务,使之分布在由通信 链路连接的多个节点上协同完成运算的算法。
分布式算法的执行时间,在很大程度上受通信开 销的影响。
19

通信(communication):把信息用一定手段通过 某种介质或传输线路从一个点传送至另一点的过 程。 通信是在空间上对并发执行的进程实现数据交换。
原语 (primitive):它由若干条机器指令构成的, 用来完成特定功能的一段程序。原语有以下特点: – 不可中断性:一旦原语被开始执行,就应不间 断地执行到结束; – 不可侵犯性:原语一旦被执行,中间不许插入 任何其他操作。
我们假设处理器是以环结构组织的
P1
P2
Pi
Pp
2013-7-13
24
[算法4.1.4] 分布存储多计算机上矩阵向量相乘算法 输入:处理器数 p, 第 i 个 A 矩阵分量 Ai 于 B 中, 第 i 个 X 向量分量 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) 2013-7-13 25 end
a21 a22 a23…… a2n-1 a2n A= a31 a32 a33…… a3n-1 a3n
……..
x2 X= x3 … xn
an1 an2 an3…… ann-1 ann
计算: A*X,得到一个向量。假设 r = n/p 为一整数
• 因为我们打算在分布存储的多计算机系统上运行该
算法,被计算的数据只能分布在各个处理器的局部 存储器上。 2013-7-13 22
f(n)= ( g(n) )
我们称 g(n) 为 f(n) 的上界。
定义9: 如果存在两个正数 c 和 n0 ,使得对于所有 的 n n0 均有f(n) c g(n) ,则标记为:
f(n)= ( g(n) )
我们称 g(n) 为 f(n) 的下界。
2013-7-13 10
定义10:如果存在正数 c1、c2 和 n0 ,使得对于 所有的 n n0 均有c1 g(n) f(n) c2 g(n) , 则标记为
send(y,p1) 26
结束
第四章
并行算法的设计基础
一、并行算法相关的基本概念及表示 二、介绍几种并行计算模型
2013-7-13
27
二、并行计算模型
• 并行计算模型:从并行算法的设计和分析出发, 将各种并行计算机(至少是某一类并行计算机) 的基本特征抽象出来,形成一个抽象的计算模型。 并行计算模型为并行计算提供了硬件和软件的界 面,使硬件设计者和软件设计者可以开发并行性 的支持机制,从而提高系统的性能。 对并行算法的研制者,不会局限于某种具体的并 行计算机来研究并行算法,而需借助于抽象的计 算模型,它是设计和分析并行算法的基础。
• 并行算法的运行时间 t(n) :对于输入规模为 n
的问题,在给定的并行计算模型之下求解问题所 需的时间,也称为时间复杂性 ( time complexity )。 运行时间 = 计算时间 + 通信时间 • 处理器数p(n):表示对给定的问题规模 n,并行 算法所用的处理器的个数。
• 并行算法的成本c(n):并行算法的运行时间 t(n)
第四章
并行算法的设计基础
Hale Waihona Puke Baidu
• 并行计算相关的研究分支
1. 并行计算机体系结构 并行计算机体系结构 2. 并行计算的性能评价 并行计算的性能评价 3. 并行算法 并行算法
4. 并行程序设计
一、并行算法相关的基本概念及表示 二、介绍几种并行计算模型
2013-7-13 1
一、并行算法相关的基本概念及表示
1. 基本概念
p1
p2
p3
p4
计算z=Bw
y=0 y=y+z send(y,p2) rec(y,p4)
计算z=Bw
rec(y, p1)
计算z=Bw
rec(y, p2)
计算z=Bw
rec(y, p3)
y(1) y=y+z
send(y,p3)
y(2) y=y+z send(y,p4)
y(3)
y=y+z
y(4)
2013-7-13
f(n)= ( g(n) )
我们称 g(n) 为 f(n) 的紧致界。 即:如果 f(n)= ( g(n) )且 f(n)= ( g(n) )
则 f(n)= ( g(n) )
2013-7-13
11
比较两个算法的时间复杂性函数g(n)和f(n)的阶的 方法:
用定义判断 用求极限的方法来加以判断。 若
2. 并行算法的表示 3. 并行算法的复杂性度量 4. 并行算法的同步与通信
2013-7-13
2
1. 基本概念
定义1:算法:在有限步骤内求解某一特定问题的 一组无二义性的规则。 定义2:并行算法是由一些独立的、可以并行运行 的计算模块(进程)构成,模块(进程)之间 能相互作用和协调,以完成对一个给定问题的 求解。
(worst-case space-complexity) :对于所有输
入规模为 n 的问题,在给定的并行计算模型之下
求解问题所需的内存空间的最大值。 定义14:一个并行算法的期望空间复杂性(expected space-complexity) :对于所有输入规模为 n 的
问题,在给定的计算模型之下求解问题所需的内
与所需的处理器数 p(n) 之积,即
2013-7-13
c(n) = t(n) * p(n)
13
例:(1)设f(n)=n2/2, g(n)=307n2,则
因此,f(n)=n2/2与g(n)=307n2是同阶的。
n
lim (n 2 / 2) /(307 n 2 ) 1 / 614
(2)设f(n)=lg n,g(n)=n,则
我们把 A 按列分为 p 个 n*r 的小矩阵A1 , A2 ,… , Ap 把 X 按行分为 p 个 r*1 的小向量X1 , X2 ,… , Xp
X1
(r*1)
X2 A= A1
(n*r)
A2
(n*r)

Ap
(n*r)
X=
(r*1)
… Xp
(r*1)
计算 A*X就转化为计算: A1 X1 + A2 X2 +… Ap Xp 所以处理器Pi(其中1 i p)将Ai 和 Xi 存放 在自己的局部存储器中,各处理器首先计算 Ai 2013-7-13 23 Xi ,然后利用通信实现数据求和。
2013-7-13
3
根据算法的不同特征,可以对并行算法进 行不同的分类: –SIMD算法和MIMD算法
–同步算法和异步算法
–数值计算算法和非数值计算算法
–共享存储算法和分布存储算法
2013-7-13
4
定义3:同步算法(synchronized algorithm):是指算 法的诸进程的执行必须相互等待的一类并行算法。 SIMD算法是同步算法中的一种特例。
2013-7-13
7
2. 并行算法的表示
• 表示算法的要求
– 无二义性 – 力图直观、易懂 – 不苛求严格的语法格式
• 一般的串行算法常用类Pascal、类Algol 表示
2013-7-13
8
并行算法常引入以下两条并行语句:
1. par-do语句 for i=1 to n par-do : : end for
入规模为 n 的问题,在给定的并行计算模型之下
求解问题所需的时间的最大值。
定义12:一个并行算法的期望时间复杂性
( expected time-complexity ) :对于所有输入
规模为 n 的问题,在给定的计算模型之下求解问
题所需的时间的平均值。
2013-7-13 15
定义13:一个并行算法最坏情况下的空间复杂性
2013-7-13 6
定义7:随机算法( randomized algorithm, probabilistic algorithm )计算步骤具有随机 性的算法。在算法的某一步或某些步上,可以在 指定范围内随机地选择下一个演算步的走向。 如果方法得当,可比一般算法更快地得出结果, 并且能以较高的概率提供正确的结果。
2013-7-13
17
4. 并行算法中的同步与通信
• 同步(synchronization):使多个相关事件的发
生保持相同的节奏,彼此之间能良好地配合。
• 在并行算法的各进程异步执行过程中,为了确保
各处理器的正确工作顺序和对共享存储器的访问,
程序员需要在算法的适当位臵设臵同步点。

下面给出一个利用 lock 和 unlock 构造的临界
表示其间的 n (i=1 to n) 次语句序列的执行 可以并行完成
2. for all 语句 for all Pi where 0 i k-1 do : : 2013-7-13 end for
表示 k 个 处理器同时 执行其间的 语句序列 9
3. 并行算法的复杂性度量
令 f(n) 和 g(n) 是定义在自然数集合N 上的两个函数, 定义8: 如果存在两个正数 c 和 n0 ,使得对于所有 的 n n0 均有f(n) c g(n) ,则标记为:
2013-7-13 5
定义6:确定算法 (deterministic algorithm):每 个运算步骤上均确定唯一操作的算法。如线性方 程组求解的算法。
不确定算法 (non-deterministic algorithm): 在问题求解的搜索过程中,提出多种可供选择的 操作,它们中的任一种都有希望获得问题的解答, 但都不能肯定解出,有时甚至不能确定这些操作 中哪一种求解的可能性更大些。对此,只能选择 其中任意一种搜索下去。这种搜索方法称为不确 定算法。
相关文档
最新文档