并行算法中的基本概念
最大化并行度:将互不依赖的任务映射到不同进程
最小化执行时间:临界路径上的任务尽快地分配到 可用进程上
最小化进程间的通信:将依赖关系较强的任务分配 到同一个进程
以上三条有可能发生冲突,串行算法最适合第3条, 但并行度为1,无法充分利用并行机的资源
2020/6/15
13
任务调度(续)
T4
T3
T2
T1
10
➢ 作为参考的串行算法并非最优
➢ 在查找等算法中,并行算法可能提前在某个处理器上 结束
➢ Cache的影响
2020/6/15
18
并行效率:加速比与处理器个数之比
97秒
等待2秒 附加计算1秒
100秒
99秒
Ts=394 Tp=200
附加计算1秒 98秒
Sp=1.9 7
Ef=.98 5
处理器0
处理器1
2020/6/15
均单位操作数称为平均并行度,其值等于整 个任务的总计算量与临界路径的长度之比
在相同分解粒度下,临界路径决定平均并行度 路径上所有任务的计算量之和称为其长度
❖ 一般地,最大并行度与平均并行度都随任务 分解粒度的变细而增加,但并不只与分解粒 度有关,还与子任务间的依赖关系,即任务 图的结构有关
2020/6/15
❖ 在进行任务分解时,子任务间一般存在依 赖关系,可以用任务依赖图来表示
❖ 在进行任务分解时,应尽量减少子任务间 的依赖关系,以提高并行性
2020/6/15
7
任务依赖图的简单例子
T1
T2
T3
T4
T5
T6
T7
T8
T9
2020/6/15
8
粒度
❖ 粒度是一个定性概念,是一个相对概念
❖ 以任务分解为基础,
11
并行度(续)
T4
T3
T2
T1
10
10
10
10
T4
T3
T2
T1
10
10
10
10
T6
T5
9
6
T7 8
T5 6
T6 9
T7 8
平均并行度为63/27
2020/6/15
平均并行度为63/33
12
任务调度
❖ 将任务分配到进程的过程,这里的进程可以理解 为虚构的处理器
❖ 任务依赖图在任务调度时扮演着十分重要的角色
例如,长为n的两独立向量相加时,并行度为n
操作可以指加、减、乘、除等基本运算,也可以 指某一任务级的作业,视具体情况而定
❖ 最大并行度
在任务图中,如果以子任务为单位,则并行度通 常小于总的子任务数
在树型任务图中,最大并行度总等于树叶的数量
2020/6/15
10
❖ 在整个程序并执行行过度程中(,续能)够同时执行的平
2020/6/15
17
加速比
❖ 最佳串行算法在单处理器上的执行时间与并行算 法的执行时间之比,此时S不大于处理器个数
❖ 通常采用已知的最佳串行算法作为参考
❖ 对SPMD程序,为方便起见,有时简单地采用同 一个并行程序在单处理器上的执行时间作为参考
❖ 在后两种定义下,S可能大于处理器个数,称为 超线性加速比,出现这种情况有几个可能
❖ 显然,P1和P2不能并行执行。
2020/6/15
3
数据反相关示例
❖ P1: A=B×C
❖ P2: C=E+D
P1通过变量C数据相关于P2。为保证语义正确性, 必须等P1将变量C读出后,P2方可向变量C进行 写入操作。
❖ 也不可并行化
2020/6/15
4
数据输出相关示例
❖ P1: A=B+C ❖ P2: A=D×E
在对任务进行分解时,子任务的个数决定分解 的粒度
如果小任务多,则称分解是细粒度的,否则称 分解是粗粒度的
❖ 针对并行机的计算能力
如果每个子任务的计算量比较大,则称为粗粒 度并行,否则称为细粒度并行
2020/6/15
9
并行度
❖ 并行度是算法内在的固有属性,与具体的并行机 无关。衡量的是算法中可同时执行的单位操作数
机器规模、问题规模
❖ 机器规模
并行机所含有的处理器个数 并行机的峰值性能
❖ 问题规模
对要处理的问题的总执行时间的衡量
输入输出规模、计算规模、内存需求规模、通 信规模
经常指刻划计算量的一些主要因素。例如,对
稠密线性方程组的求解,有时称矩阵阶数为问
题规模
2020/6/15
1
数据相关性
❖ 定义: 对语句P1和语句P2,若存在变量x 使之满足下述条件之一,则称语句P2依赖 于语句P1,否则P1和P2之间没有数据依 赖关系:
❖ 并行开销包括通信开销、处理器间的同步开销、 由于处理器同步引起的处理器等待时间、为进行 并行计算引入的额外计算所用的时间等
2020/6/15
15
执行时间、并行开销时间(示例)
97秒
等待2秒 附加计算1秒
100秒
99秒
附加计算1秒 98秒
Ts=39 4
Tp=20 0
=6
Ao=3
处理器0
处理器1
10
10
10
P3 P2 P1
P0
T6
P2 9
T5
P0 6
T7
P0 8
❖ 具体映射技术将在以后详细介绍
2020/6/15
14
执行时间、代价、并行开销时间
❖ 串行程序的执行时间Ts
❖ 并行程序的执行时间Tp ;代价PTp
❖ 总并行开销时间To=PTp-Ts
❖ 平均并行开销时间是指总并行开销时间与处理器 个数之比Tp-Ts/p
❖ 数据相关:若xO1且 xI2,即P2使用P1计 算出的x
❖ 数据反相关:若xI1且 xO2,即P1使用x值 先于P2对x的更改
❖ 数据输出相关:若xO1且xO2,即x同时是
P1与P2的输出
2020/6/15
2
数据相关示例
❖ P1: A=B+C
❖ P2: D=A×B
其中,变量A是导致P1和P2发生数据相关的原因。 为了保证程序执行的语义正确性,变量A必须是 先在P1写入存储器后, P2方可读取,即必须先 写后读。
2020/6/15
16
负载平衡
❖ 负载是指处理器上分配到的任务执行所需要的时 间,通常指计算量
❖ 负载平衡是要求每个处理器上的执行时间相等, 这样可以有效减少并行程序的执行时间
❖ 为保证负载平衡,在将任务进行恰当地分解后, 必须将子任务合理地分配到各进程上去,这个过 程称为任务调度,前面已经讲到
❖ 有关负载平衡与任务调度的方法,将在以后详细 介绍
为保证语义正确性,必须保证P1先写入A, 然后允许P2再写入A。
2020/6/15
5
数据相关性判断的伯恩斯坦准则
❖ 如果下面三个条件同时成立
❖ I1∩O2=Φ, ❖ I2∩O1=Φ, ❖ O1∩O2=Φ,
则P1与P2可以并行执行
2020/6/15
6
任务分解
❖ 将整个计算过程分解为许多较小的计算过 程,常用的分解方法有数据域分解、分治 策略,将在后面详细介绍