Parallellaでクラスタリング その5 Slurmで実行

前回の記事の最後に、srunコマンドで分散処理を実行してみました。出力を見てみると、4つの演算ノードでプロセス0〜4が生成されてしまっています。これは期待した挙動ではありません。各演算ノードはデュアルコアなのでそれぞれ2つのプロセスが実行され、全体として0〜7の計8つのプロセスとして実行されることを期待しています。

つまり、各プロセスの演算結果をプロセス0で集約できるようにしたい訳です。そうなるよう、srunから直接実行するのではなく、スクリプトを書いてバッチとして実行するようにしてみました。

$ vi slurm.sh
#!/bin/sh
#SBATCH -o slurm.output
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=2
mpirun parallella-examples/para-para/hello-mpi.elf

#SBATCHから始まる行は、sbatchへ渡すオプションとなります。ここでは

  • 標準出力の出力先をslurm.outputファイルへ
  • ノード数は4
  • 各ノードで実行されるタスク数は2

としています。その他のオプションについてはslurmのドキュメントを当たってみて下さい。それでは実行してみましょう。

$ sbatch slurm.sh
$ cat slurm.output 
Hello World from MPI Process 6 on machine parallella04
Hello World from MPI Process 7 on machine parallella04
Hello World from MPI Process 4 on machine parallella03
Hello World from MPI Process 5 on machine parallella03
Hello World from MPI Process 0 on machine parallella01
Hello World from MPI Process 1 on machine parallella01
Hello World from MPI Process 2 on machine parallella02
Hello World from MPI Process 3 on machine parallella02

期待通りの動作になりました 😉

Parallellaでクラスタリング その5 Slurmで実行」への1件のフィードバック

  1. ピンバック: Parallellaでクラスタリング その4 Slurmの導入 | CB1300SFのある生活

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です