通过Amdahl定律的例子来说明加速百分比

时间:2013-09-05 01:57:06

标签: performance math computer-science computer-architecture parallelism-amdahl

我正在阅读“计算机建筑:定量方法第5版”,并试图掌握Amdahl定律,当谈到加速系统的某些部分,即加快一定比例的系统一定百分比。当您谈论通过特定因素加速系统时,很容易理解,例如一个快10倍的系统。

举一个具体的例子:

您有一个系统,其中某个子系统占执行时间的70%,您希望开发一个加速,这将使该子系统的延迟提高50%。

从书中,阿姆达尔定律列为:

SpeedupOverall = 1 /((1-FractionEnhanced)+(FractionEnhanced / SpeedupEnhanced))

我从分数增强的解释中收集(“原始计算机中可以转换为利用增强的计算时间的一小部分”),即:FractionEnhanced = 70%或0.7。

我的问题是如何反映加速。该书将其列为“增强执行模式所获得的改进,即,如果将增强模式用于整个程序,任务将运行多快”。书中说这是原始模式在改进时间内的时间;在这种情况下70/50或1.4。然而,我的困惑在于website,通过检查java applet代码,似乎加速增强将是1 +加速百分比,或1.5。也许我也在考虑这个问题,但我也在考虑它是如何也可能是.7 /(0.7 - 0.7 * 0.5),或者2(因为,70%* 50%是实际的延迟减少,就实际情况而言sub-sbstem,对吗?)。

计算出数学,我们得到以下答案:

  1. 对于SpeedupEnhanced = 70/50 = 1.4:SpeedupOverall = 1 /((1-0.7)+ .7 / 1.4)= 1.25

  2. 对于SpeedupEnhanced = 1 + 0.5 = 1.5:SpeedupOverall = 1 /((1-0.7)+ .7 / 1.5)= 1.3043

  3. 对于SpeedupEnhanced = 0.7 /(0.7-0.7 * 0.5)= 2:SpeedupOverall = 1 /((1-0.7)+。7/2)= 1.54

  4. 哪一个在这里是正确的加速?第二个似乎对我有意义,但这本书似乎暗示第一个是正确的。通过参考或解释如何掌握这种加速方式的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

第三个答案(总加速1.54倍)是正确的,因为“加速增强”是一个非维度值,仅表征增强的部分执行时间变化(以“x”为单位)。请注意,在您的情况下,加速增强简单地等于70 /(70 * 0.5)。

总的来说,amdahl法和gustafson法律解释存在许多可能的混淆。令人惊讶的是,良好的开始阅读是关于amdahl法律的维基百科页面。它将特别重新映射到更传统的解释,它强调并行计算和处理器数量而不是“增强加速”概念。更深入和详尽的阅读可以在Gustafson教授的参考页面上找到,他发明了“替代的”乐观法则“。在研究了所有材料之后,你会发现“加速”的概念更加有趣和毫不含糊。