弱与强大的加速和效率

时间:2013-05-23 15:08:46

标签: parallel-processing cluster-computing mpi scalability hpc

我有一个理论问题。如您所知,对于缩放分析,加速定义为S(N)= T(1)/ T(N)其中T(i)是i处理器的运行时间。然后将效率定义为E(N)= S / N.这些定义对于强缩放非常有意义。

现在,我尝试计算程序的弱缩放效率。在这种情况下,会出现以下问题:这些公式对于弱缩放是无意义的。弱扩展意味着处理器上的工作负载相同,处理器数量增加(因此总问题大小也会增加)。

使用上面的公式,一个完美的缩放程序将具有1的加速和1 / N的效率 - 粗略的完全不直观。

将弱缩放效率定义为E(N)= S(1)/ S(N)似乎更合适。 所以这是实际的问题:如何定义弱缩放效率?就像我说它会更有意义吗?

我试图找到它,但我得到的只是众所周知的公式,可能隐含地仅用于强缩放

1 个答案:

答案 0 :(得分:5)

如果假设计算所需的时间不应随着处理器数量的增加而增加 - 这可能仅在令人尴尬的并行问题中才会出现 - 弱缩放效率定义为E(N)= T(1) / T(N)。

例如,如果每次使用的处理器数量加倍,则执行时间增加T(1)的25%,则T(16)= T(1)+ .25 * 4 * T(1)= 2 * T(1)和E(16)= T(1)/ 2 * T(1)= 0.5或50%。

弱缩放研究中的“加速”没有意义。相反,随着处理器数量的增加,你会提到时间增加的百分比。

最后,一个小的,加速被定义为最着名的顺序算法的执行时间与并行实现的执行时间的比率。您正在使用的是可伸缩性。这是一个需要注意的重要事项,因为并行算法通常会使用顺序次优的实现。