0

当我增加一个令人尴尬的并行线性问题的核心数量时(一个 for 循环,其中每次迭代都进行大量计算,都独立于其他迭代),效率降低(效率为 Ts/(p*Tp) )以某种方式线性尊重到核心数

我知道在实践中线程调度、操作系统和缓存问题会大大减慢实现速度。

我可以补充一点,我确实得到了加速,理论上的问题是线性加速,理论上随着 p 的增加效率为 1。

那么问题来了:随着处理器数量的增加,操作系统、线程调度、内存访问和其他类型的技术限制如何影响算法的效率????它应该影响吗?

4

3 回答 3

3

您可能正在考虑类似阿姆达尔定律的东西,但每个案例的具体情况很难确定。

于 2012-04-09T23:12:45.120 回答
1

您应该研究强大的缩放:

https://www.sharcnet.ca/help/index.php/Measuring_Parallel_Scaling_Performance#Strong_Scaling

由于您提到的所有因素,当您向问题添加更多核心时,您基本上会获得递减收益。

于 2012-04-09T23:19:03.567 回答
0

您的问题是 CPU 受限还是内存受限?您的系统架构是什么 - SMP 或 NUMA?您的处理器有多少缓存?您是否将线程绑定到核心?...

在任何人回答您的问题之前,需要考虑的参数太多。我建议您使用 Intel VTune Amplifier 或 Oracle Collector/Analyzer 之类的东西,以查看导致效率越来越低的原因和原因。

于 2012-05-04T22:49:42.533 回答