Руководство по установке mpich

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

Оглавление

  • 12. Интернационализация.
  • 13. Эталонное тестирование.
  • 14. Программное окружение mpich.

    12. Интернационализация.

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

    Mpich имеет средство для выдачи сообщений об ошибках на разных языка. Оно пользуется услугами каталога сообщений X/Open, который обеспечивает стандартным путем многоязыковую поддержку. Эта поддержка часто называется NLS (сокращение National Language Support). Mpich поставляется с сообщениями об ошибках на US English; дополнительные языки будут обеспечиваться, если мы получим переводы (если вы хотите предоставить какой-нибудь, пошлите письмо в mpi-bugs@mcs.anl.gov). Точнее, mpich использует английскую версию на базе ISO Latin-1 (ISO8859-1). Мы собираемся обеспечивать другие версии, которые также используют множество символов Latin-1, подчиненное полученным переводам сообщений.

    Чтобы создать новый каталог сообщений, скопируйте файл `mpich.En.US.msg' в файл `mpich.mylanguage.msg' и переведите входы. Значение `mylanguage' должно соответствовать используемому в вашей системе; например, `mpich.De.DE.msg' для Германии. Многие системы помещают их файлы NLS в `/usr/lib/nls/msg'; можно также проверить значение переменной окружения NLSPATH в вашей системе. Заметим, что некоторые системы имеют подпрограммы и программы для поддержки NLS, но не используют их и не обеспечивают исходное значение для NLSPATH.

    Для пользователей Emacs users проверьте Emacs info в «European Display». Команды M-x standard-display-european M-x iso-accents-mode могут использоваться для ввода большинства европейских языков. Можно также загрузить `iso-transl' и пользоваться C-x 8 для составления символов (это задает старший бит в символе). В настоящее время Mpich не поддерживает языки, которые требуют много-байтовых символьных множеств (такие как японский). Однако, для этого нужно изменить только файл `src/env/errmsg.c'; если вы заинтересованы в развитии версии многобайтного множества символов, пожалуйста дайте нам знать.

    По умолчанию mpich использует значение `NLSPATH', чтобы найти каталог сообщений. При неудаче она пробует `MPICHNLSPATH', а если и это не удается, используется английская версия, закодированная в библиотеке.

    Но каталоги не установлены в этих директориях. Вместо этого они находятся в библиотечной директории, соответствующей архитектуре; например, в `mpich/rs6000/lib'.

    13. Эталонное тестирование.

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

    Каталог mpich/examples/perftest содержит сложный инструмент для измерения времени ожидания и полосы пропускания для mpich в вашей системе. Прежде чем использовать его, убедитесь что mpich была конфигурирована с параметром –mpe. Затем войдите в mpich/examples/perftest и выполните

    make mpirun –np 2 mpptest –gnuplot ? out.gpl

    После этого файл out.gpl будет содержать необходимые команды gnuplot. Файл mppout.gpl будет содержать данные. Для просмотра данных с gnuplot нужно:

    gnuplot out.gpl или использовать

    load 'out.gpl' изнутри gnuplot. В зависимости от вашего окружения и версии gnuplot, вам будет необходимо сначала запустить gnuplot и выдать команду установки терминала x11 перед выполнением load 'out.gpl'.

    Программы mpptest и goptest обладают широким спектром возможностей; параметр –help выдаст их список. Например, mpptest может автоматически определять длину сообщения для обнаружения неожиданных изменений его свойств и может исследовать его способности перемежаться с вычислениями. Эти программы написаны с использованием MPI и могут использоваться с любой реализацией MPI, не только с mpich. (См. файл конфигурирования в каталоге examples/perftest.) Больше информации можно найти в http://www.mcs.anl.gov/mpi/mpptest.

    Эталонное тестирование может быть очень сложным. См. http://www.mcs.anl.gov/mpi/mpptest/hownot.html относительно обычных ошибок такого тестирования. В статье 11 они подробно обсуждаются.

    14. Программное окружение mpich.

    14.1 Введение

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

    Стандарты MPI не содержат ничего кроме программ MPI, даже способа их запуска. MPICH дает некоторые инструментальные средства для управления программами MPI, включающие:

    1. mpirun, переносимую команду запуска, с которой программы MPI могут запускаться в различных окружениях.

    2. mpicc и mpif77, сценарии компиляции и компоновки программ MPI на Cи и Fortran.

    3. mpiCC и mpif90, сценарии компиляции и компоновки программ на C++ и Fortran 90.

    4. mpireconfig, способ создавать Make-файлы по трафаретам из Makefile.in.

    5. mpe, библиотеку полезных подпрограмм, которые работают с MPI. В настоящее время эта библиотека содержит подпрограммы для выдачи log-файлов для событий с отметкой времени, простую параллельную библиотеку X-графики, подпрограммы кодирования последовательных секций, подпрограммы запуска отладчика при обнаружении ошибок. 6.Группу библиотек преопределенного профилирования (predefined profiling libraries.) Стандарты MPI определяют механизм, с помощью которого пользователь может «обвертывать» (заменять?) любую группу функций MPI своими собственными кодами, не используя исходные коды реализации MPI. Мы предоставляем инструментарий для конструирования с минимальными усилиями таких профилирующих версий библиотеки MPI вместе с тремя (построенными?) множествами «оберток» для экономии времени, затрачиваемого подпрограммами MPI на подготовку log-файлов и программную анимацию. 7. upshot, инструмент для исследования log-файлов, выданных регистрирующими (logging) функциями mpe или автоматической регистрацией профилирующей библиотеки. 8. nupshot, экспериментальная, ускоренная версия upshot. 9. jumpshot, Java-версия upshot and nupshot.

    14.2 mpirun, переносимый стартовый сценарий.

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

    Каждое параллельное вычислительное окружение предоставляет механизм для запуска параллельных программ. К несчастью, такие механизмы сильно отличаются друг от друга. Стараясь сделать этот аспект параллельного программирования переносимым, mpich предлагает сценарий, называемый mpirun. Этот сценарий частично настраивается во время процесса конфигурации при установке mpich. Поэтому фактический «источник» mpirun находится в файле mpirun.sh.in в каталоге mpich/bin. Обычно вызов mpirun указывает только номер процесса и имя программы для исполнения:

    mpirun –np 4 cpi

    Полный список параметров mpirun можно получить, запустив

    mpirun –help Результат будет: mpirun mpirun.options… !progname? options…

    Возможные mpirun.options:

    -arch !architecture? определяет архитектуру (должно соответствовать файлу machines.!arch? в /nfs/mcs-homes65/MPI/mpich/bin/machines) если использовать execer (????)

    -h помощь

    -machine !machine name? выполнить процедуру запуска для !machine name?. Сейчас поддерживаются: paragon p4

    sp1 ibmspx anlspx sgi.mp ipsc860 inteldelta cray.t3d execer smp symm.ptx

    -machinefile !machine-file name? получить список машин для работы из файла !machine-file name? Это – список всех доступных машин; используйте –np !np? для запроса нужного количества машин.

    -np !np? указать количество процессоров для работы

    -nodes !nodes? указать количество узлов для работы (для систем SMP сейчас это поддерживает только устройство ch.mpl)

    -nolocal не запускать на локальной машине (действует только для заданий на p4 и ch.p4)

    -stdin filename использовать filename как стандартный вход для программы. Это нужно для программ, которые должны исполняться как пакетные задания для таких систем как некоторые из IBM SP и Intel Paragons с NQS (см. ниже –paragontype). Используйте –stdin /dev/null, если нет ввода и вы собираетесь выполнять программу как фоновую. Альтернативой будет перенаправление стандартного входа из /dev/null, как в mpirun –np 4 a.out ! /dev/null

    -t тестирование

    – do не выполнять фактически, только напечатать, что должно выполняться

    -v добавить подробные комментарии

    -dbx Запустить первый процесс под dbx где возможно

    -gdb Запускает первый процесс под gdb где возможно (на Meiko, выбор и –dbx

    и –gdb запускает вместо этого prun под totalview)

    -ddd Запускает первый процесс под отладчиком ddd debugger (не проверено)

    -xxgdb Запускает первый процесс под xxgdb, если можно (-xdbx не работает)

    -tv Запустить под totalview

    -ksq Задержать очередь отправлений. Это полезно, если позже хотите применить totalview к выполняющимся (или намертво заблокированным) заданиям и увидеть очередь на отсылку. (Нормально они не обслуживаются в форме, видимой отладчиком).

    –54-

    Специальные параметры для NEC – CENJU-3:

    -batch Выполнять программу как пакетное задание (используя cjbr)

    -stdout filename Использовать filename как стандартный вывод для программы.

    -stderr filename Использовать filename как стандартный выход для ошибок.

    -jid Идентификатор задания из Job-Scheduler EASY. Если он указан, то mpirun непосредственно выполняет параллельную программу, используя jobid. В противном случае mpirun запрашивает np nodes из Job-Scheduler в интерактивном или пакетном режиме. В интерактивном режиме (т.е., параметр –batch не указан), mpirun ждет получения процессоров, выполняет параллельную программу и освобождает процессоры.

    Специальные параметры для устройства Globus device:

    -globusrsl filename использовать стартовый файл Globus вместо создания такового. Подавляет –np и –nolocal, выбирает –leave.pg.

    -globusdb filename использовать заданную базу данных ресурсов Globus.

    -globusargs args указывает аргументы для Globus.

    Специальные параметры для пакетного окружения:

    -mvhome Move перенести исполнимые программы в начальный каталог. Нужно, когда все файловые системы не смонтированы перекрестно. В настоящее время используется только при anlspx

    -mvback files вернуть указанные файлы в текущий каталог. Нужно только при использовании –mvhome; в других случаях не действует.

    -maxtime min указывает максимальное время в минутах для выполнения задания. В настоящее время используется только при anlspx. По умолчанию составляет 15 минут.

    -nopoll не использовать коммуникаций в режиме polling. Доступно только на IBM SPx.

    -mem value поузловой запрос на память (в МБ). Нужен некоторым CM-5s. По умолчанию 32.

    -cpu time определяет жесткий лимит времени cpu в минутах для некоторых CM-5s. (По умолчанию 15 минут.)

    Специальные параметры для IBM SP2:

    -cac имя CAC для планировщика ANL. В настоящее время используется только в anlspx. При отсутствии будет выбираться какое-нибудь правильное CAC.

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

    Кратные архитектуры могу обрабатываться указанием кратных аргументов –arch и –np. Например, для выполнения некоей программы на 2 sun4s и 3 rs6000s с локальной машиной sun4 нужно указать

    /home/MPI/mpich/bin/mpirun –arch sun4 –np 2 –arch rs6000 –np 3 program

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

    /home/MPI/mpich/bin/mpirun –arch sun4 –np 2 –arch rs6000 –np 3 program.%a

    Если же исполнимые находятся в разных каталогах, например, в /tmp/me/sun4 и /tmp/me/rs6000, то команда будет

    /home/MPI/mpich/bin/mpirun –arch sun4 –np 2 –arch rs6000 –np 3 /tmp/me/%a/program

    Важно указать архитектуры с помощью –arch ПРЕЖДЕ указания количества процессоров. Таким образом, первая команда –arch должна относиться к процессору, на котором задание будет стартовать. В случае если –nolocal НЕ указан, то –arch должно относиться к процессору, на котором исполняется mpirun.

    14.3 Команды для компиляции и компоновки программ.

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

    Реализация mpich обеспечивает две команды для компиляции и компоновки программ на Си, C++, Fortran-77 и Fortran-90. Эти команды можно употреблять вместо версий из `Makefile.in', особенно для программ, содержащихся в небольшом

    количестве файлов. Кроме того, они имеют простой интерфейс с профилирующимибиблиотеками и библиотеками для визуализации, описанными в 14. Это командыдля комипиляции и компоновки программ MPI. Кроме того, имеются

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

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

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

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

    -show показать команды, которые будут использованы, но не исполнять их.

    Пользуйтесь ими как обычным компилятором. Например,

    mpicc –c foo.c mpiCC –c foo.C mpif77 –c foo.f mpif90 –c foo.f90

    и

    mpicc –o foo foo.o mpiCC –o foo foo.o mpif77 –o foo foo.o mpif90 –o foo foo.o

    Заметим, что для Fortran 90 различные системы могут требовать различные суффиксы. Например, системы AIX не поддерживают f90 как суффикс файла для программ на Fortran 90.

    Команды для компоновщика могут включать дополнительные библиотеки. Например, чтобы использовать некоторые подпрограммы из библиотеки MPE, введите

    mpicc –o foo foo.o –lmpe

    Комбинирование компиляции и компоновки в одной команде как показано здесь:

    mpicc –o foo foo.c mpiCC –o foo foo.C mpif77 –o foo foo.f mpif90 –o foo foo.f90

    может не работать на некоторых системах и поэтому не рекомендуется.

    Можно воздействовать на выбор компилятора, указывая переменные окружения MPICH.CC, MPICH.F77, MPICH.CCC, или MPICH.F90. Однако, знайте, что это сработает только, если альтернативный компилятор совместим с выбираемым по умолчанию (мы под совместимостью подразумеваем, что он использует те же размеры для всех типов данных и форматов и генерирует объектный код, который может использоваться с библиотеками mpich). Если вы хотите заменить компоновщик, используйте переменные окружения MPICH.CLINKER, MPICH.F77LINKER, MPICH.CCLINKER или MPICH.F90LINKER.

    14.4 Mpireconfig, путь создания Make-файлов.

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

    Значительная часть переносимости MPICH обеспечивается тщательным построением Системо-независимых Makef-файлов конфигурационной программой. Это хорошо для установки MPICH, но что делать, если вы строите новое приложение? Для простых приложений команды mpicc и mpif77 могут быть простейшим путем для построения нового приложения. Для более сложных кодов мы рекомендуем брать за образец файл `Makefile.in', например, в `mpich/examples/test/pt2pt'. Модифицируйте те части, которые вам подходят, такие как EXECS, и приспосабливайте назначение программ. Для создания Make-фала выполняйте mpireconfig Makefile (mpireconfig находится в том же каталоге, что и mpirun). Это порождает новый Makefile из Makefile.in, с правильными параметрами для MPICH, которая была установлена.

    14.5 Просмотр log-файлов.

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

    Nupshot представляет новейшую версию upshot 13 и может демонстрировать

    log-файлы, созданные с помощью параметра –mpilog для mpicc или mpif77 иличерез использование средств MPE для log –файлов. Jumpshot 15 естьJava-версия этой программы с некоторыми добавками.


<<< Оглавление Страницы: 9  10 >>>