天天看点

CUDA实践指南(四)

强大的规模和阿姆达尔定律:

对于固定的整体问题规模而言,强扩展是衡量解决方案的时间如何随着将更多处理器添加到系统中而降低的一种度量。 呈现线性强缩放的应用程序的加速比等于所用处理器的数量。

强大的缩放比例通常等同于Amdahl定律,它指定了通过并行化串行程序的部分可以预期的最大加速比。 从本质上讲,它表示一个程序的最大加速S是:$S=\frac{1}{(1-P)+\frac{P}{N}}$

这里P是可以并行化的代码部分占用的总串行执行时间的一部分,N是代码的并行部分运行的处理器的数量。

N越大(即处理器数量越多),P / N分数越小。 将N视为一个非常大的数字可能会更简单,它本质上将方程转换为。 现在,如果一个顺序程序的运行时间的3/4被并行化,那么串行代码的最大加速比为1 /(1 - 3/4)= 4。

实际上,大多数应用程序不具有完美的线性强缩放比例,即使它们表现出某种程度的强缩放比例。 对于大多数目的而言,关键点在于可并行化部分P越大,潜在的加速越大。 相反,如果P是一个很小的数字(意味着应用程序不是基本可并行化的),增加处理器的数量N对提高性能几乎没有作用。 因此,为了获得固定问题规模的最大加速比,花费在增加P上的努力是值得的,从而使可以并行化的代码量最大化。

弱缩放和Gustafson定律:

弱缩放比是衡量解决方案的时间如何随着更多处理器被添加到每个处理器具有固定问题大小的系统而变化的度量; 即,随着处理器数量的增加,整体问题的大小增加。

弱缩放通常等同于Gustafson定律,该定律表明在实践中,问题的大小随着处理器的数量而变化。 正因为如此,一个程序的最大加速S是:$S=N+(1-P)(1-N)$

这里P是可以并行化的代码部分占用的总串行执行时间的分数,N是代码的并行部分运行的处理器的数量。

查看Gustafson律的另一种方法是,随着我们扩大系统而不是执行时间,问题的大小不会保持不变。 请注意,Gustafson定律假设串行执行和并行执行的比率保持不变,这反映了设置和处理较大问题的额外成本。

应用强大和弱缩放:

了解哪种类型的缩放最适用于应用程序是估计加速的重要部分。 对于某些应用程序,问题的大小将保持不变,因此只有强大的缩放才适用。 一个例子是建模两个分子如何相互作用,其中分子大小是固定的。

对于其他应用程序,问题的大小将会增加以填充可用的处理器。 示例包括将流体或结构建模为网格或网格,以及一些蒙特卡洛模拟,其中增加问题尺寸可提高准确性。

了解了应用程序配置文件后,开发人员应该了解,如果计算性能发生变化,问题规模将如何变化,然后应用Amdahl或Gustafson定律来确定加速的上限。

继续阅读