Как обновить номер узла задания в Slurm?
У меня есть ожидающая работа, и я хочу изменить ее размер. Я старался:
scontrol update job <jobid> NumNodes=128
Это не работает.
Примечание: я могу изменить время на стене, используя scontrol
, Но когда я пытаюсь изменить количество узлов, это не удалось. Похоже, что я могу изменить узлы в соответствии с этой страницей http://www.nersc.gov/users/computational-systems/cori/running-jobs/monitoring-jobs/.
2 ответа
Вот решение, которое я получил от службы поддержки NERSC (Кредиты Ву-Сунь Яну в LBNL):
$ scontrol update jobid=jobid numnodes=new_numnodes-new_numnodes
Например $ scontrol update jobid=12345 numnodes=10-10
Хитрость заключается в том, чтобы иметь numnodes в вышеуказанном формате. Это работает как для сокращения, так и для расширения ваших узлов.
Вы можете изменить размер заданий в Slurm при условии, что задание находится в состоянии ожидания или выполняется.
В соответствии с FAQ вы можете изменить размер, выполнив следующие шаги (с примерами):
расширять
Предполагая, что j1 запрашивает 4 узла и передается с:
$ salloc -N4 bash
Отправьте новое задание (j2) с количеством дополнительных узлов для j1 (в данном случае 10 для всего 14 узлов) и сделайте его зависимым от j1 (SLURM_JOBID):
$ salloc -N10 --dependency=expand:$SLURM_JOBID
Освободите узлы j2:
$ scontrol update jobid=$SLURM_JOBID NumNodes=0
Завершить J2:
$ exit
Назначьте j1 предыдущие освобожденные узлы:
$ scontrol update jobid=$SLURM_JOBID NumNodes=ALL
И обновите переменные среды j1:
$ ./slurm_job_$SLURM_JOBID_resize.sh
Теперь у j1 14 узлов.
Сокращаться
Предполагая, что j1 был представлен с:
$ salloc -N4 bash
Обновите j1 до нового размера:
$ scontrol update jobid=$SLURM_JOBID NumNodes=2 $ scontrol update jobid=$SLURM_JOBID NumNodes=ALL
И обновите переменные среды j1 (сценарий создан предыдущими командами):
$ ./slurm_job_$SLURM_JOBID_resize.sh
Теперь у j1 есть 2 узла.