1

qsub を使用してスケジュールされた、64 ノードの Sun Grid Engine クラスタのすべてのアクティブ ノードでジョブを実行したいと考えています。現在、同じために配列ジョブ変数を使用していますが、プログラムが同じノードで複数回スケジュールされることがあります。

qsub -t 1-64:1 -S /home/user/.local/bin/bash program.sh

すべてのノードで並行して、ノードごとに 1 つのジョブのみをスケジュールすることは可能ですか?

4

2 に答える 2

2

並列環境を使用できます。次を使用して並列環境を作成します。

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にコピーがあります)。

于 2013-10-30T10:31:26.150 に答える
0

あなたがbashターミナルを持っているなら、実行できます

for host in $(qhost | tail -n +4 | cut -d " " -f 1); do qsub -l hostname=$host program.sh; done
  • "-l hostname=" は、ジョブを実行するホストを指定します。
  • for ループは、qstat によって返された結果を繰り返し処理して各ノードを取得し、使用するホストを指定してコマンドを呼び出します。
于 2013-10-28T19:01:03.407 に答える