У меня есть дилемма оптимизации последовательности заданий сетки SGE, которые имеют определенную зависимость от них, но не выяснили правильный способ указания -hold_jid
.Зависимость задания сетки SGE
Предположим, у нас есть рабочие места, такие как:
job1: qsub -N job1 ...
job2: qsub -N job2 -hold_jid job1
job3: qsub -N job3 -hold_jid job2
то порядок исполнения гарантированно будет job1-> job2-> job3.
Однако предположим, что в сложной job2, есть встроенный ПГОС работу, скажем, job2a:
job2a: qsub -N job2a.${timestamp_of_submission}
В этом случае, я не понял, способ, чтобы убедиться, пробег job3 после job2a завершается.
attempt1:
qsub -N job3 -hold_jid job2 ...
Тогда, конечно, job3 ждет, пока job2 заканчивается, однако, нет никакой гарантии, что job3 будет выполняться после того, как job2a, что и я хотел.
attempt2:
qsub -N job3 -hold_jid job2a* ...
затем job3, кажется, выполняется сразу, так как job2a не отображается в массиве заданий, пока job2 не начнет работать. Примечание. Я использовал *
, чтобы избежать указания точного имени job2a, потому что временная метка представления трудно догадаться заранее.
Любой знает способ достижения цепочки зависимостей как job1-> job2-> job2a-> job3? Спасибо!
спасибо, но это не работает для меня: в моем случае, я попытался -hold_jid job2, job2a *, потому что на самом деле существует несколько суб-заданий для job2a , все с тем же префиксом 'job2a'. Во время выполнения job3 дождался завершения job2, но не дождался завершения каких-либо заданий job2a *. – galactica
Чтобы уточнить, вы добавили все id задания job2a в параметр '-hold_jid', или вы использовали подстановочный знак (' * ')? – Vince
Я использовал подстановочный знак, потому что невозможно перечислить все имена заданий «на лету», т. Е. Список временных меток представления – galactica