私の Mpi プログラムでは、ラウンド ロビン順でプロセスをスケジュールする必要があります。
8 つのノードを持つクラスターがあり、各クラスターにはクアッドコア プロセッサが搭載されています。Ubuntu Linux では mpich2-1.4.1p1 バージョンを使用しています。
この machinefile を使用する場合:
node01
node02
node03
node04
node05
node06
node07
node08
そして実行します:
mpiexec -np 10 -machinefile host ./my-program
適切なスケジューリングがあり、ランク 0 から node01、ランク 1 からノード 02、... ランク 8 からノード 01、最後にランク 9 からノード 02 です。
しかし、ランク 0 とランク 8 が同じコアで実行されているかどうかを知る必要があります。ランク 0 が node01 の最初のコアで動作し、ランク 8 が 2 番目のコアで動作する必要があります。
別の machinefile を使用する場合:
node01:4
node02:4
node03:4
node04:4
node05:4
node06:4
node07:4
node08:4
そして実行します:
mpiexec -np 10 -machinefile host2 ./my-program
node01 でランク 0,1,2,3 を実行しています。そして、私が欲しいものではありません。
Hydra が最初にノードでラウンド ロビンを使用し、次にこの 2 番目の machinefile を使用してコアで強制的に使用するにはどうすればよいですか?