5

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

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

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

将弱缩放效率定义为 E(N) = S(1) / S(N) 似乎更合适。所以这是一个实际的问题:通常如何定义弱扩展效率?就像我说的那样更有意义?

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

4

1 回答 1

4

如果您假设计算所需的时间不应该随着处理器数量的增加而增加——这可能只适用于令人尴尬的并行问题——弱扩展效率定义为 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%。

弱扩展研究中的“加速”没有意义。相反,您指的是随着处理器数量的增加而增加的时间百分比。

最后,一个较小的加速比定义为最著名的顺序算法的执行时间与并行实现的执行时间之比。您正在使用的是可扩展性。这是需要注意的重要事项,因为并行算法经常使用顺序次优的实现。

于 2013-05-26T17:14:55.183 回答