7

現在、「ペイロード」プログラムの数千のインスタンスを実行し、出力の後処理を行うドライバー プログラムがあります。shell()ドライバーは現在、関数を使用して、複数のスレッドからペイロード プログラムを直接呼び出します。このshell()関数は、現在の作業ディレクトリでコマンドを実行し、コマンドの実行が完了するまでブロックし、コマンドによって stdout に送信されたデータを返します。これは、単一のマルチコア マシンでうまく機能します。qsub並列処理を増やすために、ドライバーを変更して、代わりに大規模な計算クラスターにジョブを送信したいと考えています。

qsubコマンドの結果をファイルではなく stdout に出力し、ジョブが完了するまでブロックする方法はありますか? 基本的に、コマンドの「通常の」実行と同じように動作するようにして、ドライバー プログラムをできるだけ変更せずにクラスターに並列化できるようにします。

編集: すべてのグリッド エンジンはほぼ標準化されていると思いました。そうでなくても問題ない場合は、Torque を使用しています。

4

3 に答える 3

4

使用しているキューシステムについては言及していませんが、SGE は qsub の「-sync y」オプションをサポートしています。これにより、ジョブが完了するか終了するまでブロックされます。

于 2011-05-12T20:19:08.413 に答える
2

TORQUE では、これは -x および -I オプションを使用して行われます。qsub -I はインタラクティブであることを指定し、-x は指定されたコマンドのみを実行することを示します。例えば:

qsub -I -x myscript.sh

myscript.sh が実行を終了するまで戻りません。

于 2012-03-13T22:36:46.443 に答える
1

PBSで使用できますqsub -Wblock=true <command>

于 2016-09-16T06:15:39.717 に答える