模拟加速大于最佳
Speedup of simulation is greater than optimum
我用 C++ 和 OpenMP 并行进行了流体动力学模拟。我使用具有 4 个内核和 8 个线程的 Intel CPU 来 运行 我的模拟。我注意到加速比我预期的要大(见图)。
我希望使用4核时使用8线程的加速比CPU应该小于或等于4。但加速比大于4.5。这怎么可能?理想的曲线不就是从(1,1)到(8,4)的直线吗?
(8, 4) 是您应该看到的最小值(让我们忽略 OS 和其他进程)。如果您有 4 个内核,那么您应该能够使用所有这些内核,从而让您处理 4 倍的数据。由于您拥有超线程,因此您可能会做得更好。如果您的线程并非一直很忙,那么您可以利用停机时间在该核心上购买 运行 另一个线程。根据线程的繁忙程度,这可能是非常小的改进,也可能是非常大的改进。
将所有这些放在一起 (8, 4.5) 是一个非常可能的结果,它不更高的原因是切换上下文需要时间,并且您有一个 OS 和其他过程 运行 在执行期间还需要访问 CPU。
我用 C++ 和 OpenMP 并行进行了流体动力学模拟。我使用具有 4 个内核和 8 个线程的 Intel CPU 来 运行 我的模拟。我注意到加速比我预期的要大(见图)。
我希望使用4核时使用8线程的加速比CPU应该小于或等于4。但加速比大于4.5。这怎么可能?理想的曲线不就是从(1,1)到(8,4)的直线吗?
(8, 4) 是您应该看到的最小值(让我们忽略 OS 和其他进程)。如果您有 4 个内核,那么您应该能够使用所有这些内核,从而让您处理 4 倍的数据。由于您拥有超线程,因此您可能会做得更好。如果您的线程并非一直很忙,那么您可以利用停机时间在该核心上购买 运行 另一个线程。根据线程的繁忙程度,这可能是非常小的改进,也可能是非常大的改进。
将所有这些放在一起 (8, 4.5) 是一个非常可能的结果,它不更高的原因是切换上下文需要时间,并且您有一个 OS 和其他过程 运行 在执行期间还需要访问 CPU。