タグ別アーカイブ: slurm

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でクラスタリング その4 Slurmの導入

前回の記事で3台以上のクラスタリングの構成ができましたが、より高度なリソース管理を行いたいと思います。分散処理のリソースマネージャとしてはTorqueの方が日本語情報が豊富なようですが、ここでは敢えてSlurmを使ってみたいと思います。

まず、管理ノード (兼演算ノード)にするparallella01にmungeをインストールします。インストールできたら/usr/sbin/create-munge-keyを実行してmungedを起動します。

$ sudo apt-get install munge
...
$ sudo /usr/sbin/create-munge-key
...
$ sudo /etc/init.d/munge start
 * Starting MUNGE munged
 ...fail!
munged: Error: Logfile is insecure: group-writable permissions set on "/var/log"

/va/logディレクトリに書き込み権限がないと怒っています。調べてみたところ、mungeのデフォルトオプションを指定してやればよいようです。

$ sudo vi /etc/default/munge
...
OPTIONS="--force"
$ sudo /etc/init.d/munge start
  * Starting MUNGE munged
    ...done.

無事にインストールできました。なお、OPTIONSには --syslog も指定できますが、/var/log以外にも色々と怒られるので --force で逃げるのが無難です。

続きを読む