mpi cpu 用法没有意义

mpi cpu usage doesn't make sense

我的windows系统有8个核心。

当我对我的 MPI 使用 8 CPUs 时:mpiexec.exe -n 8,我的所有 8 个可用处理器都在任务管理器中忙碌,这是有道理的。

当我使用 2 个核心时:mpiexec.exe -n 2,我预计只有 2 个核心应该忙碌,但事实并非如此,我的 CPU 使用分布在 8 个核心上。

这个观察是预期的吗?

是的,这种行为是预期的。通用操作系统,如(大多数版本)Windows 围绕核心移动进程。这样做的原因之一是为了确保没有进程缺少执行时间。不要忘记,在大多数 Windows 计算机上,将有各种进程 运行 与您的计算进程同时进行。使用任务管理器查看发生了什么,如果除了 2 运行 您的 MPI 程序之外还有数十个进程 运行,请不要感到惊讶。

所以,是的,有两个进程 运行 一个计算密集型程序,您可以预期核心使用是不规则的,但随着时间的推移平均为 2/8

当然,对于并行 MPI 程序的特殊情况,此行为可能会损害性能。一般来说,MPI 实现提供了一些方法来 'pin' 进程到核心。请查阅 MPI 实现的文档以了解如何执行此操作。但是,如果您发现性能实际上下降了,请不要感到惊讶