通过阿姆达尔定律关于百分比加速的示例



我正在阅读《计算机体系结构:定量方法第五版》,并试图掌握Amdahl定律,当涉及到加速部分系统时,即将系统的某个百分比加速某个百分比。当你谈论将系统加速某个因素时,很容易理解,例如,一个速度快10倍的系统。

举一个具体的例子:

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

从书中,Amdahl定律被列为:

SpeedupOverall=1/((1-分数增强)+(分数增强/速度增强))

我从分数增强("原始计算机中可以转换为利用增强的计算时间的分数")的解释中得出:分数增强=70%或0.7。

我的问题是如何反映加速。该书将其列为"增强的执行模式所获得的改进,也就是说,如果整个程序都使用增强的模式,任务的运行速度会快多少"。书中说,这将是原来模式改进的时间;在这种情况下是70/50或1.4。然而,我对这个网站感到困惑的是,通过检查java小程序代码,似乎增强的加速率是1+加速率的百分比,即1.5。也许我也想得太多了,但我也在想它怎么可能是.7/(0.7-0.7*0.5)或2(因为,就实际的子系统而言,70%*50%是实际的延迟减少,对吧?)。

通过计算,我们得到以下答案:

  1. 对于加速增强=70/50=1.4:加速总体=1/((1-0.7)+.7/1.4)=1.25

  2. 对于加速增强=1+0.5=1.5:加速总体=1/((1-0.7)+0.7/1.5)=1.3043

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

哪一个是正确的加速?第二个对我来说似乎有道理,但这本书似乎暗示第一个是正确的。对于如何掌握这种类型的加速,任何通过参考或解释的方式提供的帮助都将不胜感激。

第三个答案(1.54x总加速)是正确的,因为"加速增强"是一个无量纲值,仅表征增强的零件执行时间变化(以"x"为单位)。请注意,在您的情况下,加速增强仅等于70/(70*0.5)。

总的来说,amdahl法和gustafson法的解释可能存在许多混淆。令人惊讶的是,好的开始阅读是关于amdahl定律的维基百科页面。它将特别让你回到更传统的解释,强调并行计算和处理器数量,而不是"增强的加速"概念。在古斯塔夫森教授的参考页上可以找到更深入和详尽的阅读,他"发明"了另一种"乐观主义定律"。在研究了所有的材料后,你会发现"加速"的概念更有趣,也更没有野心。

最新更新