mpirunを使用してコアを割り当てる方法

mpirunを使用してコアを割り当てる方法

16コアのVPSで2つのプロセスを同時に実行しようとしています。各タスクで8つのコアを活用し、利用可能なコアの数を最大化したいと思います。

だから私は2つの別々のプロセスを次のように実行できると思いました。

$ mpirun -np 8 pmemd.MPI -O -i input_proc1.in -o output_proc1.out
$ mpirun -np 8 pmemd.MPI -O -i input_proc2.in -o output_proc2.out

これは、コア1〜8にプロセス1を配置し、コア9〜16にプロセス2を配置するように見えましたが、明らかにそうではありません.htop出力を調べてみると、両プロセスともコア1~8でいっぱいで、8つのコアが活用されないことがわかりました。

バックグラウンドでこれらのコマンドを実行し、一連のmpirunコマンドを別々の2つのフォルダにあるファイルに配置し、各コマンドを次のように実行します。

$ nohup ./runscript.sh < /dev/null > /dev/null 2>&1 &

実行する必要がある一連のプロセスを完了するには数日かかることがあるため、ログアウトした後にバックグラウンドで実行するようにしてください。

1つの作業に対して何とか8つのコア(1-8)を「予約」できる必要があると思います。その後、次のタスクを開始すると、タスクは残りの8つのコアを使用する必要がありますが、まだ使用できませんでした。次のメソッドは、目的の動作--bind-toオプションを実装します。これがOpenStack VPSマシンであるシステムと関係があるのか​​、それとも私が正しくしていないのかわかりません。

私はUbuntu 18.04.2 LTSを実行しているUbuntu VPSでmpirun(Open MPI)2.1.1を使用しています。

希望の動作を達成するためのフィードバックや提案をいただきありがとうございます。

ありがとう

ベストアンサー1

だからもっと深く掘り下げた後、私の質問に対する答えを見つけました。スタックオーバーフロー。私の目的のために、apt-get次のhwlocコマンドをインストールして利用可能なコアをマッピングし、lstopo -pコマンドを実行しました。

$ nohup mpirun --cpu-set 0-7 --bind-to core -np 8 pmemd.MPI [arguments]
$ nohup mpirun --cpu-set 8-15 --bind-to core -np 8 pmemd.MPI [arguments]

これは、最初のジョブを最初の8つのコアに正常にデプロイし、2番目のジョブを残りの8つのコアに正常にデプロイし、使用可能な16個のコアをすべて活用します。

後で誰かがこの質問を偶然見つけた場合に備えて、ここに答えを投稿すると思いました。

おすすめ記事