Формирование заданий для параллельного решения

Для запуска заданий на кластере используется система управления заданиями.

Система управления заданиями PBS (Portable Batch System - Переносимая Пакетная Система) – это пакет управления системными компьютерными ресурсами и группами заданий, позволяющий повысить эффективность загрузки вычислительных ресурсов, уменьшая их простой. PBS принимает группы заданий, сохраняет и защищает задание до запуска, запускает его, а также возвращает результаты работы приложения пользователю.

На кластерах "СКИФ К-500" и "СКИФ К-1000" установлена свободно распространяемая версия системы управления заданиями PBS - Torque, основанная на известной системе OpenPBS. В качестве планировщика заданий используется также свободно распространяемая система Maui.

Запуск исполнимой программы выполняется специальной командой qsub.

Директивы (параметры) PBS могут передаваться как опции qsub в командной строке, либо как параметры файла сценария (запускающего скрипта) PBS.

Менеджер предоставляет следующие возможности:

· Ввод всех параметров в командной строке.

Пример командной строки:

qsub -l walltime=00:20:00,nodes=3:mpp /opt/scali/bin/mpirun -machinefile nodes.sca \ $PBS_O_WORKDIR/python theogram.py 3806.txt.

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

· Создание файла сценария PBS для запуска в пакетном режиме; в этом файле определяются параметры, необходимые для работы задачи (запускаемая программа, требуемые ресурсы - число процессоров, время выполнения и т.п.).

Пример командной строки:

qsub <script_name>

<script_name> – имя запускающего скрипта, который может быть создан любым текстовым редактором, а в системе создается средой с планшетом интерактивного моделирования. По умолчанию задание ставится в очередь “dteam” (“batch” на кластере K1000).

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

### PBS script to run one CPU task ###

#PBS -l walltime=00:10:00

#PBS -l nodes=1

#PBS -N python theogram.py

hostname

cd ~/test_pbs/

date >> ~/test_pbs/log

hostname >> ~/test_pbs/log

./ python theogram.py 3806-0001.txt

./ python theogram.py 3806-0002.txt

./ python theogram.py 3806-0003.txt

………………….

………………….

………………….

./ python theogram.py 3806-0748.txt.

Данный скрипт готовит среду для параллельной работы и ставит очередь заданий по вычислению синтетической сейсмограммы по 748 пикетам. После чего выполняется команда:

qsub -l walltime=00:20:00,nodes=3:mpp /opt/scali/bin/mpirun -machinefile nodes.sca \ $PBS_O_WORKDIR / python mergetheogram.py 3806-0001.txt 3806-0748.txt.

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

Для запуска параллельной программы на процессорах кластера используется тот же самый формат команды, но содержимое скрипта должно быть другим.

Скрипт для запуска параллельной программы, собранной со Scali mpi (используется высокоскоростной сетевой интерфейс SCI):

### PBS script to run parallel program with Scali mpi ###

#PBS -l walltime=00:10:00

#PBS -l nodes=3:mpp:ppn=1

#PBS -N My_program_name

PWD=$PBS_O_WORKDIR

cd $PWD

echo $PBS_NODEFILE

cat $PBS_NODEFILE |tee pbs-nodes.sca

date

/opt/scali/bin/mpirun -machinefile pbs-nodes.sca ./ python theogram.py 3806-0001.txt

/opt/scali/bin/mpirun -machinefile pbs-nodes.sca ./ python theogram.py 3806-0002.txt

……………………………………

……………………………………

……………………………………

/opt/scali/bin/mpirun -machinefile pbs-nodes.sca ./ python theogram.py 3806-0748.txt

date.

Скрипт для запуска параллельной программы, собранной с LAM mpi (используется управляющая сеть Gigabit Ethernet):

### PBS script to run parallel program with LAM mpi ###

#PBS -l walltime=00:10:00

#PBS -l nodes=3:mpp:ppn=1

#PBS -N My_program_name

PWD=$PBS_O_WORKDIR

cd $PWD

cat $PBS_NODEFILE | tee pbs-nodes

NP=`wc -l pbs-nodes | awk '{print $1}'`

rsh `head -1 pbs-nodes` "cd $PWD

lamboot -s pbs-nodes

date

/usr/bin/mpirun -np $NP -O ./ python theogram.py 3806-0001.txt

/usr/bin/mpirun -np $NP -O ./ python theogram.py 3806-0002.txt

………………………

…………………………..

………………………….

/usr/bin/mpirun -np $NP -O ./ python theogram.py 3806-0748.txt

date

lamhalt".

Скрипт для запуска параллельной программы, собранной с MVAPICH mpi (используется высокоскоростной сетевой интерфейс Infiniband):

#PBS -l walltime=00:10:00

#PBS -l nodes=5:mpp:ppn=2

#PBS -N My_program_name

PWD=$PBS_O_WORKDIR

cd $PWD

cat $PBS_NODEFILE |tee pbs-nodes

NP=`wc -l pbs-nodes | awk '{print $1}'`

MPIRUN=/share/mvapich-gcc/bin/mpirun_rsh

MPIBIN="$PWD/ python theogram.py 3806-0001.txt "

MPIRUN=/share/mvapich-gcc/bin/mpirun_rsh

MPIBIN="$PWD/ python theogram.py 3806-0002.txt "

…………………………

……………………………..

……………………………..

MPIRUN=/share/mvapich-gcc/bin/mpirun_rsh

MPIBIN="$PWD/ python theogram.py 3806-0748.txt "

date

echo "Job start on $NP nodes"

$MPIRUN -np $NP -hostfile pbs-nodes LD_LIBRARY_PATH=/share/mvapich-gcc/lib/shared/ $MPIBIN|tee my_cpi.log

date.

Конструкции “#PBS” распознаются командой qsub и устанавливают лимиты для задачи.

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

· l – набор технических параметров, набираемых через ",":

§ walltime=00:10:00 – заданное время для выполнения задачи;

§ nodes=3:mpp:ppn=1 – количество узлов: свойства узлов: число процессов на узел

· -N My-program – имя задачи;

· $PBS_NODEFILE – переменная, возвращающая имя файла, в котором записаны выделенные узлы для выполнения задания;

· $PBS_O_WORKDIR – абсолютный путь к текущему рабочему каталогу.

Стандартный вывод по умолчанию осуществляется в текущий рабочий каталог в файл «job_name.osequence_number (прим.: My_program_name.o56);» стандартный поток ошибок – в файл «job_name.esequence_number (прим.: My_program_name.e56).»

Команда qstat используется для просмотра состояния задачи.

Возможные варианты состояния задачи:

· E – задача завершается;

· H – задача принудительно удерживается в очереди;

· Q – задача находится в очереди;

· R – задача выполняется;

· T – задача перемещается;

· W – задача ожидает, когда запрошенное время выполнения будет доступно;

· S – задача приостановлена.

Например, для периодического просмотра статуса задачи каждые 10 сек, можно использовать команду:

· $ watch -n 10 "qstat -a".

Наиболее популярные команды для работы с PBS:

· qsub – постановка задания в очередь;

· qstat – выдача состояния очередей (наиболее полезны команды qstat -a и qstat -q);

· qdel – удаление задания.

Остальные команды для работы с PBS:

· qhold – поставить запрет на исполнение задания;

· qmove – переместить задание;

· qmsg – послать сообщение заданию;

· qrls – убрать запрет на исполнение, установленный командой qhold;

· qselect – выборка заданий;

· qsig – посылка сигнала (в терминах ОС LINUX) заданию;

· qstat – выдача состояния очередей (наиболее полезны команды qstat -a и qstat -q).

Полезные команды планировщика maui:

· showq – список всех заданий доступных планировщику;

· showbf – ресурсы доступные в данный момент;

· showstart – показать время запуска и прогнозируемое время завершения задачи;

· checkjob – показать детали выполнения задачи.

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

· $ man – имя_команды.

Наши рекомендации