qsub を使用してスケジュールされた、64 ノードの Sun Grid Engine クラスタのすべてのアクティブ ノードでジョブを実行したいと考えています。現在、同じために配列ジョブ変数を使用していますが、プログラムが同じノードで複数回スケジュールされることがあります。
qsub -t 1-64:1 -S /home/user/.local/bin/bash program.sh
すべてのノードで並行して、ノードごとに 1 つのジョブのみをスケジュールすることは可能ですか?
qsub を使用してスケジュールされた、64 ノードの Sun Grid Engine クラスタのすべてのアクティブ ノードでジョブを実行したいと考えています。現在、同じために配列ジョブ変数を使用していますが、プログラムが同じノードで複数回スケジュールされることがあります。
qsub -t 1-64:1 -S /home/user/.local/bin/bash program.sh
すべてのノードで並行して、ノードごとに 1 つのジョブのみをスケジュールすることは可能ですか?
並列環境を使用できます。次を使用して並列環境を作成します。
qconf -ap "parallel_environment_name"
「allocation_rule」を 1 に設定します。これは、すべてのプロセスが異なるホストに存在する必要があることを意味します。次に、配列ジョブを送信するときに、並列環境で使用するノードの数を指定します。あなたの場合:
qsub -t 1-64:1 -pe "parallel_environment_name" 64 -S /home/user/.local/bin/bash program.sh
詳細については、次のリンクを確認してください: http://linux.die.net/man/5/sge_peおよびDanT の Grid ブログの新しい並列環境の構成(リンクは機能しなくなりました。wayback マシンとsoftpanoramaにコピーがあります)。
あなたがbashターミナルを持っているなら、実行できます
for host in $(qhost | tail -n +4 | cut -d " " -f 1); do qsub -l hostname=$host program.sh; done