Запуск задач с использованием системы очередей


Проведение расчетов на вычислительном кластере (суперкомпьютерной системе) имеет ряд особенностей по сравнению с использованием персонального компьютера (индивидуальной рабочей станции). Главное отличие состоит в необходимости распределения ресурсов кластера между пользователями, которые могут работать одновременно.

Для того, чтобы избегать конфликтов интересов при проведении расчетов, на кластерах преимущественно используется пакетная система обработки заданий (batch processing). При этом пользовательская задача становится в очередь на исполнение и запускается при наличии свободных вычислительных ресурсов, например, когда освобождается достаточное число узлов на кластере. Для организации системы очередей используется специальное программное обеспечение (job scheduler), которое при работе кластера работает в фоновом режиме как на головной машине (front-end), так и на вычислительных узлах (nodes).

На настоящий момент существуют различные свободно распространяемые и коммерческие программные реализации системы очередей для суперкомпьютерных систем. Исторически одной из первых была PBS (Portable Batch System). На кластере biolab1.mipt.ru установлена одна из разновидностей PBS, состоящая из TORQUE Resource Manager и Maui Cluster Scheduler.


 

Основные команды для использования системы очередей

qsub - (queue submit) постановка задачи в очередь на исполнение.

Эта команда поставит программу в очередь задач PBS и выведет номер вашей задачи, например: 1891.node00.

qstat - (queue statistics) получение информации о текущем состоянии системы очередей.

qselect - (queue select) выбор номеров заданий по заданному критерию.

qdel - (queue delete) удаление задачи из очереди.

При использовании PBS для каждой программы пользователя лучше всего создать свой скрипт — текстовый файл с последовательностью команд для ее запуска. В этом скрипте могут присутствовать специальные комментарии, начинающиеся с #PBS, с опциями для команды qsub.

Пример скрипта pbsrun для однопроцессорной версии LAMMPS:


#!/bin/bash
### Job name
#PBS -N lammps

cd /home/username/myprog
./lmp_serial -in in.melt -screen none


В этом скрипте могут изменяться следующие позиции:

Пример скрипта pbsrun для параллельной версии LAMMPS:


#!/bin/bash
### Job name
#PBS -N lammps

cd /home/username/myprog
export LAM_MPI_SESSION_PREFIX=/tmp
mpiexec./lmp_lamfftw -in in.melt -screen none


В этом скрипте могут изменяться следующие позиции:

Пример запуска:

В отчете qsub указывается: номер задачи, имя задачи (см. параметр -N), имя пользователя, а в последних трех строках: запрошенное пользователем время, состояние задачи ("Q" - задача ожидает освобождения очереди, "R" - выполняется), текущее время выполнения.

Удаление задачи из очереди в данной ситуации:

qdel 1891

Удаление всех задач пользователя из очереди

qdel `qselect username`

В результате выполнения задачи в текущем каталоге появляются два файла с именами типа <имя задачи>.o<номер задачи> и <имя задачи>.e<номер задачи>. Например, для приведенного выше случая в каталоге /home/stud12/ это будут файлы lammps.o1891 и lammps.e1891. В output файл система очередей сохраняет вывод исполняемого процесса на консоль (например, вывод программы в поток cout в C++), а в error файл - сообщения об ошибках (например, вывод в поток cerr в С++).