在运行MPI程序之前,首先用命令mpdtrace查看一下当前集群的运行状况,如果集群没有启动,需要用如下命令启动集群:
mpdboot -n 4 -f ~/mpd.hosts
我的集群是由node1、node2、node3、node4四台机器组成的。
对于如下MPI程序,编译后生成可执行文件test:
#include <stdio.h> #include <mpi.h> int main(int argc, char **argv) { int myid, numprocs; char host[10]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); gethostname(host, 10); printf("I am %d of %d at %s\n", myid, numprocs, host); MPI_Finalize(); return 0; }
-n 1 -host node1 ./test -n 1 -host node2 ./test -n 1 -host node1 ./test -n 1 -host node4 ./test -n 1 -host node3 ./test -n 1 -host node3 ./test
mpiexec -configfile pgfile
I am 0 of 6 at node1 I am 3 of 6 at node4 I am 2 of 6 at node1 I am 5 of 6 at node3 I am 1 of 6 at node2 I am 4 of 6 at node3
配置文件中的每一行都指定产生一个进程,并且第一行产生0号进程,第二行产生1号进程,后面依次类推,如果想将某个进程绑定在某个节点上执行,就需要将主机名写在进程号所属的那一行。
原文:http://blog.csdn.net/warren912/article/details/19977209