1. Amdahl定律
- 主要思想:当我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度。
- 定义了串行系统并行优化后的加速比的计算公式和理论上限
- 加速比定义:加速比(k) = 优化前系统耗时/优化后系统耗时= Told/Tnew
- 增加CPU处理器数量并不一定能起到有效的作用,提高系统内可并行化的模块比重,合理增加并行化的模块比重,合理增加并行处理器数量,才能以最小的投入,得到最大的加速比。
若某系统执行某应用需要时间为Told。假设系统某部分所需要执行时间与该时间的比例为α,而该部分性能提升比例为k。即该部分初始所需时间为αTold,现在所需时间为(αTold)/k。因此,总执行时间应为:
Tnew = (1-α)Told+(Told)/k = Told[(1-α)+α/k]
所以,加速比S= Told/ Tnew为:
S = 1 ( 1 − α ) + α / k \frac{1}{(1-α)+α/k} (1−α)+α/k1
如果k趋向于∞,我们可以取系统的某一部分将其加速到一个点,在这个点上,这部分花费的时间可以忽略不计。所以可以得到:
S∞ = 1 1 − α \frac{1}{1-α} 1−α1
实际问题
一个串行化程序部分步骤优化为并行后加速比,如下原本每个步骤耗时100,优化其中的2个步骤,使其加速50,求加速比。(其中Tnew为优化后时间,Told为优化前,F为串行比例,n为处理器个数)
解:
由题得 Tnew = Told(F+ 1 n \frac{1}{n} n1(1-F))
根据加速比定义得 S = Told/Tnew = T o l d T o l d ( F + 1 n ( 1 − F ) ) \frac{ T _ {old} }{T _ {old}(F+\frac{1}{n}(1-F))} Told(F+n1(1−F))