阿姆达尔定律(Amdahl)

是计算机界的一个经验法则。是以计算机科学家吉恩·阿姆达尔来命名的。

它表示串行执行的计算机程序在并行执行后效率的 提升。

它给 出了使用并行处理理论上能带来的效率提高。

考虑运行在单核处理器上的一个程序。在执行时间上来说,“f”是并行计算部分执行时间所占比 例,所以(1-f)是串行处理部分所占比例。

如果有“m”个处理器并行运行,那理论上的优化空 间计算如下:

阿姆达尔定律 是什么 Amdahl 并行效率计算经验法则_并行处理


我们可以推导出两个重要结论:

1. 当f最小的时候几乎没什么提升

2. 随着m增大到极限,加速被限制在1/(1-f)

阿姆达尔定律是一个固定大小的模型,意味着它可以解决固定大小的带有固定并行处理比例的问题。



早在 1967 年,计算机体系结构领域的元老 Amdahl 提出的以他名字命名的定律,便已经向我们阐明了衡量处理器并行计算后效率提升能力的经验法则:


阿姆达尔定律 是什么 Amdahl 并行效率计算经验法则_并行处理_02

其中,SpeedUp 为加速比,Ws 是程序的串行分量,Wp 是程序中的并行分量,N 为 CPU 数量。

可以看出,在工作总量恒定的情况下,可并行部分代码占比越多,系统的整体性能越高。

我们需要把思维从线性模型中抽离出来,继续细分整个处理流程,找出执行时间最长的程序热点,对这些代码段进行并行化从而将所有瓶颈逐个击破,这才是使通过并行化获得最大性能提升的最好办法。