sbatch + srun: большое количество однопоточных заданий - PullRequest
0 голосов
/ 24 января 2020

Здравствуйте, дружелюбные люди,

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

Уже более недели я пытаюсь отправить тысячи однопоточных заданий для научной работы c Эксперимент с использованием sbatch и srun.

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

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

Мой скрипт 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?

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

1 Ответ

0 голосов
/ 24 января 2020

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

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

wait 5s

Команда 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...