• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Запуск задач


Основные правила выполнения расчетов на суперкомпьютере:

  1. На головным сервере (sms) можно выполнять лишь такие запуски, которые не требует значимых вычислительных ресурсов: компиляция, сборка, тесты запуска и т.п.
  2. Все вычислительные задачи должны выполняться только на вычислительных узлах.
  3. Все задачи пользоваталей выполняются через систему очередей с использованием менедежа Slurm (описывается далее).

Базовые команды, необходимые для работы с очередью задач:

sbatch - позволяет запустить задачу в "пакетном" режиме (с возможностью полной подготовки окружения и тп), приоритетный способ;
srun 
- позволяет выполнить задачу в интерактивном режиме, обычно используется для отладки;
squeue
- отобразить все задачи в очереди;
mj - отобразить состояние только своих задач;
scancel <job_id> - отменить указанную (свою) задачу;



Запуск задачи с помощью sbatch:

Общий синтаксис запуска следующий: sbatch [опции] <script_name>  или sbatch [опции] --wrap="команда запуска"

Синтаксис скрипта для передачи в sbatch (параметр <script_name>):

#!/bin/bash
#SBATCH <ключ sbatch> <значение>

#SBATCH <ключ sbatch> <значение> 

<пользовательские команды>

<пользовательские команды>

* ключи опций могут быть как переданы в опциях команды, так и указаны в самом скрипте (#SBATCH ...)

Например, для запуска python-расчета, требующего подготовки окружения:

#!/bin/bash
#SBATCH -c 4 -G 2
#SBATCH --output=result.out

module load Python/Anaconda_v11.2021 # подгрузим системное окружение на базе Anaconda
python /home/testuser/my_numpy_task.py # запускаем расчет привычным способом

Если для выполнения задачи не требуется каких-то подготовительных действий, скрипт можно не писать, а выполняемую команду "обернуть" через опцию "--wrap", например:

sbatch -n 1 -c 2 --wrap="/home/testuser/my_program arg1 arg2"


Запуск задачи с помощью srun:

srun, в отличие от sbatch, выполняет задачу интерактивно - т.е. можно перенаправить ввод и вывод или напрямую взаимодействовать с программой через консоль.

Принцип выделения аналогичный, за тем исключением, что в очередь ставится задача на выделение ресурсов, а не сам расчет. А уже после выделение необходимых для запуска ресусрсов и начинается интерактивное выполнение программы.

Важной особенность srun является возможность автоматического управления пуллом MPI-процессов. Например, вместо запуска mpi программы привычным путем вида

"mpirun my_mpi_task" можно выполнить "srun [опции] my_mpi_task"

* srun может быть выполнен внутри sbatch (может быть полезно для MPI задач)


Основные опции sbatch, srun:
-n <число>  (он же --ntasks=<число>) - число запускаемых процессов;
-c <число>  (он же --cpus-per-task=<число>) - количество CPU-ядер на каждый процесс;
-G <число> (он же --gpus=<число>) - количество GPU;
-N <число> (он же --nodes=<число>) - минимальное количество узлов, выделяемых для задачи;
--ntasks-per-node=<число> - количество процессов на каждый узел (например, "-n 4 --ntasks-per-node=2" - значит, нужно 2 узла для выполнения этих 4 процессов);
--gpus-per-task=<число> - количество GPU на каждый запускаемый процесс;
--gpus-per-node=<число> - количество GPU на каждый выделяемый узел;
--cpus-per-gpu=<число> - количество CPU на каждую выделяемую GPU;
--time=<число> - необходимое время выполнения задачи (в минутах), может быть задано форматами: 
   [ минуты | минуты:секунды | часы:минуты:секунды | дни-часы | дни-часы:минуты | дни-часы:минуты:секунды]


* Подробная информация по использованию планировщика Slurm доступна на официальном сайте - https://slurm.schedmd.com/quickstart.html


 

Нашли опечатку?
Выделите её, нажмите Ctrl+Enter и отправьте нам уведомление. Спасибо за участие!
Сервис предназначен только для отправки сообщений об орфографических и пунктуационных ошибках.