MPI程序的運行命令

本博客已遷往http://coredumper.cn


在運行MPI程序之前,首先用命令mpdtrace查看一下當前集羣的運行狀況,如果集羣沒有啓動,需要用如下命令啓動集羣:

mpdboot -n 4 -f ~/mpd.hosts

我的集羣是由node1、node2、node3、node4四臺機器組成的。


由於MPI程序通常需要將各個進程指定給相應的機器節點來執行,所以MPI程序的運行命令會有比較長的參數,可以將這些參數寫入一個配置文件,然後再執行這個配置文件。下面舉例說明。


對於如下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;
}

如下是針對上述程序的配置文件pgfile:

-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號進程,後面依次類推,如果想將某個進程綁定在某個節點上執行,就需要將主機名寫在進程號所屬的那一行。

發佈了85 篇原創文章 · 獲贊 9 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章