您能否提供一个具有强可扩展性但不具有弱可扩展性的算法示例?你也可以提供一个相反的例子吗?

计算科学 并行计算
2021-12-28 14:05:28
强缩放和阿姆达尔定律

强大的扩展性是衡量对于固定的整体问题大小,随着更多处理器添加到系统中,解决时间如何减少。表现出线性强扩展性的应用程序具有与使用的处理器数量相等的加速。

强大的缩放通常等同于阿姆达尔定律,它指定了通过并行化串行程序的部分可以预期的最大加速。本质上,它表明程序的最大加速比S是:

S=1(1P)+P/N

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

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

弱缩放和古斯塔夫森定律

弱扩展是衡量随着更多处理器添加到每个处理器的固定问题大小的系统中,求解时间如何变化的度量;即,随着处理器数量的增加,整体问题的大小也会增加。

弱缩放通常等同于古斯塔夫森定律,该定律指出,在实践中,问题的大小与处理器的数量成比例。因此,程序的最大加速比S为:

S=(1P)+NP

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

缩放后的加速是根据为缩放的问题大小完成的工作量计算的(与专注于固定问题大小的阿姆达尔定律相反)。或者说,当我们扩大系统时,保持不变的不是问题大小,而是执行时间

0个回答
没有发现任何回复~