Каждая параллельная задача, которую мы собираемся ставить в очередь на исполнение должна быть оформлена в виде пакета. Пакет представляет собой набор параметров запуска и инструкции что конкретно мы хотим запустить. Здесь мы рассмотрим самые необходимые параметры и команды, которые потребуются в большинстве случаев.
Предположим, что мы собираемся запускать тестовую программу ./flops, которую мы упоминали, когда рассматривали установку Ubuntu кластера. Для запуска мы хотим, чтобы выполнялись слкдующие условия:
- Использовались три вычислительных узла.
- На каждом из которых мы займем по одному доступному процессору.
- Задача должна выполнятся не более 10 часов (по истечении которых она должна быть снята со счета).
- На вычислительных узлах должно быть доступно не менее 100Мб оперативной памяти.
- О событиях запуска задачи и ее завершения (с ошибкой или без) мы должны быть уведомлены сообщением, направленным на нашу электронную почту.
Для описания такой задачи создадим следующий скрипт (назовем его flops.pbs):
#!/bin/sh # #PBS -l nodes=supergate:ppn=1+2:ppn=1 #PBS -N Flops_TEST #PBS -m abe #PBS -M yuri@linux-ekb.info #PBS -l pmem=100mb #PBS -l pcput=10:00:00 cd /home/mpiuser/mpi mpirun ./flops
Количество задействованных процессоров мы описываем параметром nodes=supergate:ppn=1+2:ppn=1. Причем указываем (это важно!) что первым узлом нашей параллельной задачи будет хост supergate. Именно так мы назвали нашу консоль кластера. Кроме него задаче будет выделено еще 2 узла. Для каждого из этих трех узлом мы запрашиваем по одному процессору (ppn=1).
Параметр -N Flops_TEST - это просто название нашей задачи. Так она будет отображена в очереди задач.
Параметры -m abe и -M yuri@linux-ekb.info указывают, какие должны быть уведомления и куда их посылать.
Последние два параметра (pmem=100mb и pcput=10:00:00) должны быть понятны. Это запрашиваемый размер оперативной памяти и максимальное время исполнения программы.
Остальные строчки скрипта - это собственно задача, которая должна быть исполнена на кластере: переход в каталог с программой и запуск ее на параллельное исполнение скриптом OpenMPI.
Запсук задания, точнее размещение его в очереди на исполнение, осуществляется командой qsub, единственным параметром которой будет имя нашего скрипта:
qsub flops.pbs
Ранее мы рассматривали способ запуска параллельной программы в среде OpenMPI, и там в качестве одного из параметров команды запуска указывался файл со списком вычислительных узлов кластера. При использовании менеджера ресурсов Torque этот параметр не нужен. Конфигурацию кластера и список узлов диспетчер OpenMPI берет непосредственно из Torque.
Стандартные потоки вывода (STDOUT, STDERR) после завершения программы вы можете найти в том каталоге, из которога программа была запущена, в файлах с именами Flops_TEST.o45 и Flops_TEST.e45. Цифры - это номер очереди для нашей задачи, а название перед расширением - это то имя, которое мы указали в нашем скрипте запуска.