模拟的速度大于最佳速度

时间:2019-08-26 12:54:29

标签: c++ performance openmp

我用OpenMP并行化了C ++中的流体动力学模拟。我使用具有4个内核和8个线程的Intel CPU来运行仿真。我注意到加速比我预期的要大(见图片)。enter image description here

我希望在使用4核CPU时使用8个线程的加速应该小于或等于4。但是加速大于4.5。那怎么可能?理想曲线不是从(1,1)到(8,4)的直线吗?

1 个答案:

答案 0 :(得分:1)

(8,4)是您应该看到的最小值(让我们忽略操作系统和其他进程)。如果您有4个核心,则应该能够使用所有这些核心,从而可以处理4倍的数据。由于您具有超线程功能,因此可能会做得更好。如果您的线程不是一直忙,那么您可以利用停机时间购买在该内核上运行另一个线程。根据线程的繁忙程度,这可能是很小的改进,还是很大的改进。

将所有这些(8、4.5)放在一起是一个很可能的结果,它之所以没有更高的原因是切换上下文需要花费时间,并且您正在运行的OS和其他进程也需要访问在执行过程中需要CPU。