Amdahl定律适用情况:
问题规模不变,也就是计算量不变的情况下适用,问题规模增大的情况考虑Gustafson定律。公式解释
系统加速比=系统性能(改进后)/系统性能(改进前)=总执行时间(改进前)/总执行时间(改进后);
fe:改进部分的执行时间在总执行时间中所占的比例。例如,一个原本需要运行60秒的程序中有20秒可以提速,那么fe就是20/60=1/3,这个数可称为并行因子,它总是小于1;
re:可改进部分改进后性能提高的倍数。re=改进前的执行时间/改进后的执行时间。例如,可改进部分改进前需20秒,改进后只需5秒,则re=20/5=4。Amdahl定律还有一种形式:
Ws:串行工作负载;
Wp:并行工作负载;
Wo:并行开销;
f:串行分量,f=Ws/W;
p:并行处理器个数
这种形式适合理论阶段,假设实验是线性加速时,用这种方式计算加速比是否能达的最佳效果,从而确定是否继续进行。在并行计算过程中,有时会遇到加速比Sp比处理器数P更大的情况,此时求得的加速比即称超线性加速比(英语:superlinear speedup)。超线性加速比很少出现,且由于初学者常以为理论上加速比的最大值应与参与计算的处理器的总数P相等,这一情况常使初学者迷惑不已。
超线性加速比有几种可能的成因,如现代计算机的存储层次不同所带来的“高速缓存效应”;具体来说,较之顺序计算,在并行计算中,不仅参与计算的处理器数量更多,不同处理器的高速缓存也集合使用。而有鉴于此,集合的缓存便足以提供计算所需的存储量,算法执行时便不必使用速度较慢的内存,因而存储器读些时间便能大幅降低,这便对实际计算产生了额外的加速效果。
例如:搜索算法并行后可能会出现超线性加速,比如搜索域为一个有200个元素的数组,我们要搜索的数在180位,假设采用顺序搜索,那么找到该数需要180次比较,但是当有两个处理器时,将数组的前100个分给第一个处理器,其余100个分给第二个处理器,两个处理器同时顺序搜索,我们知道该数在第二个处理器的第80位,因此比较80次即可找到,re=180/80=2.25>处理器个数(2).
以上为个人理解过程中的通俗解释,不一定严谨,只表达大概意思。结论:
实验结果中加速比的计算加速比往往用第一个公式,因为可能会出现超线性加速的情况。
Amdahl定律
最新推荐文章于 2022-11-19 16:26:58 发布