【发布时间】:2016-10-11 20:45:20
【问题描述】:
我在简化一系列 SGE 网格作业时遇到了两难境地,这些作业之间有一些依赖关系,但还没有找到指定 -hold_jid 的正确方法。
假设我们有这样的工作:
job1: qsub -N job1 ...
job2: qsub -N job2 -hold_jid job1
job3: qsub -N job3 -hold_jid job2
那么保证执行顺序是job1->job2->job3。
但是,假设在复杂的 job2 中,有一个嵌入的 SGE 作业,比如 job2a:
job2a: qsub -N job2a.${timestamp_of_submission}
在这种情况下,我还没有找到一种方法来确保 job3 在 job2a 完成后运行。
尝试1:
qsub -N job3 -hold_jid job2 ...
那么肯定 job3 会等到 job2 完成,但是,不能保证 job3 会在 job2a 之后执行,这正是我想要的。
尝试2:
qsub -N job3 -hold_jid job2a* ...
然后 job3 似乎会立即执行,因为在 job2 开始运行之前,job2a 不会显示在作业数组中。注意我在上面使用* 来避免指定job2a 的确切名称,因为提交的时间戳很难事先猜到。
任何人都知道一种实现依赖链作为job1->job2->job2a->job3的方法吗? 谢谢!
【问题讨论】:
-
依赖关系是在提交时确定的,所以如果job3在job2a之前提交......这将是一个挑战。应该可以使用 qalter(可能在 job2 或任何创建 job2a 中)根据需要更改依赖关系。 gridscheduler.sourceforge.net/htmlman/htmlman1/qsub.html
标签: linux sungridengine