#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
руководства).