确保 mpi 在内核之间拆分工作

Being sure that mpi split work among cores

如您所知,即使只有一个处理器和一个内核,mpi 也可以 运行 一堆进程。假设我有一个双核单处理器。如果我 运行 一个带有 mpiexec.mpich -np 2 ./out 的程序,我怎么能确定工作被分成了两个核心?

确认您 运行 正在两个内核上运行的最简单方法可能是执行一些类似于紧缩 while 循环的操作,这会增加处理器的使用率:

#include <mpi.h>

int main(int argc, char** argv)
{
    MPI_Init(&argc, &argv);

    while(1) {}
}

然后您可以使用 top 之类的东西查看您的使用情况,以确保它符合您的预期。

如果您想对进程的位置进行细粒度控制 运行,MPICH 提供了一些选项让您可以做到这一点。您可以在 wiki 页面上找到所有选项。有一些标志可以让您绑定到内核、硬件线程、套接字等。