Torque ——> Slurm

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