我正在使用MPI在異構計算系統上執行並行作業。我的網絡中的節點並不完全相同。我可以指定哪個主機在MPI程序中擁有哪個等級?
我想指定機器「A.univ.edu」有等級0和機器「B.univ.edu」有秩1
有什麼方法來指定的行列如何分配給主機在MPI中?
我正在使用MPI在異構計算系統上執行並行作業。我的網絡中的節點並不完全相同。我可以指定哪個主機在MPI程序中擁有哪個等級?
我想指定機器「A.univ.edu」有等級0和機器「B.univ.edu」有秩1
有什麼方法來指定的行列如何分配給主機在MPI中?
看起來至少的openmpi允許你指定一個rankfile
上面的例子是如下
rankfile.txt:
rank 0=A.univ.edu slot=0
rank 1=B.univ.edu slot=0
mpiexec -np 2 -H A.univ.edu,B.univ.edu -rf rankfile.txt executable.exe
http://mirror.its.dal.ca/openmpi/doc/v1.5/man1/mpiexec.1.php#sect9
您是否知道MPICH的類似機制? – mdiener
如果一切都失敗了,你可以隨時使用MPI_Comm_split
來創建一個新的溝通者,在這個溝通者中你的流程都具有所需的等級。在每個過程確定了其預期的等級(存儲在例如newRank
中)之後,對MPI_Comm_split(MPI_COMM_WORLD, 0, newRank, newComm)
的呼叫將在newComm
中以正確的順序創建通信器。然後,您可以在您的所有通訊電話中使用該通訊器而不是MPI_COMM_WORLD
。
'MPI_COMM_WORLD'中的等級分配由'mpiexec'控制。 MPI實現之間的細節有點不同,所以請參閱手冊頁。在兩臺主機的例子中,您只需按照machinefile中的順序列出它們即可。 –