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

时间:2012-10-17 22:13:16

标签: cluster-computing lsf

基本问题:我想将 N + 1个作业提交给LSF管理的Linux群集,其方式是( N + 1)-st“总结”作业在前面的所有 N 作业完成之前不会运行。

EXTRA: 如果可能,如果我可以安排事项( N ),那么理想 + 1)-st(“总结”)作业作为其第一个参数,如果所有先前的 N 作业成功终止,则接收值0(比如说),否则接收不同于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 [???]

1 个答案:

答案 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

并将这些与逻辑运算符&&,||,!

结合起来