8

基本问题:我想将N  + 1 个作业提交到 LSF 管理的 Linux 集群,这样在 所有前面的N个作业完成之前, ( N + 1)-st "wrap-up" 作业不会运行。

额外: 如果可能的话,如果我能安排一些事情,这样 ( N  + 1)-st ("wrap-up") 作业的第一个参数接收值 0(比如说),那将是理想的N个作业成功终止,否则值为不同于 0 的值。

这个问题(或至少标有“基本问题”的部分)比 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 [???]
4

1 回答 1

12

为了扩展 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

这告诉 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

并将它们与逻辑运算符 &&、||、!

于 2013-09-11T16:35:17.690 回答