Amdahl定律和Gustafson定律

文章目录

  • 1. Amdahl定律
    • 实际问题
  • 2. Gustafson定律

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(1F))Told = 1 F + 1 n ( 1 − F ) \frac{1 }{F+\frac{1}{n}(1-F)} F+n1(1F)1 = 500/400 = 1.25

耗时100
耗时100
耗时100
耗时100
耗时100
程序结束
耗时100
耗时50
耗时50
耗时100
耗时100
耗时50
耗时50
程序结束

2. Gustafson定律

  • 说明处理器数量,串行比例和加速比之间的关系。
  • 只要有足够的并行化,那么加速比和CPU个数成正比。

执行时间 = 串行时间(c ) + 并行时间(b)
总执行时间 = 串行时间(b) + 处理器个数(n) X 并行时间(b)
加速比(S) = b c + b \frac{b}{c+b} c+bb

串行比例(F)= c c + b \frac{c}{c+b} c+bc

加速比 S ( n ) = c + n b c + b = c c + b + n b c + b = F + n ( c + b − c c + b ) = F + n ( 1 − c c + b ) = F + n ( 1 − F ) = F + n − n F = n − F ( n − 1 ) S(n) = \frac{c + nb}{c+b} = \frac{c}{c+b} + \frac{nb}{c+b} = F+ n(\frac{c+b-c}{c+b}) = F+n(1- \frac{c}{c+b}) = F+ n(1-F)=F+n-nF = n-F(n-1) S(n)=c+bc+nb=c+bc+c+bnb=F+n(c+bc+bc)=F+n(1c+bc)=F+n(1F)=F+nnF=nF(n1)

你可能感兴趣的:(计算机基础)