sbatch + srun: большое количество однопоточных заданий

Привет дружелюбные люди,

мой вопрос довольно конкретный.

Более недели я пытаюсь отправить тысячи однопоточных заданий для научного эксперимента с использованием sbatch и srun.

Проблема в том, что для выполнения этих заданий может потребоваться разное количество времени, а некоторые из них могут даже быть прерваны из-за превышения лимита памяти. Оба поведения нормальны, и моя оценка с этим справляется.

Но я столкнулся с проблемой, что некоторые задания никогда не запускаются, даже если они были отправлены.

Мой сценарий sbatch выглядит так:

#!/usr/bin/bash
#SBATCH --nodes=4
#SBATCH --tasks-per-node=12
#SBATCH --mem-per-cpu=10000

for i in {1..500}
do

   srun -N1 -n1 -c1 --exclusive --time=60 ${mybinary} $i &   
   wait 5s

done

Теперь в моем журнале ошибок отображается следующее сообщение:

srun: Job 1846955 step creation temporarily disabled, retrying

1) Что означает «создание шага временно отключено»? Все ЦП заняты, а задание пропущено или оно запускается снова позже, когда ресурсы освободятся?

2) Почему некоторые из моих работ не выполняются и как это исправить? Я использую правильные параметры для srun?

Спасибо за вашу помощь!


person Perhalo    schedule 24.01.2020    source источник


Ответы (1)


srun: создание шага задания 1846955 временно отключено, повторная попытка

Это нормально, вы резервируете 4 x 12 ЦП и запускаете 500 экземпляров srun. Только 48 экземпляров будут запущены, а другой выведет это сообщение. Каждый раз, когда запущенный экземпляр останавливается, запускается ожидающий экземпляр.

подождите 5 секунд

Команда wait используется для ожидания процессов, а не в течение определенного времени. Для этого используйте команду sleep. Команда wait должна находиться в конце скрипта. В противном случае задание могло быть остановлено до завершения всех srun экземпляров.

Итак, сценарий должен выглядеть так:

#!/usr/bin/bash
#SBATCH --nodes=4
#SBATCH --tasks-per-node=12
#SBATCH --mem-per-cpu=10000

for i in {1..500}
do

   srun -N1 -n1 -c1 --exclusive --time=60 ${mybinary} $i &   

done
wait
person damienfrancois    schedule 24.01.2020
comment
Спасибо, я почти уверен, что проблема заключалась в пропавшем последнем заявлении об ожидании! - person Perhalo; 26.01.2020
comment
Если вы считаете, что этот ответ решает вашу проблему, примите его - person damienfrancois; 27.01.2020