为了定量知道并行程序的执行速度相对于串行程序的执行速度加快了多少,首先定义以下参数:令
p
是并行系统中的处理器数量;
Amdahl定律
特点:要求实时性,因此时间是关键因素,而计算负载是确定的。适用于固定计算负载。
对于固定的问题规模,通过增加处理器,减少平均的计算负载,来提升运算速度
S=Ws+WpWs+Wp/p
归一化之后得到,
S=p1+f(p−1)
这意味着,随着处理器数目的不断增加,整个系统所能达到的最大加速比是有上界的,为 1f
如果考虑到并行计算时的通信、同步和归约的操作所花费的额外开销时间
Wo
,则
S=1f+Wo/W
Gustafson定律
特点:精度是关键因素,而计算时间不变,由此需要不断增加处理器,增大计算量。适用于可扩放问题。
S=Ws+pWpWs+Wp
归一化后,
S=p−f(p−1)
这意味着,加速比与处理器数量成比例线性增加,同样如果考虑到额外开销,则得到
S=p−f(p−1)1+Wo/W
Sun、Ni定律
特点:在存储空间允许的情况下,满足规定的时间要求,尽量增大计算量。
S=fw+(1−f)G(p)Wfw+(1−f)G(p)W/p
其中 G(p) 表示存储容量增加 p 倍后增加的计算量,归一化后,
可以发现当 G(p)=1 时,它变成Amdahl定律的表达式,当 G(p)=p 时,它变成Gustafson定律的表达式,当 G(p)>p 时,表示计算负载比存储空间增加得快,此时的加速比前面两个定律得到的结论都快。
加速比的经验公式为
p/logp≤S≤p
一般作为可并行部分占比高的以及额外开销较少的,有望达到线性加速。
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可。