我有一个理论上的问题。如您所知,为了进行缩放分析,将加速比定义为S(N)= T(1)/T(N),其中T(i)是使用i个处理器的运行时。然后将效率定义为E(N)= S/N。这些定义对于强缩放具有完全的意义。
现在,我尝试计算程序的弱缩放效率。在这种情况下,会出现以下问题:这些公式对于弱缩放毫无意义。弱扩展意味着,处理器上的工作负载相同,处理器数量增加了(因此总问题大小也增加了)。
使用上面的公式,完美缩放的程序将具有1的加速比和1/N的效率-粗略的计算是完全不直观的。
将弱缩放效率定义为E(N)= S(1)/S(N)似乎更合适。
因此,这是一个实际的问题:通常如何定义弱缩放效率?就像我说的那样会更有意义吗?
我试图找出答案,但我所得到的只是众所周知的公式,可能隐式地仅用于强大的缩放比例
最佳答案
如果您假设计算所需的时间不应该随着处理器数量的增加而增加-这仅在令人尴尬的并行问题中适用-弱缩放效率定义为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%。
弱规模研究中的“加速”没有意义。您指的是随着处理器数量的增加而增加的时间百分比。
最后,次要加速定义为最知名的顺序算法的执行时间与并行实现的执行时间之比。您正在使用的是可伸缩性。要注意这一点很重要,因为并行算法通常经常使用顺序次优的实现。
关于parallel-processing - 弱vs强扩展速度和效率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16717556/