【发布时间】:2015-02-02 19:52:19
【问题描述】:
如您所知,即使只有一个处理器具有一个内核,mpi 也可以运行一堆进程。假设我有一个双核单处理器。如果我使用mpiexec.mpich -np 2 ./out 运行程序,我如何确定工作分配给了两个内核?
【问题讨论】:
如您所知,即使只有一个处理器具有一个内核,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 页面上找到所有选项。有一些标志可以让您绑定到内核、硬件线程、套接字等。
【讨论】: