next up previous contents
Next: Передача NULL в MPI_Init Up: Разное Previous: Разное   Contents

Переносимый запуск процесса MPI

Ряд реализаций MPI-1 предоставляет команду запуска для программ MPI, которая имеет форму

mpirun <аргументы mpirun> <программа> <аргументы программы>

Отделение команды запуска программы от самой программы обеспечивает гибкость, особенно для сетевых и гетерогенных реализаций. Например, сценарий запуска не нужно выполнять на одной из машин, которые будут непосредственно выполнять программу MPI.

Наличие стандартного механизма запуска также расширяет мобильность MPI программ на один шаг вперед, к командным строкам и сценариям, которые управляют ими. Например, сценарий набора программ проверки правильности, который выполняет сотни программ, может быть переносимым сценарием, если он написан с использованием такого стандартного механизма запуска. Чтобы не перепутать ``стандартную'' команду с существующей на практике, которая не является стандартной и не переносимой среди реализаций, вместо mpirun MPI определил mpiexec.

В то время как стандартизированный механизм запуска улучшает применимость MPI, диапазон сред настолько разнообразен (например, не может даже быть интерфейса командной строки), что MPI не может принять под мандат такой механизм. Вместо этого, MPI определяет команду запуска mpiexec и рекомендует, но не требует, как совет разработчикам. Однако, если реализация обеспечивает команду называемую mpiexec, она должна иметь форму, описанную ниже.

Она предложена так

mpiexec -n <numprocs> <программа>

будет по крайней мере один способ запустить <программу> с начальным MPI_COMM_WORLD, чья группа содержит <numprocs> процессов. Другие аргументы mpiexec могут зависеть от реализации.

Это - совет разработчикам, а не требуемая часть MPI-2. Не предлагается, что это единственный способ запустить MPI программу. Однако, если реализация обеспечивает команду называемую mpiexec, она должна иметь форму, описанную здесь.

Совет разработчикам: Разработчикам, если они обеспечивают специальную команду запуска для программ MPI, советуют применить следующую форму. Синтаксис выбран так, чтобы mpiexec выглядела как версия командной строки MPI_COMM_SPAWN (См. Раздел 5.3.4).

Аналогично MPI_COMM_SPAWN, мы имеем

mpiexec -n <maxprocs> -soft < > -host < > -arch < > -wdir < > -path < > -file < > ... <командная строка>

для случая, где отдельной командной строки для прикладной программы и ее аргументов будет достаточно. См. Раздел 5.3.4 для значений этих аргументов. Для случая, соответствующего MPI_COMM_SPAWN_MULTIPLE имеются два возможных формата:

Форма A:

mpiexec { <above arguments> } : { ... } : { ... } : ... : { ... }

Как и в MPI_COMM_SPAWN, все аргументы необязательные. (Даже -n x необязательный аргумент; значение по умолчанию зависит от выполнения. Оно могло бы быть 1, оно могло бы быть принято от переменной среды, или оно могло бы быть определено во время компиляции). Имена и значения аргументов приняты от ключей в аргументе info к MPI_COMM_SPAWN. Могут быть также другие, зависящие от реализации аргументы.

Обратите внимание, что Форма A, хотя и удобно набирается, разделяет двоеточиями аргументы программы. Поэтому допускается дополнительная файловая форма:

Форма B:

mpiexec -configfile <имя_файла>

где строки <имя_файла> имеют форму, отделенную двоеточиями в Форме A. Строки, начинающиеся с ``#'', являются комментариями, и строки могут быть продолжены, заканчивая неполную строку ``$\backslash$''.

Пример 4.1 Запуск 16 экземпляров myprog на текущей или заданной по умолчанию машине:

mpiexec -n 16 myprog

Пример 4.2 Запуск 10 процессов на машине, называемой ferrari:

mpiexec -n 10 -host ferrari myprog

Пример 4.3 Запуск трех копий одной и той же программы с различными аргументами командной строки:

mpiexec myprog infile1 : myprog infile2 : myprog infile3

Пример 4.4 Запускает программу ocean на пяти Suns и программу atmos на 10 RS/6000:

mpiexec -n 5 -arch sun ocean : -n 10 -arch rs6000 atmos

Принимается, что реализация в этом случае имеет метод для выбора главных компьютеров соответствующего типа. Их ранги находятся в указанном порядке.

Пример 4.5 Запускает программу ocean на пяти Suns и программу atmos на 10 RS/6000 (Форма B):

mpiexec -configfile myfile

Где myfile содержит

-n 5 -arch sun ocean -n 10 -arch rs6000 atmos

[]



Alex Otwagin 2002-12-10