Начать работу, когда предыдущий был убит из-за времени стены (SLURM) - PullRequest
0 голосов
/ 06 апреля 2019

Я запускаю симуляции на машине, которая использует SLURM.Максимальное время на стене, которое я могу установить, составляет 24 часа, но моё моделирование займет намного больше времени (около 1 недели или около того).Я знаю, что, в принципе, я мог бы приостановить работу, которая перезапустит мое моделирование сразу после того, как предыдущая закончилась, просто запустив sbatch --dependency=afterok:xxxxxxxx batch_file.Моя проблема в том, что если мое моделирование будет убито из-за времени стены, зависимость afterok вернет мне ошибку DependencyNeverSatisfied, и причина, по которой это происходит, явно указана в документации SLURM:

afterok:job_id[:jobid...] Это задание можно начинать выполнять после успешного выполнения указанных заданий (выполнено до завершения с кодом завершения, равным нулю).

Если машина убивает мою работу из-за того, что время моделирования превышаетВ настенное время работа не будет заканчиваться нулевым кодом выхода (по крайней мере, до сих пор это был мой опыт).К сожалению, я не могу установить время моих тренировок так, чтобы они заканчивались ровно в течение 24 часов.Итак, вот мой вопрос.Есть ли способ, которым я могу сказать SLURM «Запустить задание xxx только после того, от которого вы зависите, задание yyy было убито только потому, что его время выполнения превысило время стены»?Что-то вроде afterwalltime флага, если вы понимаете, о чем я.Я хочу указать, что afterany не является опцией, потому что это может привести к потенциально опасному поведению (симуляции могут попытаться перезапуститься, даже если произошла какая-то ошибка и повредить выходные файлы).

1 Ответ

2 голосов
/ 06 апреля 2019

Одной из опций являются опции afternok / afterany, но вы уже отказались от них из-за проблем с другими причинами задания. Но вы можете добавить проверку в начале скрипта, чтобы проверить, все ли файлы в порядке, и только в этом случае продолжить.

Наиболее распространенный способ справиться с этой ситуацией - это подготовить и запустить симуляцию, которая, как вы ожидаете, продлится 23 часа, запросить время на стене 24 и запустить столько заданий, сколько необходимо (связанных с afterok зависимостями) для получить ваши окончательные результаты.

...