【问题标题】:Understanding Amdahl's law了解阿姆达尔定律
【发布时间】:2026-01-31 13:30:01
【问题描述】:

我试图理解下面的幻灯片

这个定义对我来说有点不清楚。像*这样的消息来源说,Amdahl's 测量了在固定工作负载下执行任务的延迟加速,这对于资源得到改进的系统来说是可以预期的。对我来说,加速基本上是一个任务在其他任务上运行的速度。在这种情况下,加速以不同的方式使用。您能否阐明阿姆达尔定律以更简单的方式衡量的内容以及真正的加速是什么?

【问题讨论】:

  • 如果 B 有一些额外的功能或一些与 A 不同的行为,那么与系统 A 相比,相同的程序在系统 B 上运行的速度会快多少。
  • 好的,但是你能解释一下阿姆达尔定律背后的想法吗?

标签: parallel-processing cpu-architecture


【解决方案1】:

Amdhal 定律测量理论上的最大加速,这几乎永远无法实现,一旦你知道不同部分的含义,这个公式就很容易理解,

好的,所以公式是Speedup = 1/ 1-f + f/p

  • 1 表示整个代码,
  • 1-f表示串行代码量(不能并行化),
  • f 表示可以并行化的代码,
  • p 表示处理器数量,

所以,如果我们说有 10 个处理器,我们有 40% 的代码可以并行化。
公式为加速 = 1/ 1-40% (0.4) + 40%(0.4)/10

不是专业人士,您可能想检查一下,但如果我没记错的话,它应该是这样工作的:)

【讨论】:

  • 您的公式缺少括号。使用标准的操作顺序,你写的意思是(1/1) - f + (f/p)。但是是的,主要是一个很好的答案; Amdahl 定律假设工作负载的并行部分可以完美扩展,因此对于大多数问题来说,这纯粹是理论上的,不切实际的。
【解决方案2】:

这里对加速的定义是:

Speedup = Baseline Running Time / New Running Time

这意味着如果运行时间是BRT,可并行部分是P,那么:

BRT = (1 - P) * BRT + P * BRT

现在如果在运行时间的 P 部分获得了 S 的加速,那么新的改进运行时间 (IRT) 为:

IRT = (1 - P) * BRT + P * (BRT / S)
    = (1 - P) * BRT + (P / S) * BRT
    = ((1 - P) + (P / S)) * BRT

因此:

BRT / IRT = 1 / ((1 - P) + (P / S))

这是整体加速。这是阿姆达尔定律。

对我来说,加速基本上是一个任务比其他任务运行的速度。

是的,加速可以用不同的方式定义。这可能有点令人困惑。

【讨论】: