1

PBS キューに送信するジョブがたくさんあり、出力は後でローカルで後処理されることになっています。ジョブは似ているので (手動でそれほど頻繁に変更したくありません)、ローカルで PBS ジョブ スクリプトを生成してからジョブを送信する bash スクリプトを自分で作成しました。私の質問は次のとおりです。PBS ジョブが終了するまで bash スクリプトを待機させてから、後処理を開始するにはどうすればよいですか? (ジョブのステータスを常にチェックすることはオプションではありません。) これを行うにはどのような可能性がありますか?

すべてのヒント、ヒント、または解決策に感謝します!

編集:コメント(感謝)に示されているように、いくつかの編集:

  • PBS = ポータブル バッチ システム
  • ドキュメントはこちらから入手できます: http://resources.altair.com/pbs/documentation/support/PBSProUserGuide12.1.pdf
  • 考えられる解決策について考えたところ、うまくいかない次の解決策を思いつきました。私の bash スクリプトは、ジョブのウォール クロック タイムとして要求された時間だけ待機することができました。ただし、複雑な問題が 2 つあります。1 つ目は、ジョブにそれほど時間がかからず、早期に終了する可能性があるため、bash スクリプトの待機時間が長すぎることです。次に、ジョブがキューに入れられ、すぐには実行されない可能性があるため、bash スクリプトの待機時間が短すぎる可能性があります。

編集 2: 以下に示すように常にインタラクティブに実行できるかどうかわからないので、次のことを考えました: 終了直前に PBS ジョブ スクリプトで (空の) ファイルを作成します。私のbashスクリプトは、(whileループを使用して)そのファイルが存在するかどうかを(たとえば)数分ごとにチェックします。存在する場合、ジョブが終了したことがわかり、作成したばかりの (空の) ファイルを削除することで後処理を開始できます。このように、最大​​数分の遅延しかなく、実際にはリソースは必要ありません。これは間違いなく理想的ではありませんが、一種の回避策です。より実用的なアイデアは高く評価されます。

PBS に直接関係なくても、どんな考えでも大歓迎です。

カリ

4

2 に答える 2

0

これは、私が別の質問に書いた回答に関連しています。キャンパスの高性能コンピューティング センターで数台のマシンにアクセスできます。少なくとも 1 つのクラスターでqsub、親 PBS スクリプトからの呼び出しが許可されています。これにより、このページで説明されているジョブ チェーンが可能になります。したがって、次のスケルトンのようなソリューションを使用できる場合があります。

# ...do your PBS stuff
# launch your code on the cluster that creates, say "JOBID.txt"
parallel -j0 mycode.sh

# you may need to use PBS environment variables to figure out what your output file is called
filename=$${PBS_JOBID%%.*}.txt # e.g., this would be like the JOBID.txt I wrote above

# next, use qsub to launch the post-processing script
echo "${PBS_O_WORKDIR}/postprocess.pbs $filename" | qsub

posprocess.pbs処理するファイル名を引数として取ります。私がリンクした回答では、これは終了時にPBS標準出力ファイルを別のファイルにコピーするのに役立ちました。-W depend=ただし、考えられる競合状態についてはわかりません。次のような qsub オプションを使用する必要がある場合があります(テストされていません)。

echo "-W depend=afterok:$PBS_JOBID postprocess.pbs $filename" | qsub
于 2014-01-17T22:06:44.420 に答える
0

PBSPro がこれをサポートしているとは思えませんが、TORQUE (別の PBS 派生物) には、興味があるかもしれない -x オプションがあります。次のようにジョブを送信できます。

qsub -I -x <executable>

これにより、ジョブがインタラクティブに実行され、実行可能ファイルが実行され、すべての出力がターミナルに送られ、実行可能ファイルが終了するとすぐにジョブが実行されます。その後、その時点で後処理を開始できます。PBSPro にも同様の機能があるかもしれませんが、ここで説明したのは TORQUE の場合です。

于 2013-08-23T17:16:35.000 に答える