Для управления заданиями на гетерогенном кластере суперкомпьютерного центра ЮФУ используется бесплатно распросраняемая версия диспетчерской системы OpenPBS (Portable Batch System - PBS). PBS обеспечивает управление выполнением заданий на широком наборе конфигураций вычислительных узлов:
Основные характеристики системы:
PBS состоит из четырех основных модулей, каждый из которых может устанавливаться на одном или нескольких вычислительных узлах, обслуживаемых системой :
В настоящее время системой PBS в суперкомпьютерном центре ЮФУ обслуживаются следующие вычислительные ресурсы:
В соответствии с этим создано три потока очередей, по одному для каждой архитектуры с именами INFINI, LINUX, ALPHA. Внутри каждого из потоков дополнительного разбиения (например, по времени решения задачи) пока не сделано. Используется устанавливаемый по умолчанию планировщик FIFO (первый вошел первый вышел), сконфигурированный для эксклюзивного выполнения одного счетного процесса на каждом из процессоров. PBS автоматически распределяет задания по свободным узлам заданной архитектуры. Разумеется, никакого распараллеливания PBS не выполняет - чтобы программа могла выполняться более, чем на одном узле, она должна быть параллельной.
Системой PBS обслуживаются также следующие учебные ресурсы:
Для учебных ресурсов создано два потока очередей с именами SUN и LINUX.
#!/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 типа.
О проблемах, связанных с работой диспетчерской системы, сообщайте:
по электронной почте: Виктор Николаевич Дацюк root@rsusu1.rnd.runnet.ru
по телефону : 219-97-13