Next:ЗАКЛЮЧЕНИЕ К ЧАСТИ 1
Up:5. ВЫСОКОПРОИЗВОДИТЕЛЬНЫЙ ВЫЧИСЛИТЕЛЬНЫЙ КЛАСТЕР
Prev:5.1. Архитектура вычислительного кластера

5.2. Система пакетной обработки заданий

Основное назначение системы пакетной обработки заданий состоит в запуске программы на исполнение на тех узлах кластера, которые в данный момент не заняты обработкой других заданий, и в буферизации задания, если в данный момент отсутствуют свободные ресурсы для его выполнения. Большинство подобных систем предоставляют и множество других полезных услуг. В полной мере это относится и к рассматриваемой системе OpenPBS.

Важнейшим достоинством системы OpenPBS является достаточно удобная и эффективная поддержка вычислительных узлов разной конфигурации и архитектуры. Система OpenPBS обеспечивает управление выполнением заданий на широком наборе конфигураций вычислительных узлов:

Кроме этого, следует отметить простоту и удобство работы с диспетчерской системой как для администратора системы, так и для конечных пользователей.

Для администратора диспетчерской системы предоставляются широкие возможности динамического изменения параметров системы, таких как создание и уничтожение очередей, подключение и отключение вычислительных узлов, установку и изменение предельных лимитов для пользователей, установку лимитов по умолчанию и т.д. Каждому вычислительному узлу может быть присвоен некоторый набор свойств, и тогда задание может быть послано на выполнение на те узлы, которые удовлетворяют необходимому набору свойств. Поэтому представлялось разумным разделить вычислительные узлы по их архитектуре и для каждой из них создать отдельную очередь с именами ALPHA, SUN и LINUX. Многопроцессорная система nCUBE2 используется в основном в учебном процессе и для отладки программ и поэтому диспетчерской системой не обслуживается. К достоинствам системы PBS следует отнести наличие удобных средств оперативного контроля состояния очередей, состояния вычислительных узлов, а также наличие системы регистрации выполненных заданий.

В настоящее время в системе OpenPBS установлены два предельных лимита и их значения по умолчанию:

Если в заказе превышен предельный лимит, то задание отвергается. По истечении заказанного времени решения задача автоматически снимается со счета.

Для конечных пользователей работа через систему OpenPBS сводится к запуску программ с помощью специальной команды qsub, в качестве аргументов которой передаются имя очереди, в которую должно быть поставлено задание, и имя запускающего командного файла (скрипта):
qsub -q ARCH script_name
где
ARCH - имя очереди, в которую ставится задание (возможные значения ALPHA, SUN, LINUX)
script_name - имя командного файла, который может быть создан с помощью любого текстового редактора.

В этом командном файле помимо команды запуска программы указываются требуемые задаче ресурсы: количество и архитектура процессоров, время решения задачи, переменные окружения и др. В простейшем случае для запуска однопроцессорной программы на Linux-кластере нужно сформировать файл (например, с именем lpbs1) следующего содержания:

    #!/bin/sh
    ###PBS script to run simple program
    #PBS -l nodes=1:LINUX
    cd $HOME
    cd prog/parallel/aztec
    ./progname

Конструкции #PBS распознаются командой qsub и устанавливают лимиты для задачи. В данном случае будет запущена однопроцессорная программа с именем progname на любом свободном узле Linux-кластера. Максимальное время решения задачи 1 час устанавливается по умолчанию. При отсутствии свободных узлов требуемой архитектуры задание будет поставлено в очередь. В данном случае запуск программы progname должен быть произведен командой:
qsub -q LINUX lpbs1

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

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

Здесь заказано время счета 3 часа на 4-х узлах Linux-кластера.

Запуск выполняется командой:
qsub -q LINUX lpbs4

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

    #!/bin/sh
    ###PBS script to run parallel program on SUN
    #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 simple program
    #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  MPI program on ALPHA
    #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 программ, использующих механизм многопоточности (multithreading). Для двухпроцессорной системы 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 заданию присваивается уникальный целочисленный идентификатор, который представляет собой номер запущенного задания. По этому номеру можно отслеживать прохождение задания, снять задание со счета или из очереди или переместить его в очереди относительно своих других заданий. Для этого помимо команды qsub пользователю предоставляется целый набор вспомогательных команд. Приведем их список (табл. 5.1) без подробного описания (его можно посмотреть либо с помощью команды man, либо на WWW сервере http://rsusu1.rnd.runnet.ru/opbs/contents.html):

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

Пакетная обработка заданий предполагает, что программа не должна быть интерактивной, т.е. программа не должна содержать ввода с клавиатуры. Ввод информации в программу возможен только из файлов. Как правило, для этого в программе используются специальные операторы чтения из файлов, но можно также использовать стандартные операторы в сочетании с механизмом перенаправления ввода из файла. В этом случае команда запуска программы в PBS-скрипте должна иметь вид:
mpirun -np 4 progname < datfile

Что касается вывода информации, то она буферизуется в специальном системном буфере и переписывается в рабочий каталог пользователя по окончании решения задачи. Имя выходного файла формируется автоматически следующим образом:
<имя скрипта>.o<номер задания>,
a в файл
<имя скрипта>.e<номер задания>
будет записываться стандартный канал диагностики (ошибок).

Имя выходного файла можно изменить с помощью специальной опции команды qsub.

Тем не менее, существует возможность просмотра результатов выполнения программы, запущенной в пакетном режиме, в процессе ее решения. Для этого можно использовать механизм перенаправления выдачи в файл. В PBS скрипте в строке запуска программы записывается конструкция:
./progname > out.dat

Здесь out.dat - имя файла, в который будет перенаправляться информация, выдаваемая на терминал. Тогда после запуска программы в пакетном режиме можно набрать на терминале команду:
tail -f out.dat,
которая будет выдавать на терминал информацию по мере ее записи в файл. Прервать просмотр без всякого ущерба для задачи можно, нажав клавиши Ctrl C (но не Ctrl Z). Точно так же в любой момент можно возобновить просмотр. Кроме того, периодически просматривать накопленные результаты можно будет с помощью команды cat.

Система пакетной обработки заданий OpenPBS не препятствует выдаче на экран в интерактивном режиме и графической информации. Более того, графическая информация может быть выдана на экран любого компьютера (не обязательно того, с которого запущено задание). Однако для этого должны быть соблюдены два условия:

  1. На компьютере, на экран которого будет выдаваться графическая информация, должен быть запущен Х-сервер в момент начала выполнения программы.
  2. Должен быть разрешен доступ к Х-серверу с того компьютера, на котором выполняется задание.

При несоблюдении этих условий выполнение программы будет прекращено. Для того, чтобы организовать такой режим работы, в программу должна быть передана переменная окружения DISPLAY, указывающая адрес экрана, куда должна выдаваться графическая информация. Делается это добавлением в PBS скрипт специальной строки, например:
#PBS -v DISPLAY=rsusu2.cc.rsu.ru:0.0
Здесь rsusu2.cc.rsu.ru - имя компьютера, на экран которого будет выдаваться графическая информация.

Некоторые пакеты и библиотеки графических подпрограмм позволяют выдавать результаты в графические файлы (GIF, PS и т.д.). Разумеется, такой режим возможен только для статических изображений, однако это избавляет от необходимости соблюдения условий 1 и 2. В целях унификации программного обеспечения графические пакеты по возможности устанавливаются на все вычислительные системы, однако в наиболее полном объеме они поддерживаются на компьютере SUN (rsusu2.rnd.runnet.ru).




Next:ЗАКЛЮЧЕНИЕ К ЧАСТИ 1
Up:5. ВЫСОКОПРОИЗВОДИТЕЛЬНЫЙ ВЫЧИСЛИТЕЛЬНЫЙ КЛАСТЕР
Prev:5.1. Архитектура вычислительного кластера