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

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

Оглавление

  • КРАТКОЕ ОПИСАНИЕ
  • 1. ВВЕДЕНИЕ
  • 2. КОМПОНОВКА И ВЫПОЛНЕНИЕ ПРОГРАММ.

    Краткое описание

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

    Интерфейс передачи сообщений (сокращенно MPI) представляет собой стандартную спецификацию для передающих сообщения библиотек.

    MPICH есть мобильная реализация спецификаций MPI для широкого класса параллельной и распределенной вычислительной техники.

    Настоящее Руководство описывает построение и эксплуатацию программ MPI с помощью MPICH-реализации MPI. Версия MPICH 1.2.1 очищена от ошибок и улучшена

    в отношении переносимости, особенно для кластеров, основанных на LINUX. Новое в этой версии:

    – Улучшена поддержка различных компиляторов с Fortran и Fortran 90. В частности, единая версия MPICH теперь может быть построена для употребления различных Fortran-компиляторов; см. детали в руководстве по установке (в doc/install.ps.gz).

    – Облегчено употребление компилятора с Си для программ MPI, которые используют

    MPICH, отличную от той, с помощью которой данная MPICH была построена; см. руководство по установке.

    – Значительно усовершенствована система MPD демонов, которые обеспечивают быстрый старт заданий MPICH, управление stdio, и мощный параллельный отладчик на базе gdb. См. файл README в каталоге mpich/mpid/mpd и настоящее

    руководство о том, как употреблять систему MPD с mpich.

    Версия NT для MPICH была впоследствии усовершенствована и доступна отдельно; см. MPICH download page http://www.mcs.anl/gov/mpi/mpich/download.html.

    Библиотека MPE для регистрации и визуализации программ значительно усовершенствована. См. подробности в файле mpe/README.

    Включена новая версия ROMIO, 1.0.3. См. детали в romio/README.

    Также включена новая версия C++ интерфейса из University of Notre Dame.

    Обнаруженные в настоящем выпуске неполадки и ошибки отражены в файле mpich/KnownBugs. Имеется FAQ в http://www.mcs.anl.gov/mpi/mpich/faq.html . Справьтесь в нем, если при исполнении MPICH получите сообщения: «permission denied», «connection reset by peer», или «poll: protocol failure in circuit setup».

    Имеется статья о jumpshot в ftp://ftp.mcs.anl.gov/pub/mpi/jumpshot.ps.gz Статья о MPD доступна в ftp://ftp.mcs.anl.gov/pub/mpd.ps.gz.

    Следующие свойства были новыми в версии 1.2.0:Полное соответствие MPI 1.2, включая отмену сообщений MPI (Interoperable MPI 2) об управлении потоками.Версия Windows NT теперь доступна как открытый источник. Установка и использование этой версии – другие;

    Настоящее руководство относится только к Unix-версии mpich.

    Поддержка для SMP-кластеров в mpirun.

    Модули Fortran 90 MPI (фактически два, см. раздел 2.1.1).

    Поддержка для MPI.INIT.THREAD (но только для MPI.THREAD.SINGLE) Поддержка для установок VPATH-style, вместе с установочным процессом и выбором имен каталогов, которые ближе к подходу, рекомендованному GNU. Новый, масштабируемый формат log-файлов, SLOG, для использования с регистрационным инструментарием MPE. SLOG-файлы могут читаться новой версией Jumpshot, которая включена в этот выпуск. Обновленная ROMIO, новое устройство для объединенных сетью кластеров, подобных устройству p4, но основанных на демонах и поэтому имеющих ряд новых

    полезных свойств, таких как быстрый запуск. См. детали в разделе 3.2. Свойства, которые были новыми в 1.1.1, именно:

    Подсистема ROMIO, реализует большую часть стандарта MPI-2 для параллельного ввода\вывода. Детали о типах используемых файловых систем и текущих

    ограничениях см. в Romio-документации в romio/doc.

    Привязки MPI-2 стандарта C++ доступны для функций MPI-1.

    Доступно также globus2, новое устройство Globus. Оно заменяет прежние устройства globus. См. раздел 3.3 и приложение C.

    Новая программа для визуализации программ, называемая Jumpshot, доступна как альтернатива программам upshot и nupshot.

    1. Введение

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

    Mpich есть свободно доступная реализация стандарта MPI, работающая на широком классе систем. Подробно реализация mpich описана в 8; туда же относятся 6 и 7. Настоящий документ предполагает, что mpich уже установлена; если нет, нужно прочесть сначала Руководство по установке mpich, мобильной реализации MPI 5. Конкретнее, предполагается, что реализация mpich установлена в `/usr/local/mpich' и вы уже добавили `/usr/local/mpich/bin' к вашему пути. Если mpich установлена где-нибудь в другом месте, нужно вносить соответствующие изменения. Если mpich построена для нескольких различных архитектур и\или коммуникационных механизмов (которые в mpich называются устройствами), вы должны указывать соответствующие каталоги; проверьте, не установил ли кто-нибудь ранее mpich на вашем узле.

    2. Компоновка и выполнение программ.

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

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

    компиляции и вы должны пользоваться предусмотренными в Mpich командами для компиляции и компоновки программ.

    2.1 Сценарии компиляции и компоновки прикладных программ.

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

    Реализация mpich предлагает четыре команды для компиляции и компоновки программ на C (mpicc), Fortran 77 (mpif77), C++ (mpiCC), и Fortran 90 (mpif90). programs. Эти команды можно использовать вместо версий `Makefile.in', особенно для программ, содержащихся в небольшом количестве файлов. К тому же они имеют простой интерфейс с профилирующими и визуализирующими библиотеками, описанными

    в 14, и имеются следующие специальные параметры:

    -mpilog строить версии, генерирующие MPE log-файлы.

    -mpitrace строить версии, генерирующие трассировку.

    -mpianim строить версии, генерирующие анимацию в реальном времени.

    -show показать используемые команды, не выполняя их фактически. Эти команды используются как обычные вызовы компиляторов C, Fortran 77, C++, или Fortran. Например, mpicc –c foo.c mpif77 –c foo.f mpiCC –c foo.C mpif90 –c foo.f и mpicc –o foo foo.o mpif77 –o foo foo.o mpiCC –o foo foo.o mpif90 –o foo foo.o Команды обращения к компоновщику могут включать дополнительные библиотеки. Например, для использования подпрограмм из библиотеки C math library нужно mpicc –o foo foo.o –lm

    Можно также комбинировать компиляцию и компоновку в одной команде, как показано ниже:

    mpicc –o foo foo.c mpif77 –o foo foo.f

    mpiCC –o foo foo.C mpif90 –o foo foo.f

    Заметим, суффиксы .c для C-программ и .f для программ Fortran-77 представляют стандарт, в то время как консенсуса о суффиксах для C++ и Fortran-90

    нет. Те, которые показаны здесь, действуют во многих, но не во всех системах.

    2.1.1 Fortran 90 и модули MPI.

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


    При конфигурации mpich процесс установки нормально ищет компилятор с Fortran 90 и, если находит, строит две различные версии модуля MPI. Один модуль содержит только подпрограммы MPI, которые не принимают аргументы типа «choice»; другой включает все подпрограммы MPI. Аргумент типа choice – такой, который допускает любой тип данных; обычно это буфера в коммуникационных подпрограммах MPI, таких как MPI.Send и MPI.Recv. Эти два различных модуля достижимы для mpif90 через параметры соответственно –nochoice и –choice. Версия модуля с choice поддерживает только ограниченное множество типов данных (численные скаляры и численные одно – и двухмерные массивы). Это – экспериментальное свойство, присылайте свои замечания в mpi-bugs@mcs.anl.gov, если столкнетесь с проблемами. Никакой из этих модулей не обеспечивает «extended Fortran support», определенный в стандарте MPI-2 standard.

    2.2 Компиляция и компоновка без сценариев.

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

    В некоторых случаях невозможно использовать сценарии, предусмотренные в mpich для компиляции и компоновки программ. Например, какой-то инструмент может иметь свои собственные компиляционные сценарии. В таких случаях можно воспользоваться параметрами –compile info и –link info, чтобы побудить компиляционные сценарии mpich указать флажки компилятора и компоновочные библиотеки, которые необходимы для правильного действия подпрограмм mpich.

    Например, при использовании устройства ch.shmem в системе Solaris, библиотечная цепочка (-lthread) должна быть подсоединена к прикладной программе. Если цепочная библиотека не предусмотрена, прикладная программа будет скомпонована, но многие существенные подпрограммы будут заменены пустышками из Си-библиотеки Solаris, что приведет к ошибкам в рабочей программе.

    2.3 Выполнение программ с помощью mpirun.

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

    Для запуска программ MPI нужно использовать команду mpirun, которая находится в `/usr/local/mpich/bin' . Почти для всех систем можно употреблять команду

    mpirun –np 4 a.out для запуска программы `a.out' на четырех процессорах. Команда

    mpirun –help выдаст вам полный список параметров, который содержится также в

    приложении B. По окончании, если не было обнаружено каких-то ошибок, mpirun выдает код 0, а при ошибках выдает не 0 (в настоящее время только 1, но в дальнейшем это может быть изменено).

    2.3.1 Кластеры SMP.

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

    При использовании кластеров симметричных мультипроцессоров (сокращенно SMP) с устройством ch.p4 (конфигурированных с –comm=shared) можно управлять количеством процессов, которые совместно используют память на каждом узле SMP. Для этого прежде всего нужно модифицировать машинный файл (см. раздел 3.1) для указания того, сколько процессов могут быть запущены на каждом хосте. Нормально это число не должно превышать количество процессоров; для SMP с большим количеством процессоров оно должно быть на 1 меньше количества процессоров, чтобы оставить 1 процессор для операционной системы. Формат очень прост: каждая строка машинного файла указывает хост-имя, после которого через двоеточие (:) может следовать допустимое количество процессов. Например, файл со строками

    mercury venus earth mars:2 jupiter:15 указывает три машины с единственными процессами (mercury, venus, и earth),

    двухпроцессорную машину (mars) и 15-процессорную машину (jupiter). По умолчанию, mpirun использует один процесс на каждой машине (точнее, он не будет

    использовать совместную память для коммуникаций между процессами). Если в переменной окружения MPI.MAX.CLUSTER.SIZE установить целое положительное

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

    Например, если MPI.MAX.CLUSTER.SIZE имеет значение 4, то

    mpirun –np 9

    вместе с указанным выше машинным файлом создадут по одному процессу на каждой из mercury, venus и earth, 2 на mars, (потому что машинный файл разрешает 2 процесса с разделением памяти) и 4 на jupiter (потому что jupiter может иметь 15 процессов, а нужны только 4). Если бы были заказаны 10 процессов, mpirun начал бы с начала машинного файла и создал бы дополнительный процесс на mercury; значение MPI.MAX.CLUSTER.SIZE не позволяет mpirun запустить пятый процесс с совместной памятью на jupiter.

    2.3.2 Кратные архитектуры .

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

    При использовании устройств p4 в кластерах рабочих станций обращаться с кратными архитектурами можно, указывая кратные –arch и –np аргументы. Например, для запуска программы на двух sun4 и трех rs6000 с локальной машины

    sun4 используйте mpirun –arch sun4 –np 2 –arch rs6000 –np 3 program

    Это предполагает, что program будет исполняться на обоих архитектурах. Если необходимы различные исполнимые программы, строка '%a' должна быть заменена

    на имя архитектуры. Например, если программы должны быть program.sun4 и program.rs6000, то команда должна быть такой:

    mpirun –arch sun4 –np 2 –arch rs6000 –np 3 program.%a Если же исполнимые программы находятся в различных каталогах, например, в `/tmp/me/sun4' и `/tmp/me/rs6000', то команда должна быть:

    mpirun –arch sun4 –np 2 –arch rs6000 –np 3 /tmp/me/%a/program Важно указать архитектуру с помощью –arch до указания количества процессоров.

    Таким образом, первая команда arch должна относиться к процессору, на котором задание будет запущено. В частности, если не указано –nolocal, то первое

    -arch должно относиться к процессору, с которого запускается mpirun.

    При исполнении на многих машинах типа globus2 mpirun также используется, но для выбора исполнимых программ употребляется другая методика. См. раздел 3.3 и приложение C.

    2.4 Более подробно об управлении.

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

    Для более полного контроля процесса компиляции и компоновки mpich-программ нужно использовать `Makefile'. Вместо модификации `Makefile' для каждой системы, лучше использовать его шаблоны и употреблять команду `mpireconfig' для превращения шаблонов в настоящий `Makefile'. Чтобы сделать это, начните с файла `Makefile.in' в `/usr/local/mpich/examples'. Модифицируйте этот `Makefile.in' для вашей программы и затем выполните

    mpireconfig Makefile (не mpireconfig Makefile.in).

    Это создаст другой `Makefile' из `Makefile.in'. Затем выполните:

    make


<<< Оглавление Страницы: 1 и 2  3 >>>