===============================================================
Для того чтобы запустить задачу в Slurm необходимо создать специальный скрипт и отправить в очередь с помощью команды sbatch
. В скрипте указывается информация о необходимых ресурсах (число узлов кластера, количество ядер процессора, необходимое количество оперативной памяти и необходимое время). В остальном этот скрипт является обычным bash-скриптом, в нем можно настроить нужные переменные окружения и запустить необходимую программу. Этот скрипт будет запущен лишь на одном ядре из выделенного списка.
Параметры в скриптах:
Torque | Slurm |
---|---|
#PBS -N myjob |
#SBATCH --job-name=myjob |
#PBS -l walltime=1:00:00 |
#SBATCH --time=1:00:00 |
#PBS -l nodes=N:ppn=M |
#SBATCH --nodes=N --ntasks-per-node=M |
#PBS -l mem=Xgb |
#SBATCH --mem=Xgb |
#PBS -l pmem=Xgb |
#SBATCH --mem-per-cpu=Xgb |
#PBS -q queue |
#SBATCH --partition queue |
Команды:
Torque | Slurm |
---|---|
qsub <jobscript> |
sbatch <jobscript> |
qdel <jobid> |
scancel <jobid> |
qhold <jobid> |
scontrol hold <jobid> |
qrls <jobid> |
scontrol release <jobid> |
qstat -u <user> |
squeue -u <user> |
pbstop |
slurmtop |
Основные параметры команды sbatch
:
-D path
или--chdir=path
Определяет рабочую директорию для задания. Если не задана, то рабочей является текущая директория.-e path/file
или--error=path/file
-o path/file
или--output=path/file
Задаются имена файлов ошибок (stderr
), и стандартного вывода (stdout
). По умолчанию оба вывода объединяются в один файлslurm-<job_id>.out
в текущей директории.--mail-type=NONE,FAIL,BEGIN,END,ALL и др.
События, при которых отправлять уведомления по e-mail:NONE
– не отправлять уведомления,FAIL
— в случае аварийного прекращения задачи,BEGIN
— в момент запуска задачи,END
— в момент завершения задачи,n
— не отправлять уведомления. Можно указать несколько событий через запятую.--mail-user=e-mail
Адрес получателя уведомлений. По умолчанию — хозяин задачи.-J name
или--job-name=name
Определяет имя задачи.-p queue
или--partition=queue
-n N
или--ntasks=N
ЗапрашиваетN
процессов для задачи.-N N
или--nodes=N
ЗапрашиваетN
вычислительных узлов для задачи.--nodes=N --ntasks-per-node=M
ЗапрашиваетN
вычислительных узлов, иM
процессов на каждом узле.--cpus-per-task=N
Дополнительно запрашиваетN
процессорных ядер на каждый процесс. По умолчанию выделяется одно ядро на процесс.--mem=size
Запрашивает необходимую память на каждом узле. Размер указывается с помощью целого числа и суффикса:K
,M
,G
. Например,--mem=16G
запросит 16 Гб памяти на каждом узле.-t time
или--time=time
Ограничивает максимальное время выполнения задачи. По истечении этого времени программа будет завершена. Значение указывается в минутах, либо в одном из форматовММ:CC
,ЧЧ:ММ:СС
,ДД-ЧЧ
. По умолчанию устанавливается значение 1 час.-C list
или--constraint=list
Указывает дополнительные ограничения на выделяемые узлы. Список может содержать несколько элементов, перечисленных через запятую.
Переменные окружения, которые устанавливает Slurm:
SLURM_SUBMIT_DIR
Директория, в которой находился пользователь во время отправки задачи в очередь.SLURM_JOB_ID
Уникальный номер задачи.SLURMD_NODENAME
Текущий узел, на котором запущен скрипт.SLURM_NTASKS
Количество выделенных процессорных ядер.
Наиболее часто используемые команды SLURM:
sbatch
, srun
— для отправки задания
scancel
— для отмены задания
Информационные:
sinfo
— сообщает о состоянии разделов и узлов;
sstat
— сообщает о ресурсах задания;
squeue
— о состоянии заданий или этапах задания.
Команда squeue -u user
покажет только задачи пользователя user
. Текущее состояние задачи отмечено в столбце ST.
- PD — задача находится в очереди, ждет освобождения ресурсов.
- R — задача в данный момент выполняется.
В столбце NODELIST перечислены узлы, выделенные для задачи. С помощью команды squeue -l
можно также увидеть запрошенное время для каждой задачи, а с помощью squeue --start
можно узнать ожидаемое время запуска задачи.
Для просмотра списка пользователей, которые могут пользоваться очередями, можно использовать команду:
sacctmgr show users
(Используйте команду «man command» для получения подробного описания )
Пример:
#!/bin/bash
#SBATCH —job-name simple
#SBATCH —nodes=1
#SBATCH —time=02:00
echo «Start date: $(date)»
pwd
echo » End date: $(date)»
Отправка задачи :
sbatch simple.sh
Строчки, начинающиеся с #SBATCH
, содержат параметры для команды sbatch
. Эти параметры можно также указывать явно, если использовать командную строку для запуска задания:
sbatch --job-name simple --nodes=1 --time=5:00 simple.sh