MPIを使用して、ヘテロジニアスコンピューティングシステム上で並列ジョブを実行しています。私のネットワークのノードはすべて同一ではありません。
マシン「A.univ.edu」のランクが0で、マシン「B.univ.edu」のランクが1であることを指定したいと思います。
MPIでホストにランクを割り当てる方法を指定する方法はありますか?
MPIを使用して、ヘテロジニアスコンピューティングシステム上で並列ジョブを実行しています。私のネットワークのノードはすべて同一ではありません。
マシン「A.univ.edu」のランクが0で、マシン「B.univ.edu」のランクが1であることを指定したいと思います。
MPIでホストにランクを割り当てる方法を指定する方法はありますか?
少なくともOpenMPIではランクファイルを指定できるようです
上記の例は次のようになります
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
他のすべてが失敗した場合は、いつでも使用MPI_Comm_split
して、プロセスがすべて目的のランクを持つ新しいコミュニケーターを作成できます。各プロセスが目的のランク(たとえば、に格納されているnewRank
)を決定した後、を呼び出すと、適切な順序でMPI_Comm_split(MPI_COMM_WORLD, 0, newRank, newComm)
コミュニケーターが作成されます。その後、すべてのコミュニケーションコールnewComm
の代わりに、そのコミュニケーターを使用できます。MPI_COMM_WORLD
「-rank-bynode」スイッチを使用できます。これにより、ホストが指定された順序でプロセスがマップされます。