Я запускаю симуляции на машине, которая использует SLURM.Максимальное время на стене, которое я могу установить, составляет 24 часа, но моё моделирование займет намного больше времени (около 1 недели или около того).Я знаю, что, в принципе, я мог бы приостановить работу, которая перезапустит мое моделирование сразу после того, как предыдущая закончилась, просто запустив sbatch --dependency=afterok:xxxxxxxx batch_file
.Моя проблема в том, что если мое моделирование будет убито из-за времени стены, зависимость afterok
вернет мне ошибку DependencyNeverSatisfied
, и причина, по которой это происходит, явно указана в документации SLURM:
afterok:job_id[:jobid...]
Это задание можно начинать выполнять после успешного выполнения указанных заданий (выполнено до завершения с кодом завершения, равным нулю).
Если машина убивает мою работу из-за того, что время моделирования превышаетВ настенное время работа не будет заканчиваться нулевым кодом выхода (по крайней мере, до сих пор это был мой опыт).К сожалению, я не могу установить время моих тренировок так, чтобы они заканчивались ровно в течение 24 часов.Итак, вот мой вопрос.Есть ли способ, которым я могу сказать SLURM «Запустить задание xxx
только после того, от которого вы зависите, задание yyy
было убито только потому, что его время выполнения превысило время стены»?Что-то вроде afterwalltime
флага, если вы понимаете, о чем я.Я хочу указать, что afterany
не является опцией, потому что это может привести к потенциально опасному поведению (симуляции могут попытаться перезапуститься, даже если произошла какая-то ошибка и повредить выходные файлы).