Gustafson定律与Amdahl定律背道而驰,后者声称,大多数并行处理应用程序在增加对并行处理的访问权限时实际上会增加工作量。因此,Amdahl定律假定恒定的工作量来测量加速比是确定并行处理效益的一种很差的方法。
然而,我对古斯塔夫森到底想要争论什么感到困惑。
例如,假设我采用Gustafson定律并将其应用于顺序处理器和两个并行处理器:
我生成一个在并行处理器#1上运行的工作负载,在并行处理器上执行需要1秒,在顺序处理器上执行需要10秒。
我生成一个更大的工作负载,并在并行处理器#2上运行它。在并行处理器上执行它需要1秒,在顺序处理器上执行需要50秒。
对于每个工作负载,都有一个相对于顺序处理器的加速。然而,这似乎并没有违反Amdahl定律,因为对于每个工作负载,仍然有一些上限。所做的一切就是改变工作负载,这样代码中的“仅串行”部分可能会减少。根据Amdahl定律,减少序列的唯一部分将增加速度限制.
所以我很困惑,古斯塔夫森的法则,它提倡增加工作量和保持恒定的执行时间,似乎并没有增加任何新的信息。
古斯塔夫森到底在争论什么?具体来说,“缩放加速”到底是什么意思?
发布于 2021-10-13 18:27:24
Gustafson定律是与Amdahl定律相反的,它声称大多数并行处理应用程序在增加对并行处理的访问时实际上会增加工作量。因此,Amdahl定律假定恒定的工作量来测量加速比是确定并行处理效益的一种很差的方法。
不是的。
首先,这两项法律并没有提出任何要求。它们显示了应用程序根据特定配置可以获得的理论(最大)速度。这两个基本的数学公式模拟了并行算法的行为。他们的目标是了解并行计算(Amdahl定律)的一些局限性,以及开发人员可以做些什么来克服它们(Gustafson定律)。
Amdahl定律是一个数学公式,描述了由几个处理单元计算的具有可变时间、给定工作量(但计算量是固定的)的应用程序的理论速度。工作负载包括串行执行部分和并行执行部分。结果表明,程序的串行部分限制了速度的提高.对于并行应用程序的开发人员来说,这并不是很好,因为这意味着如果工作负载固定的话,他们的应用程序的可伸缩性将对一些相当连续的工作负载非常不利。
古斯塔夫森定律打破了这一假设,增加了一个新的假设来以不同的方式来看待这个问题。实际上,数学公式描述了由几个处理单元计算的具有固定时间工作负载(但计算量是可变的)的应用程序的理论速度。它表明,只要应用程序开发人员能够在给定的工作负载中添加更多的并行工作,速度就可以提高。
I生成在并行处理器#1上运行的工作负载,在并行处理器上执行需要1秒,在顺序处理器上执行需要10秒。我生成一个更大的工作负载,并在并行处理器#2上运行它。在并行处理器上执行它需要1秒,在顺序处理器上执行需要50秒。
与这两种模式下的一个处理单元相比,具有2个处理单元的并行程序的速度不能超过2倍。这在实践中是可能的,因为一些混淆因素(通常是由于缓存-效果),但效果并不是唯一来自处理单元。你所说的“两个并行处理器”是什么意思?在您的示例中缺少处理单元的数量(除非您希望从提供的信息中找到它)。
所以我很困惑,Gustafson的法则提倡增加工作量和保持恒定的执行时间,但似乎并没有增加任何新的信息。
这两个定律就像两个观点相同的可伸缩性问题。然而,他们做出了不同的假设:固定的工作时间和固定的工作时间的固定工作量。
如果您熟悉强/弱标度的概念,请注意Amdahl定律对于强标度就像Gustafson定律对于弱标度一样。
https://stackoverflow.com/questions/69557046
复制相似问题