Slurm: Зачем нам нужен Srun в файле сценария Sbatch?

#slurm

#slurm

Вопрос:

Я новичок в Slurm, и я также нашел связанные вопросы по этой теме. Тем не менее, я все еще запутан в нескольких моментах использования srun. Согласно официальному документу, srun обычно сначала выделяет ресурсы, а затем запускает параллельные задания. Например, я хочу запустить 20 задач, и если я отправлю свою работу на основе следующего сценария, я не уверен, сколько задач будет создано. Потому что sbatch заботится только о выделении ресурсов, а не о выполнении программы.

 #!/bin/sh
#SBATCH -n 20
#SBATCH --mpi=pmi2
#SBATCH -o myoutputfile.txt
module load mpi/mpich-x86_64
mpirun mpiprogram < inputfile.txt
  

Если я пытаюсь запустить последовательную программу, подобную следующей, я не знаю, будет ли разница или нет. Например, я могу просто удалить команду srun в этом скрипте. Что произойдет?

 #!/bin/sh
#SBATCH -n 1
#SBATCH -N 1
srun tar zxf julia-0.3.11.tar.gz
echo "prefix=/software/julia-0.3.11" > julia/Make.user
cd julia
srun make
  

Ответ №1:

Первый пример породит 20 задач; sbatch запросит 20 процессоров, а также настроит среду так, чтобы mpirun знать, сколько процессоров было запрошено для задания. mpirun затем будет создано столько процессов, сколько было выделено (при условии, что OpenMPI был скомпилирован с поддержкой Slurm).

#SBATCH --mpi=pmi2 Часть предназначена для srun , поэтому она не будет иметь никакого эффекта, если srun не вызывается в сценарии отправки.

Во втором примере не будет разницы в количестве созданных процессов, поскольку требуется только один. Но, с srun , вывод sstat будет более надежным, управление сигналами будет более точным, а буферизация вывода будет более контролируемой (через параметры srun командной строки).

Если вы запрашиваете несколько задач, srun будет создано столько процессов. Это может быть программа MPI или последовательная программа, которая адаптирует свое поведение на основе SLURM_PROC_ID переменной среды.

Также вы можете запустить несколько srun в одном скрипте отправки. Затем каждый экземпляр srun (называемый «шагом») учитывается отдельно в accounting ( sacct ).

Наконец, srun можно использовать подмножество распределения и организовать микро-планирование множества небольших задач в одном задании (см. Пример на странице srun руководства).