如您所知,即使只有一个处理器和一个内核,mpi 也可以运行一堆进程。假设我有一个双核单处理器。如果我运行一个程序mpiexec.mpich -np 2 ./out
我怎么能确定工作被分成两个内核?
确认
您是否在两个内核上运行的最简单方法可能是执行诸如紧 while 循环之类的操作,这将增加处理器使用率:
#include <mpi.h>
int main(int argc, char** argv)
{
MPI_Init(&argc, &argv);
while(1) {}
}
然后,您可以使用类似top
的内容查看您的使用情况,以确保它是您所期望的。
如果您想对流程的运行位置进行细粒度控制,MPICH 可以选择让您这样做。您可以在维基页面上找到所有选项。有一些标志可以让你绑定到内核、硬件线程、套接字等。