3

次のような sbatch スクリプトを使用して slurm で実行する mpi ジョブがあります。

# request 384 processors across 16 nodes for exclusive use:
#SBATCH --exclusive
#SBATCH --ntasks-per-node=24
#SBATCH -n 384
#SBATCH -N 16
#SBATCH --time 3-00:00:00
mpirun myprog

「myprog」プロセスのメモリ/CPU 使用率とその他の動作を監視したいと考えています。これを実行できる簡単なスクリプト (「モニター」と呼びます) を作成しましたが、「myprog」と同時に、割り当てられた各ノードで sbatch を使用して 1 つのコピーを実行する方法に困惑しています。

上記を次のように変更する必要があると思います。

...
srun monitor
mpirun myprog

しかし、a)「モニター」がバックグラウンドで実行されることを意味するかどうか、およびb)「モニター」が実行される場所をどのように制御できるかについて、私は混乱しています。

4

1 に答える 1

1

「バックグラウンドで」実行してmonitor、実際にsrunはブロックせず、後続のコマンドを開始できるようにするには、末尾にmpirunアンパサンド ( ) を追加するだけです。&

srunプログラムが割り当ての「マスター ノード」で実行されるようにするには、コマンドを削除するだけです。

そのプログラムを特定のノードで実行する必要がある場合は、-n1 --nodelistオプションを使用します (おそらく、最初にすべての割り当てられたノードのリストを取得する必要があります)。また、監視プログラムに完全な CPU が割り当てられるのを避けるために、--overcommitオプションの使用を検討する必要があります。 srunCPU バウンドではないと思います。

于 2015-10-31T21:51:59.387 に答える