Параметры команды mpirun на Blue Gene/P

В подавляющем большинстве случаев для запуска программ удобнее использовать команду mpisubmit.bg. Программу mpirun следует вызывать только из командных файлов, написанных для команды llsubmit.

В этом разделе рассматриваются следующие вопросы:

Программа mpirun может принимать большое число параметров, которые описывают ее поведение как перед запуском задачи на вычислительных узлах, так и в процессе выполнения приложения. Эти параметры могут быть разделены на три группы:

  • ресурсы, которые запрашивает приложение,
  • путь к исполняемому файлу и переменные среды,
  • уровень подробности сообщений, выводимых в stdout и stderr.

Список параметров можно получить, выполнив команду mpirun -h, а их подробное описание приведено в официальной документации. Здесь мы рассмотрим лишь те из них, которые используются наиболее часто.

Параметры команде mpirun могут быть переданы либо через аргументы командной строки, либо через переменные окружения. Например, вызов mpirun с аргументом -mode DUAL будет эквивалентен указанию MPIRUN_MODE=DUAL в списке значений переменной environment. Таблица соответствия между аргументами командной строки и переменными окружения будет приведена ниже.

Аргументы командной строки mpirun

Аргументы командной строки mpirun делятся на следующие категории:

Аргументы управления задачей

Аргумент Описание
-args "program args" Передает "program args" запускаемой на вычислительных узлах программе в качестве аргументов командной строки
-env "ENVVAR=value" Устанавливает переменную окружения для задачи, запущенной на вычислительных узлах; чтобы установить более одной переменной окружения, воспользуйтесь директивой несколько раз (-env "ENVVAR1=value1" -env "ENVVAR2=value2") или укажите все переменные в одной директиве (-env "ENVVAR1=value1 ENVVAR2=value2")
-exp_env ENVVAR Экспортирует переменную текущего окружения команды mpirun в среду задачи, запущенной на вычислительных узлах
-env_all Экспортирует все переменные текущего окружения команды mpirun в среду задачи, запущенной на вычислительных узлах
-np <n> Задает число MPI-процессов для задачи. Эквивалентные ключи: -nodes и -n. Можно указывать значение меньшее того, что прописано для ключевого слова bg_size командного файла.
-mode <SMP|DUAL|VN> Указывает режим, в котором будет запущена задача: SMP (1 MPI-процесс, 4 нити), DUAL (2 MPI-процесса по 2 нити) или VN (4 MPI-процесса по 1 нити)
-exe <executable> Полный путь к исполняемому файлу; должен указываться том виде, как он виден вычислительным и узлам ввода-вывода
-cwd <path> Полный путь, который будет использоваться в качестве текущей директории; должен указываться том виде, как он виден вычислительным и узлам ввода-вывода
-mapfile <mapfile> Специфицирует файл с альтернативной MPI-топологией; должен указываться том виде, как он виден вычислительным и узлам ввода-вывода

Аргументы управления блоком

В настоящий момент выделение блоков на системе Blue Gene/P, установленной на факультете ВМК МГУ, происходит автоматически, но в дальнейшем пользователю будет разрешено лишь указывать в командном файле один из предопределенных блоков, поэтому сооответствующие аргументы команды mpirun здесь не описаны.

Аргументы управления выводом

Аргумент Описание
-verbose [0-4] Устанавливает уровень подробности вывода диагностических сообщений; по умолчанию используется нулевой уровень, означающий, что mpirun не выводит никаких информационных и диагностических сообщений, если только не произошло серьезной ошибки; все информационные и сообщения об ошибках направляются в stderr
-label Указывать источник каждой строчки вывода; он будет выведен в виде stdout[MPI_rank] или stderr[MPI_rank]

Обратите внимание, что информационные сообщения, которые выводятся при использовании ключа -verbose, отвечают только аргументам программы mpirun и не учитывают параметры, указанные в командного файла планировщика LoadLeveler. Самые полные и актуальные данные доступны с помощью команды

$> llq -l <jobid>

где jobid — это номер задачи, подробную информацию о который вы хотите получить.

Прочие аргументы

Аргумент Описание
-h Отображает справочную информацию об аргументах командной строки
-version Отображает информацию о версии программы

Переменные окружения для mpirun

Альтернативный способ управления выполнением программы mpirun состоит в использовании переменных окружения. Большая часть параметров командной строки имеет эквиваленты среди переменных окружения. Значения аргументов командной строки имеют преимущество перед значениями переменных окружения. Соответствие между некоторыми аргументами командной строки и переменными окружения приведено в следующей таблице:

Аргумент Переменная окружения
-nodes MPIRUN_NODES MPIRUN_N MPIRUN_NP
-mode MPIRUN_MODE
-exe MPIRUN_EXE
-cwd MPIRUN_CWD MPIRUN_WDIR
-env MPIRUN_ENV
-exp_env MPIRUN_EXP_ENV
-env_all MPIRUN_EXP_ENV_ALL
-mapfile MPIRUN_MAPFILE
-args MPIRUN_ARGS
-label MPIRUN_LABEL
-verbose MPIRUN_VERBOSE

Текст составлен на основе материала главы 11, «mpirun», 2-го издания книги «IBM System Blue Gene Solution: Blue Gene/P Application Development»