===============================================================
Для того чтобы запустить задачу в 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