我用C++和OpenMP并行化了一个流体力学模拟。我使用英特尔的CPU,它有4个核心和8个线程来运行我的模拟。我注意到加速比比我预期的要大(见图)。

我预计使用4核CPU时使用8个线程的加速比应该小于或等于4,但加速比大于4.5。那件事怎么可能?理想曲线不是从(1,1)到(8,4)的直线吗?
发布于 2019-08-26 13:02:46
(8,4)是您应该看到的最小值(让我们忽略OS和其他进程)。如果您有4个核心,那么您应该能够使用所有它们,允许您处理4倍的数据。因为你有超线程,尽管你可能会做得更好。如果您的线程不是一直都很忙,那么您可以利用这个停机时间,在该核心上运行另一个线程。根据线程的繁忙程度,这可以是一个非常小的改进,也可以是一个非常大的改进。
将所有这些(8,4.5)结合在一起是一个非常可能的结果,而不高的原因是切换上下文需要时间,并且您有一个操作系统和其他运行的进程,在执行过程中还需要访问CPU。
https://stackoverflow.com/questions/57658303
复制相似问题