LSF(bsub):如何指定在所有其他人完成后运行的单个"总结"作业?

kjo*_*kjo 6 cluster-computing lsf

基本问题:我想将N  + 1个作业提交给LSF管理的Linux集群,这样 就可以在前N个作业完成之前不运行(N + 1)-st"总结"作业.

EXTRA: 如果可能的话,如果我可以安排事情以便(N  + 1)-st("总结")作业作为其第一个参数接收值为0(比如说,如果以前的话),那将是理想N个作业成功终止,否则值不同于0.

这个问题(或者至少标有"BASIC PROBLEM"的部分)比LSF 设计用来处理的要简单得多bsub,所以我很难浏览大量的文档bsub来找出做我想做的最简单的方法.去做.

bsub实现这种安排最简单的命令是什么?


更具体地说,我需要更换???下面的各个插槽以确保wrapup仅在所有foo作业完成后执行(理想情况下使用反映foo作业结束状态的参数)?

bsub -q someq ??? foo 1
bsub -q someq ??? foo 2
bsub -q someq ??? foo 3
bsub -q someq ??? wrapup [???]
Run Code Online (Sandbox Code Playgroud)

Squ*_*rel 10

为了扩展Michael Closson的答案,你在这里寻找的是bsub的-w选项,它允许你提交一个只有在满足一些依赖条件时才会被安排的工作.

如果用-J命名每个"foo $ i"作业,最常用的条件是其他作业的退出状态:

bsub -q someq -J "job_1" foo 1
bsub -q someq -J "job_2" foo 2
bsub -q someq -J "job_3" foo 3
Run Code Online (Sandbox Code Playgroud)

然后,您可以提交另一个取决于这些作业退出状态的作业,如下所示:

bsub -q someq -w "done(job_1) && done(job_2) && done(job_3)" wrapup
Run Code Online (Sandbox Code Playgroud)

这告诉LSF仅在名为job_1,job_2和job_3的作业以DONE状态终止时才安排"换行".您还可以使用作业ID而不是作业名称,或使用表达式指定要测试的特定状态

done("job_1")   // termination status is DONE
exit("job_1")   // termination status is EXIT
ended("job_1")  // termination status is EXIT or DONE
Run Code Online (Sandbox Code Playgroud)

并将这些与逻辑运算符&&,||,!组合在一起!