阿姆达尔定律(Amdahl)
是计算机界的一个经验法则。是以计算机科学家吉恩·阿姆达尔来命名的。
它表示串行执行的计算机程序在并行执行后效率的 提升。
它给 出了使用并行处理理论上能带来的效率提高。
考虑运行在单核处理器上的一个程序。在执行时间上来说,“f”是并行计算部分执行时间所占比 例,所以(1-f)是串行处理部分所占比例。
如果有“m”个处理器并行运行,那理论上的优化空 间计算如下:
我们可以推导出两个重要结论:
1. 当f最小的时候几乎没什么提升
2. 随着m增大到极限,加速被限制在1/(1-f)
阿姆达尔定律是一个固定大小的模型,意味着它可以解决固定大小的带有固定并行处理比例的问题。
早在 1967 年,计算机体系结构领域的元老 Amdahl 提出的以他名字命名的定律,便已经向我们阐明了衡量处理器并行计算后效率提升能力的经验法则:
其中,SpeedUp 为加速比,Ws 是程序的串行分量,Wp 是程序中的并行分量,N 为 CPU 数量。
可以看出,在工作总量恒定的情况下,可并行部分代码占比越多,系统的整体性能越高。
我们需要把思维从线性模型中抽离出来,继续细分整个处理流程,找出执行时间最长的程序热点,对这些代码段进行并行化从而将所有瓶颈逐个击破,这才是使通过并行化获得最大性能提升的最好办法。
————————————————
版权声明:本文为CSDN博主「软件工程小施同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013288190/article/details/113800000
以下为我原创
举例说明
“f”是并行计算部分执行时间所占比 例,所以(1-f)是串行处理部分所占比例。 如果有“m”个处理器并行运行.
场景一 :
一个接口耗时100ms,其中通过线程并行处理的耗时是20ms,串行执行的时间是80,处理器的核心是4核,求优化空间
f = 0.2
1-f = 0.8
f/m = 0.2/4 = 0.05
SpeedUp = 1/(0.8+0.05) = 1.18
如果并行处理的时间不变,串行处理的时间变成了60ms,即优化了20ms,
f = 20/80 = 0.25
1-f = 0.75
f/m = 0.0625
SpeedUp = 1/0.8125 = 1.23
S(A)/S(B) = 1.23/1.18 = 1.04
即接口性能提升20%,系统整体提升4%