/knowledge/notes/amdahl-vs-gustafson
概念笔记 · 集群与云计算
阿姆达尔与古斯塔夫森定律
两个定律以不同方式解释并行加速。Amdahl 假设问题大小固定并达到极限;Gustafson 假设问题大小增长并线性扩展。这篇笔记解释什么时候应用每一个。
- 学于
- 集群与云计算COMP90024
- 时间
- 2023 年第一学期
- 应用于
- Spartan 推文处理器
- 阅读 / 复习
- 约 4 分钟阅读2026-10-15
两个公式描述了当你给并行程序增加处理器时的速度提升。它们对程序增长做出不同的假设,因此给出不同的极限。这篇笔记解释何时使用每一个,以及为什么这些假设很重要。
01
基本想法
每个程序的一部分以串行方式运行,一部分可以并行运行。串行部分是一个瓶颈:无论增加多少处理器,该串行部分总是花费相同的时间。如果代码的 10% 是串行的,无论有多少个核心,速度永远不会超过 10 倍。这是 Amdahl 定律背后的见解。
但实际程序随着增加核心时不会保持相同的规模。如果购买有 100 个核心而不是 10 个的机器,可能要解决更大的问题。现在有了容量,可能会并行化更多的部分。Gustafson 定律问的是:用更多核心在相同时间内能做多少工作?答案取决于如何扩展问题。
02
数学
设 是程序的串行部分比例,则 是并行部分。在 个处理器上:
这是 Amdahl 定律。随着 增长,加速比趋近于 。如果 10% 是串行的,加速比上限为 10 倍。如果 1% 是串行的,上限是 100 倍。
Gustafson 定律说的是:假设在单处理器上,串行代码花费比例 的时间,并行代码花费比例 的时间。如果现在有 个处理器并运行相同的串行代码,在相同时间内还能做多少额外的并行工作?
这与 线性扩展。获得 倍加速比,远好于 Amdahl 的固定上限。串行部分花费成本相同,但并行部分扩展到填满额外的核心。
03
动手试
下面的工具展示两个定律。移动滑块,看两条曲线如何分化。Amdahl 达到极限;Gustafson 继续增长。两者之间的选择是关于你在问什么问题。
- 保持串行比例为 10%。即使有 1,000 个核心,Amdahl 也上限于 10 倍。Gustafson 继续增长。
- 将串行比例降至 1%。Amdahl 现在上限为 100 倍。Gustafson 仍然线性扩展。
- 交叉点在小 处。对于 4-8 个核心,两个定律给出相似的加速比。在 1,000 个核心处,它们相差数个数量级。
04
我在哪用到它
05
容易出错的地方
06
参考资料
- Amdahl 定律维基百科加速比极限的清晰推导及其对并行计算含义的讨论。
- Gustafson 定律维基百科Gustafson 对 Amdahl 的 1988 年反驳,展示了当问题大小随处理器数量增长时缩放加速比的不同。