Руководство пользователя для MPICH, переносимой реализации MPI версия 1.2.1

William Gropp и Ewing Lusk
перевод Балуева А.Н. (мат-мех факультет СПбГУ)

Оглавление

C. mpirun and Globus

В начало страницы

В этом разделе мы описываем правила выполнения программ MPI, используя устройство MPICH globus2 в Globus-оснащенном поставляемом вычислительном окружении.

Предполагается, что:

(a) Globus установлен и соответствующие Globus'у демоны исполняются на машинах, на которых вы хотите запустить вашу прикладную MPI-программу,

(b) вы уже получили ваш Globus ID соответствующие полномочия, (c) ваш Globus ID зарегистрирован на всех машинах, и

(d) вы имеете действующую (не просроченную) Globus proxy доверенность.

См. http:www.globus.org относительно дополнительной информации о перечисленных пунктах.

Каждая команда mpirun для устройства globus2 представляет сценарий на языке Globus Resource Specification, или просто RSL-сценарий для сети оснащенных Globus'ами компьютеров. Каждый RSL-сценарий состоит из одного или больше RSL-подзаданий, обычно одно подзадание для каждой машины, участвующей в вычислениях. Вы можете сами составить свой собственный RSL-сценарий для mpirun (используя параметр –globusrsl !rslfilename?), и в этом случае вы не должны указывать в mpirun никакие другие параметры; или вы можете поручить mpirun построить для вас RSL-сценарий на основании аргументов, которые вы передаете mpirun вместе с содержимым вашего machines-файла (как поясняется ниже).

В любом случае важно помнить, что связи между узлами из разных подзаданий всегда реализуются по TCP/IP и что более эффективный, полученный от поставщика MPI используется только в пределах одного подзадания. Параметр –arch не используется в устройствах globus. См. www.globus.org по поводу синтаксиса и семантики языка Globus Resource Specification Language.

C.1. Использование mpirun для конструирования собственных сценариев RSL.

В начало страницы

Этот метод нужно использовать, если вы хотите получить один исполнимый файл, который вовлекает множество из одной или нескольких двоично-совместимых

машин, которые вместе используют одну и ту же файловую систему (т.е., они все имеют доступ непосредственно к исполнимому файлу).

При использовании mpirun для конструирования RSL-сценария вам нужен файл machines. Команда mpirun определяет, какой machines-файл нужно взять, так:

1. Если определен ее аргумент –machinefile !machinefilename?, то берется указанный в нем файл; в противном случае 2. она ищет файл machines в каталоге, в котором вы набираете mpirun; и наконец,

3. ищет !mpidir?/bin/machines, где !mpidir? есть установочный каталог MPICH. Если файла machines нет ни в одном их перечисленных мест, то mpirun сообщает об ошибке.

Файл machines используется для определения списка компьютеров, на которых вы хотите выполнять вашу программу. Компьютеры регистрируются именами «услуг» Globus на каждой машине. В большинстве программ может быть использована услуга по умолчанию, которая требует только полного составного имени области. Проконсультируйтесь у вашего местного администратора Globus или в Globus web site www.globus.org по поводу информации о специальных услугах Globus.

Как пример, рассмотрим следующую пару фиктивных двоично-совместимых машин fm1,m2g.utech.edu, которые имеют доступ к одной и той же файловой системе.

Вот как может выглядеть machines-файл, использующий услуги Globus по умолчанию:

«m1.utech.edu» 10 «m2.utech.edu» 5 Номер в конце каждой строки выборочен (default=1). Он указывает максимальное количество узлов, которое может быть образовано в одном подзадании RSL на каждой машине. Мpirun использует спецификацию –np посредством «циклического перебора» wrapping around machines-файла. Например, использую выше приведенный файл, mpirun –np 8 создает RSL с одним подзаданием с 8 узлами на m1.utech.edu, в то время как mpirun –np 12 создает два подзадания, из которых первое имеет 10 узлов на m1.utech.edu и второе имеет 2 узла на m2.utech.edu, и, наконец, mpirun –np 17 создает три подзадания: первое с 10 узлами на m1.utech.edu , второе с 5 узлами на on m2.utech.edu и последнее подзадание, имеющее два узла опять на m1.utech.edu.

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

C.1.1 Использование mpirun по собственному RSL-сценарию.

В начало страницы

Вы должны использовать mpirun по вашему собственному RSL-сценарию, если вы привязаны к множеству машин, которые не могут выполнять или не имеют доступа к одному и тому же исполнимому файлу (например, машины, которые не

являются двоично-совместимыми и/или не имеют общей файловой системы).

В такой ситуации вы должны в настоящее время использовать так называемый Специфицирующий Ресурсы Язык (RSL) запросов

(или сценариев) для указания имени исполняемого на каждой машине файла. Это очень гибкая,

но довольно сложная техника; она в настоящее время дорабатывается. Простейший путь научиться писать собственные RSL-сценарии состоит в изучении тех

сценариев, которые может сгенерировать для вас mpirun.

Рассмотрим пример, в котором мы хотим выполнять прикладную программу на кластере рабочих станций. Вспомним, что наш машинный файл выглядит подобно следующему:

«m1.utech.edu» 10 «m2.utech.edu» 5 Чтобы увидеть RSL-запрос, генерируемый в такой ситуации, не запуская на самом деле программу, введем следующую команду mpirun:

% mpirun –dumprsl –np 12 myapp 123 456, которая выдаст следующий текст:

+ ( &(resourceManagerContact="m1.utech.edu») (count=10) (jobtype=mpi) (label="subjob 0») (environment=(GLOBUS.DUROC.SUBJOB.INDEX 0)) (arguments=» 123 456») (directory=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus)

(executable=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus/myapp) ) ( &(resourceManagerContact="m2.utech.edu»)

(count=2) (jobtype=mpi) (label="subjob 1») (environment=(GLOBUS.DUROC.SUBJOB.INDEX 1))

(arguments=» 123 456») (directory= /homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus)

(executable=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus/myapp) ) Заметим, что (jobtype=mpi) могут появиться только в тех подзаданиях, чьи машины имеют доставленную от поставщика реализацию MPI.

Дополнительные переменные окружения могут быть добавлены так, как в следующем примере:

+ ( &(resourceManagerContact="m1.utech.edu») (count=10) (jobtype=mpi) (label="subjob 0»)

(environment=(GLOBUS.DUROC.SUBJOB.INDEX 0) (MY.ENV 246)) (arguments=» 123 456») (directory=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus)

(executable=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus/myapp) ) ( &(resourceManagerContact="m2.utech.edu»)

(count=2) (jobtype=mpi) (label="subjob 1») (environment=(GLOBUS.DUROC.SUBJOB.INDEX 1))

(arguments=» 123 456») (directory=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus)

(executable=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus/myapp) ) После редактирования вашего собственного файла RSL вы можете передать его непосредственно mpirun следующим образом:

% mpirun –globusrsl !myrslrequestfile?

Заметим, что передаваемый вами RSL должен быть единственным аргументом, указанным в mpirun. RSL представляет гибкий язык, способный делать много больше, чем показано здесь. Например, он может быть использован для инсценировки действий выполняемых программ и для установки переменных окружения на отдаленных компьютерах перед началом исполнения. Полное описание этого языка можно найти в http://www.globus.org.

Благодарности

В начало страницы

Работа, описанная в этом отчете, обязана в значительной степени беседам и советам с и от большого количества сотрудников. Мы также благодарим тех, кто помогал в реализации MPICH, особенно Patrick Bridges и Edward Karrels. Мы особо благодарны также Nathan Doss и Anthony Skjellum за ценную помощь в реализации и развитии MPICH. Позже к команде реализаторов MPICH присоединился Debbie Swider. Устройство Globus2 было реализовано Nick Karonis из Университета Северного Иллинойса и Brian Toonen из Аргоннской Национальной Лаборатории. Связи с C++ были реализованы Andrew Lumsdaine и Jeff Squyres из Университета Notre Dame. Подсистема ROMIO MPI-2 parallel I/O была выполнена Rajeev Thakur из Аргонна.

Литература

В начало страницы

 1 Ralph Butler and Ewing Lusk. Руководство пользователя по системе p4 параллельного программирования. Technical Report ANL-92/17, Argonne National Laboratory, Argonne, IL, 1992. 2 IMPI Steering Committee. IMPI – межоперационный передающий сообщения интерфейс, 1998. http://impi.nist.gov/IMPI/. 3 James Cownie and William Gropp. Стандартный интерфейс отладочного доступа к информации в очередях сообщений в MPI. Technical Report ANL/MCS-P754-0699,

Mathematics and Computer Science Division, Argonne National Laboratory, June 1999.

 4 Дискуссия по интерфейсам передачи сообщений. MPI: Стандарт интерфейса

передачи сообщений. Computer Science Dept. Technical Report CS-94-230, University of Tennessee, Knoxville, TN, 1994.

 5 William Gropp and Ewing Lusk. Руководство по установке mpich, переносимой

реализации MPI. Technical Report ANL-96/5, Argonne National Laboratory, 1996. 6 William Gropp and Ewing Lusk. Высокопроизводительная реализация MPI навекторных суперкомпьютерах с общей памятью. Parallel Computing, 22(11):1513-1526, January 1997.

 7 William Gropp and Ewing Lusk. Насаждаем MPICH: Изучение распространения

переносимых средств для параллельных научных вычислений. IJSA, 11(2):103-114, Summer 1997.

 8 William Gropp, Ewing Lusk, Nathan Doss, and Anthony Skjellum.

Высокопроизводительная переносимая реализация MPI – стандарта интерфейса передачи сообщений. Parallel Computing, 22(6):789-828, 1996. 9 William Gropp, Ewing Lusk, and Anthony Skjellum. Использование MPI: Переносимого параллельного программирования с интерфейсом передачи сообщений. MIT Press, Cambridge, MA, 1994. 10 William Gropp, Ewing Lusk, and Anthony Skjellum. Using MPI: Portable Parallel Programming with the Message Passing Interface, 2е издание. MIT Press,

Cambridge, MA, 1999. 11 William Gropp, Ewing Lusk, and Rajeev Thakur. Использование MPI-2:Развитие интерфейса передачи сообщений. MIT Press, Cambridge, MA, 1999.

 12 M. T. Heath. Современное состояние и изучение производительности

визуализации с помощью ParaGraph. In G. Haring and G. Kotsis, editors, Performance Measurement and Visualization of Parallel Systems, pages 175-200. Elsevier Science Publishers, 1993. 13 Virginia Herrarte and Ewing Lusk. Изучение поведения параллельныхпрограмм с помощью upshot. Technical Report ANL-91/15, Argonne National Laboratory, 1991.

 14 Edward Karrels and Ewing Lusk. Анализ производительности программ MPI.

In Jack Dongarra and Bernard Tourancheau, editors, Proceedings of the Workshop on Environments and Tools For Parallel Scientific Computing, pages 195-200. SIAM Publications, 1994.

 15 Дискуссия по интерфейсу передачи сообщений. MPI: стандарт интерфейса передачи сообщений. International Journal of Supercomputer Applications, 8(3/4):165-414, 1994.

 16 Peter S. Pacheco. Параллельное программирование с MPI. Morgan Kaufman,

1997.

 17 Marc Snir, Steve W. Otto, Steven Huss-Lederman, David W. Walker, and Jack Dongarra. MPI-Полный справочник: Volume 1, Ядро MPI , 2nd edition. MIT Press, Cambridge, MA, 1998.

 18 Omer Zaki, Ewing Lusk, William Gropp, and Deborah Swider.

К масштабируемой визуализации производительности с помощью Jumpshot. High Performance Computing Applications, 13(2):277-288, Fall 1999.


<<< Оглавление Страницы: Добавления C   >>>