Система управления заданиями

Для управления заданиями на кластерax ЦКП используется свободно распросраняемая версия диспетчерской системы OpenPBS (Portable Batch System - PBS).  PBS обеспечивает управление выполнением заданий на широком наборе конфигураций вычислительных систем:

Основные характеристики системы:

PBS состоит из четырех основных модулей, каждый из которых может устанавливаться на одном или нескольких вычислительных узлах, обслуживаемых системой :

Конфигурация PBS в суперкомпьютерном центре ЮФУ.

В настоящее время системой PBS в суперкомпьютерном центре ЮФУ обслуживаются следующие вычислительные ресурсы:

В соответствии с этим создано три потока очередей, по одному для каждой архитектуры с именами IBMX, TP, WSD. Внутри каждого из потоков дополнительного разбиения (например, по времени решения задачи) не сделано. Используется  устанавливаемый по умолчанию планировщик FIFO (первый вошел первый вышел), сконфигурированный для эксклюзивного выполнения одного счетного процесса на каждом узле. PBS автоматически распределяет задания по свободным узлам заданной архитектуры.  Разумеется, никакого распараллеливания PBS не выполняет. Система только запускает указанное числе процессов на выделенных для задачи узлах. Чтобы программа могла выполняться более, чем на одном узле, она должна быть параллельной.

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

Для учебного кластера создана очередь EDU .

Работа с диспетчерской системой

1) Компиляция программы как правило выполняется на управляющем сервере, однако допустимо использовать для компиляции любой из узлов. Пользователь должен войти в каталог с исходными модулями программы и запустить компиляцию программы с помощью команды вызова компилятора или команды make, если программа состоит из нескольких модулей. Написан универсальный Makefile для компиляции  фортрановских программ под различные архитектуры.
Замечание. Пользовательские каталоги с управляющего сервера экспортируются на все узлы всех кластеров в директории /export/home/$USER.  Это избавляет от необходимости пересылки программ при запуске их на любом кластере. Вы можете напрямую работать с экспортируемым каталогом, если перейдете в него по команде cd.
2) Запуск исполнимой программы выполняется специальной командой qsub, c  помощью запускающего скрипта (командного файла), в котором указывается запускаемая программа и требуемые ресурсы (архитектура, число процессоров, время решения).
    qsub -q  <ARCH>  <script_name>
где <ARCH> - имя очереди, в которую ставится задание (возможные значения IBMX, TP, WSD)
< script_name> - имя запускающего скрипта, который может быть создан любым текстовым редактором.
В простейшем случае для запуска однопроцессорной программы на кластере IBMX нужно сформировать файл  (например  с именем ibmx1)следующего содержания:

#!/bin/sh
###PBS script to run task
#PBS -l nodes=1:IBMX
cd $HOME
cd prog/parallel/aztec
./progname
В данном случае будет сформирована однопроцессорная задача для решения на кластере IBMX из файла с именем progname и с заказом времени по умолчанию 1 час. Конструкции  #PBS  распознаются командой qsub и устанавливают лимиты для задачи. Командой cd указывается путь к исполнимой программе. Тогда запуск программы progname должен быть произведен командой:

    qsub  -q  IBMX  ibmx1

Для запуска параллельной программы на 4-х процессорах кластера IBMX используется тот же самый формат команды, но содержимое скрипта должно быть другим (скрипт ibmx4)

#!/bin/sh
###PBS script to run parallel task
#PBS -l walltime=03:00:00
#PBS -l nodes=4:IBMX
cd $HOME
cd prog/parallel/aztec
mpirun -np 4 progname

Здесь заказано время счета 3 часа на 4-х узлах IBMX-кластера. Запуск выполняется командой:

    qsub -q IBMX ibmx4

Несколько по-другому выполняется заказ процессоров на 2-х процессорных системах Alpha и  SUN. Они трактуются как один узел с двумя процессорами, поэтому для запуска 2-х процессорной задачи на архитектуре SUN скрипт должен иметь вид:

#!/bin/sh
###PBS script to run task
#PBS -l walltime=10:00
#PBS -l nodes=1:ppn=2:SUN
cd $HOME
cd prog/parallel/aztec
mpirun -np 2 progname

Здесь  строка  #PBS -l nodes=1:ppn=2:SUN указывает, что используется 1 узел с двумя процессорами архитектуры SUN.
Аналогичный скрипт нужен и для компьютера Alpha, c заменой названия архитектуры SUN на ALPHA.
Для однопроцессорных программ скрипт должен иметь вид:

#!/bin/sh
###PBS script to run task
#PBS -l walltime=30:00
#PBS -l nodes=1:ppn=1:ALPHA
cd $HOME
cd prog/parallel/aztec
 ./progname

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

#!/bin/sh
#PBS -l walltime=1:00:00
#PBS -l nodes=1
#PBS -v OMP_NUM_THREADS=2
cd /export/home/victor/prog/bench
./mxmr2

При запуске программы через команду qsub заданию присваивается уникальный целочисленный идентификатор, который представляет собой номер запущенного задания. По этому номеру вы можете отслеживать прохождение задания, снять задание со счета или из очереди и переместить его в очереди относительно своих других заданий.
3) Результат работы программы без каких либо дополнительных усилий с Вашей стороны будет записываться в файл и помещаться в тот каталог, из которого было запущено задание. Имя выходного файла формируется автоматически следующим образом:
<имя скрипта>.o<номер задания>,   a в файл
<имя скрипта>.e<номер задания> - будет записываться стандартный канал диагностики (ошибок).
Имя выходного файла можно изменить с помощью специальной опции команды qsub.
Замечания:
а) программа не должна быть интерактивной, т.е. содержать ввод с клавиатуры;
б) постановка задания в очередь на любуй кластер может быть выполнена с любой машины;
в) в случае, если у системы возникают проблемы с поиском пути, куда должны записываться выходные файлы - они остаются в системном каталоге  /usr/spool/PBS/undelivered/ на той машине, где решалась задача.

ВНИМАНИЕ!  PBS скрипт может быть создан без использования текстовых редакторов. Для этого написана специальная команда qpbs , которая в диалоговом режиме предлагает ввести необходимые параметры  PBS скрипта.  В результате работы команды будет создан и записан в текущий каталог PBS скрипт с именем, которое указывается в процессе диалога. Запросы имеют достаточно понятный смысл. При заказе времени указывается число часов, если необходимо указать и минуты, то часы отделяются от минут двоеточием:
ввод цифр 10 - означает 10 часов
ввод цифр  00:10 - означает 10 минут
Команда qpbs создает скрипт стандартного вида, который требует корректировки в некоторых случаях, а именно, для для параллельных программ SMP типа.
 

Команды управления заданиями

Помимо описанной кратко команды qsub, существует набор полезных команд, которые перечислим без детального рассмотрения. Подробное их описание существует пока только в англо-язычном варианте:
qdel - удаление задания
qhold - поставить запрет на  исполнение задания
qmove - переместить задание
qmsg - послать сообщение заданию
qrls - убрать запрет на исполнение, установленный командой qhold
qselect - выборка заданий
qsig - посылка сигнала ( в смысле ОС UNIX) заданию
qstat - выдача состояния очередей ( наиболее полезны команды qstat -a и qstat -q )
qsub - постановка задания в очередь
pestat - выдача состояния всех вычислительных узлов (нет описания )
xpbs  -  графический интерфейс для работы с системой PBS (требуется Х-сервер)
xpbsmon - графическая программа выдачи состояния вычислительных ресурсов (требует значительных усилий по настройке, нет описания в HTML формате, но есть man).

О проблемах, связанных с работой диспетчерской системы, сообщайте:
  по электронной почте: Виктор Николаевич Дацюк root@hpc.sfedu.ru
  по телефону : 219-97-13