基本问题:我想将 N + 1个作业提交给LSF管理的Linux群集,其方式是( N + 1)-st“总结”作业在前面的所有 N 作业完成之前不会运行。
EXTRA: 如果可能,如果我可以安排事项( N ),那么理想 + 1)-st(“总结”)作业作为其第一个参数,如果所有先前的 N 作业成功终止,则接收值0(比如说),否则接收不同于0的值
这个问题(或至少标有“BASIC PROBLEM”的部分)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 [???]
答案 0 :(得分: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
然后,您可以提交另一个取决于这些作业退出状态的作业,如下所示:
bsub -q someq -w "done(job_1) && done(job_2) && done(job_3)" wrapup
如果名为job_1,job_2和job_3的作业以DONE状态终止,则告诉LSF仅安排“换行”。您还可以使用作业ID而不是作业名称,或使用
等表达式指定要测试的特定状态done("job_1") // termination status is DONE
exit("job_1") // termination status is EXIT
ended("job_1") // termination status is EXIT or DONE
并将这些与逻辑运算符&&,||,!
结合起来