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

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

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

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

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

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

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

Системой PBS обслуживаются также следующие учебные ресурсы:

Для учебных ресурсов создано два потока очередей с именами SUN и LINUX.

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

1) Компиляция программы выполняется обычным образом. Пользователь должен соединиться с системой нужной архитектуры и запустить компиляцию программы с помощью команды вызова компилятора или команды make. Написан универсальный Makefile для компиляции  фортрановских программ под различные архитектуры.
Внимание!  Компиляция программ для Linux-кластера выполняется на специально выделенном компьютере rsucl.cc.rsu.ru.
Замечание. Пользовательские каталоги с хоста INFINI-кластера экспортируются не только на компьютеры INFINI-кластера, но и на rsual1 (Alpha) в директории /export/home/$USER.  Поэтому на Alph'e каждый пользователь по сути дела имеет два каталога - основной (физически расположен на Alph'e) и экспортируемый с хоста. Это избавляет от необходимости переброски файлов и их дублирования. Вы можете напрямую работать с экспортируемым каталогом, если перейдете в него по команде cd.
2) Запуск исполнимой программы выполняется специальной командой qsub, c  помощью запускающего скрипта (командного файла), в котором указывается запускаемая программа и требуемые ресурсы (архитектура, число процессоров, время решения).
    qsub -q  <ARCH>  <script_name>
где <ARCH> - имя очереди, в которую ставится задание (возможные значения INFINI, LINUX, ALPHA)
< script_name> - имя запускающего скрипта, который может быть создан любым текстовым редактором.
В простейшем случае для запуска однопроцессорной программы на INFINI-кластере нужно сформировать файл  (например  с именем infini1pbs)следующего содержания:

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

    qsub  -q  INFINI  infini1pbs

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

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

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

    qsub -q INFINI infini4pbs

Несколько по-другому выполняется заказ процессоров на 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

Замечание: На компьютере Alpha, если программа MPI-ная, то для запуска ее даже на одном процессоре следует использовать команду dmpirun. Т.е. скрипт должен иметь вид:
#!/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
dmpirun -np 1 progname

Команда dmpirun системная команда для запуска MPI-программ в ОС Tru64 Unix

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

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

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

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

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

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

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