0

Gustafson 定律与 Amdahl 定律相反,该定律声称大多数并行处理应用程序实际上在增加对并行处理的访问时会增加工作量。因此,假定恒定工作负载来衡量加速比的阿姆达尔定律是确定并行处理收益的较差方法。

然而,我对古斯塔夫森到底想争论什么感到困惑。

例如,假设我采用古斯塔夫森定律并将其应用于顺序处理器和两个并行处理器:

我生成了一个在并行处理器 #1 上运行的工作负载。在并行处理器上执行需要 1 秒,在顺序处理器上执行需要 10 秒。

我生成了更大的工作负载并在并行处理器 #2 上运行它。在并行处理器上执行需要 1 秒,在顺序处理器上执行需要 50 秒。

对于每个工作负载,相对于顺序处理器都有一个加速。但是,这似乎并没有违反阿姆达尔定律,因为每个工作负载仍然存在一些加速上限。所有这一切都是在改变工作量,以便可能减少代码的“仅串行”部分。根据阿姆达尔定律,减少仅串行部分将增加加速限制。

所以我很困惑,提倡增加工作量并保持恒定执行时间的古斯塔夫森定律似乎并没有添加任何新信息。

古斯塔夫森到底在争论什么?具体来说,“规模化加速”甚至意味着什么?

4

1 回答 1

2

Gustafson 定律与 Amdahl 定律相反,该定律声称大多数并行处理应用程序实际上在增加对并行处理的访问时会增加工作量。因此,假定恒定工作负载来衡量加速比的阿姆达尔定律是确定并行处理收益的较差方法。

不。

首先,这两个法律没有要求任何东西。它们显示了应用程序可以基于特定配置获得的理论(最大)加速。这两个是模拟并行算法行为的基本数学公式。他们的目标是了解并行计算的一些限制(阿姆达尔定律)以及开发人员可以做些什么来克服这些限制(古斯塔夫森定律)。

阿姆达尔定律是一个数学公式,描述了一个应用程序的理论加速,该应用程序具有由多个处理单元计算的可变时间给定工作负载(但计算量是固定的)。工作负载包含一个串行执行部分和一个并行执行部分。它表明加速受到程序串行部分的限制。这对于并行应用程序的开发人员来说并不是很好,因为这意味着假设工作负载是固定的,对于一些相当连续的工作负载,他们的应用程序的可伸缩性将非常糟糕。

古斯塔夫森定律打破了这一假设,并添加了一个新的假设来以不同的方式看待问题。实际上,数学公式描述了由多个处理单元计算的具有固定时间工作负载(但计算量是可变的)的应用程序的理论加速。它表明,只要应用程序开发人员可以向给定的工作负载添加更多并行工作,速度就会很好。

我生成了一个在并行处理器 #1 上运行的工作负载。在并行处理器上执行需要 1 秒,在顺序处理器上执行需要 10 秒。我生成了更大的工作负载并在并行处理器 #2 上运行它。在并行处理器上执行需要 1 秒,在顺序处理器上执行需要 50 秒。

与具有这两种模型的一个处理单元相比,具有 2 个处理单元的并行程序的速度不能超过 2 倍。由于一些混杂因素(通常是由于缓存效应),这在实践中是可能的,但这种效应并非唯一来自处理单元。“两个并行处理器”是什么意思?您的示例中缺少处理单元的数量(除非您想从提供的信息中找到它)。

所以我很困惑,提倡增加工作量并保持恒定执行时间的古斯塔夫森定律似乎并没有添加任何新信息。

这两条定律就像是同一个可扩展性问题的两个观点。但是,他们做出了不同的假设:固定工作量和可变工作时间 VS 可变工作量和固定工作时间。

如果您熟悉强/弱缩放的概念,请注意阿姆达尔定律对于强缩放就像古斯塔夫森定律对于弱缩放一样

于 2021-10-13T18:27:24.970 回答