8

基本的な問題: N  + 1 個のジョブを LSF で管理された Linux クラスターにサブミットしたいのですが、先行するN 個のジョブがすべて完了するまで ( N  + 1)-st の「ラップアップ」ジョブが実行されないようにします。

追加: 可能であれば、 ( N  + 1)-st (「ラップアップ」) ジョブが最初の引数として値 0 (たとえば) を受け取るように調整できれば理想的です。 N 個のジョブが正常に終了し、それ以外の場合は 0 以外の値。

この問題 (または少なくとも「基本的な問題」とラベル付けされた部分) は、 LSFが処理するように設計されているように見えるものよりもはるかに単純です。する。bsubbsub

この配置を実現するための最も簡単なbsubコマンドは何ですか?


より具体的には、???以下のさまざまなスロットを置き換えて、wrapupすべてのジョブが終了した後にのみ実行されるようにする必要がfooあります (理想的には、fooジョブの終了ステータスを反映する引数を使用して)。

bsub -q someq ??? foo 1
bsub -q someq ??? foo 2
bsub -q someq ??? foo 3
bsub -q someq ??? wrapup [???]
4

1 に答える 1

12

Michael Closson の回答を拡張するために、ここで探しているのは bsub の -w オプションです。これにより、依存関係の条件が満たされた場合にのみスケジュールされるジョブを送信できます。

使用する最も一般的な条件は、「foo $i」ジョブのそれぞれに -J を付けて名前を付ける場合、他のジョブの終了ステータスです。

bsub -q someq -J "job_1" foo 1
bsub -q someq -J "job_2" foo 2
bsub -q someq -J "job_3" foo 3

その後、次のように、これらのジョブの終了ステータスに応じて別のジョブを送信できます。

bsub -q someq -w "done(job_1) && done(job_2) && done(job_3)" wrapup

これにより、LSF は、job_1、job_2、および job_3 という名前のジョブが DONE ステータスで終了した場合にのみ「wrapup」をスケジュールするように指示されます。ジョブ名の代わりにジョブ ID を使用することも、テストする特定のステータスを次のような式で指定することもできます。

done("job_1")   // termination status is DONE
exit("job_1")   // termination status is EXIT
ended("job_1")  // termination status is EXIT or DONE

これらを論理演算子 &&、||、! と組み合わせます。

于 2013-09-11T16:35:17.690 に答える