Версия для печати

Архив документации на OpenNet.ru / Раздел "Программирование, языки" (Многостраничная версия)

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

Оригинал: skif.bas-net.by
next up previous
Next: Быстрый запуск Up: Руководство по инсталляции mpich, Previous: Руководство по инсталляции mpich,


Contents

$\textstyle \parbox{13cm}{
\begin{small}
\begin{abstract}
MPI (Message Passing I...
...} и относящиеся к нему
инструменты.\par
\vspace{2ex}
\end{abstract}\end{small}}$

Данный документ описывает процесс получения и инсталляции mpich [11], переносимой реализации стандарта передачи сообщений MPI. Детали использования реализации mpich приведены в отдельном руководстве пользователя mpich [8]. В mpich версии 1.2.2 в основном исправлены ошибки и увеличена возможность переносимости, особенно для кластеров на базе LINUX.

Новое в 1.2.2:

Новые возможности, включенные в 1.2.1:



Alex Otwagin 2002-12-16

... Lusk1
Перевод Алексея Отвагина
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... них2
Команда mpiman создается в процессе конфигурирования, описанном ниже
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... системами3
Это будет исправлено в следующих версиях mpich при наличии систем для тестирования
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Globus4
См. http://www.globus.org об инструкциях, относящихся к получению и установке Globus
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... автомоунтер5
Да, это не сенсация.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... памяти6
К сожалению, механизмы межпроцессного взаимодействия System V не имеют атрибута ``удален, если нет ссылок''
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...tcl/tk7
Ранние версии upshot были реализованы с помощью Xlib и Athena widgets
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

next up previous contents
Next: Получение и распаковка дистрибутива Up: Руководство по инсталляции mpich, Previous: Contents   Contents

Быстрый запуск

Здесь представлен ряд этапов для установки и минимального тестирования mpich. Детали и инструкции для более глубокого изучения возможностей mpich, включая инсталляцию, проверку, оценку производительности и использование соответствующих инструментов, даны в следующих разделах.
  1. Если у Вас установлен gunzip, получите ``mpich.tar.gz'', иначе используйте ``mpich.tar.Z'' из http://www.mcs.anl.gov/mpi/mpich/download или по анонимному ftp://ftp.mcs.anl.gov из каталога pub/mpi. (Если этот файл слишком велик, попытайтесь получить его частями из
    pub/mpi/mpisplit и соединить их вместе.)
  2. gunzip -c mpich.tar.gz | tar xovf -

    или (при использовании GNU tar)

    tar zxvf mpich.tar.gz

    или (если gzip недоступен)

    zcat mpich.tar.Z | tar xovf -
  3. cd mpich-1.2.2
  4. ./configure
    Это действие вызовет попытку выбрать подходящую для Вас по умолчанию архитектуру и устройство. Если значения по умолчанию не устраивают Вас, см. разд. 4. Наилучшим является указать каталог для инсталляции и конфигурации mpich в данном каталоге. Пример:

    ./configure -prefix=/usr/local/mpich-1.2.2
  5. make >& make.log
    (синтаксис C-shell). Данное действие может продолжаться от 10 мин. до часа или больше в зависимости от загрузки Вашей системы и файлового сервера.
  6. (Необязательно) Для сети рабочих станций или при запуске на отдельной машине отредактируйте файл mpich/util/machines/machines.xxx (где xxx является mpich-именем для архитектуры Вашей машины; Вы должны определить его), чтобы отразить локальные имена машин Вашей сети. Если Вы хотите, этот шаг можно опустить, поскольку, по умолчанию здесь уже будет пять копий для машины, на которой построен mpich. На параллельных машинах этот шаг выполнять не требуется. См. `README' в каталоге `mpich/util/machines' для описания формата.
  7. (Необязательно) Постройте и запустите простую тестовую программу:

    cd examples/basic
    make cpi
    ../../mpirun -np 4 cpi

    С этого момента вы запустили на вашей системе MPI-программу.

  8. (Необязательно) Проведите полный тест по приемке дистрибутива (См. разд. 7 о том, как это делается).
  9. (Необязательно) Постройте остальные инструменты MPI: Для устройства ch_p4 использование безопасного сервера (см. разд. 6.1.3) может ускорить запуск задач; Безопасный сервер строится как часть mpich. Программа nupshot является более быстрой версией upshot, но требует исходные коды tk версии 3.6. Если у Вас есть этот пакет, вы можете построить nupshot командой

    make nupshot
  10. (Необязательно) Если вы хотите установить mpich в общий раздел, чтобы и другие могли использовать его, используйте

    make install

    или

    bin/mpiinstall
    чтобы установить mpich в каталог, указанный опцией -prefix скрипта configure. Инсталляция будет содержать каталоги `include', `lib', `bin', `sbin', `www' и `man', а также небольшой каталог `examples'. Если Вы хотите удалить инсталляцию, Вы можете запустить скрипт

    sbin/mpiuninstall
  11. (Необязательно) С этого момента Вы можете сообщить пользователям, как компилировать и запускать MPI-программы, используя инсталляцию, созданную в /usr/local/mpi (или там, куда Вы его установили). См. разд. 13 о командах, которые могут использовать пользователи. Они также могут копировать Make-файлы из /usr/local/mpi/examples и адаптировать их для собственного пользования.
В следующих разделах мы рассмотрим эти шаги более подробно и опишем другие аспекты дистрибутива mpich, которые Вы хотели бы знать. Руководство пользователя [8] в формате Postscript в каталоге `doc' дает подробную информацию о построении и запуске программ MPI с помощью mpich. И руководство по инсталляции, и руководство пользователя доступны в Web по адресу
http://www.mcs.anl.gov/mpi/mpich/docs.html.

Alex Otwagin 2002-12-16

next up previous contents
Next: Документация Up: Руководство по инсталляции mpich, Previous: Быстрый запуск   Contents

Получение и распаковка дистрибутива

mpich может быть получен по анонимному ftp c ftp.mcs.anl.gov. Зайдите в каталог pub/mpi и возьмите файл mpich.tar.gz. Этот файл - ссылка на самую последнюю версию mpich. В настоящее время он занимает около 9 Mb. Во-первых, выберите каталог, в который Вы распакуете архив. Мы рекомендуем использовать локальную файловую систему (не NFS); это ускорит процесс построения mpich. Данный файл может быть распакован командой

gunzip -c mpich.tar.gz | tar xovf -
или, при использовании GNU tar (например, в Linux)

tar zxvf mpich.tar.gz
Если у Вас не установлен gunzip, но имеется uncompress, то Вы можете вместо этого взять файл
mpich.tar.Z и выполнить

zcat mpich.tar.Z | tar xovf -
или

uncompress mpich.tar.Z

tar xvf mpich.tar
Это приведет к созданию каталога mpich, содержашего в различных подкаталогах весь дистрибутив, включая исходный код, документацию (включая данное руководство), страницы man, среду mpich, описанную в разд. 13 и примеры программ. В частности, вы должны увидеть следующие файлы и каталоги:

COPYRIGHT.
Соглашение о копирайте. Данный программный код является свободно распространяемым, но не бесплатным. Он принадлежит University of Chicago and Missisippi State University.
Makefile.in
Заготовка Make-файла, который будет создан после запуска configure.
MPI-2-C++
Система С++ из Notre Dame. Она включает связывание с С++ для функций MPI-1.
README
Общая информация и инструкции по конфигурации.
aclocal.m4
Используется для построения 'configure' из 'configure.in'; не нужен для большинства инсталляций. Файл aclocal_tcl.m4 включается в aclocal.m4.
ccbugs
Каталог программ, которые тестируют компилятор С во время конфигурации, чтобы убедиться в возможности компиляции системы.
configure
Скрипт, который Вы запускаете для создания Make-файлов системы.
configure.in
Входящий файл autoconf, который создает configure
doc
Различные инструменты создания документации, вместе с руководством по инсталляции и руководством пользователя.
examples
Каталог, содержащий подкаталоги с примерами программ MPI. Следует отметить отдельно basic с несколькими небольшими примерами для первой пробы, test с набором тестов для испытания mpich, и perftest, содержащий код оценки производительности.
include
Библиотека include-файлов, системных и пользовательских.
bin
Содержит программы и исполняемые скрипты, такие как mpicc и mpirun, используемые для построения и запуска программ MPI.
lib
Содержит библиотеки для MPI, mpe и относящихся к ним инструментов.
man
Страницы man для MPI, mpe и внутренних процедур.
mpe
Исходный код расширений mpe для регистрации и графики X Window. Каталог contrib содержит примеры. Лучшими являются подкаталоги mandel и mastermind. Подкаталог профилинга содержит подсистему профилинга, включая систему автоматической генерации "обрамления" для профилирующего интерфейса MPI. mpe также включает программы визуализации производительности, таких как jumpshot (см. разд. 10.2).
mpid
Исходный код различных "устройств", настраивающих mpich на определенную машину, операционную систему и среду.
romio
Система параллельного ввода-вывода ROMIO, включающая реализацию большей части стандарта параллельного ввода-вывода MPI-2.
src
Исходный код переносимой части mpich. Здесь имеются подкаталоги различных частей спецификации MPI.
util
Вспомогательные программы и файлы.
www
Версия HTML для страниц man.
Если у Вас возникли проблемы, обратитесь на домашнюю страницу mpich по адресу
http://www.mcs.anl.gov/mpi/mpich. Эта страница содержит указатели на списки известных ошибок и файлов исправлений. Если вы не нашли нужную информацию здесь, пошлите письмо по адресу
mpi-bugs@mcs.anl.gov.


next up previous contents
Next: Документация Up: Руководство по инсталляции mpich, Previous: Быстрый запуск   Contents
Alex Otwagin 2002-12-16

next up previous contents
Next: Конфигурирование mpich Up: Руководство по инсталляции mpich, Previous: Получение и распаковка дистрибутива   Contents

Документация

Этот дистрибутив mpich поставляется с полным комплектом страниц man о процедурах MPI и расширениях mpe. Команда mpiman в `mpich/bin' является удобным интерфейсом для них2. Каталог `mpich/www' содержит HTML-версии страниц man для MPI и mpe. Каталог `mpich/doc' содержит руководство по инсталляции и руководство пользователя.



Alex Otwagin 2002-12-16

next up previous contents
Next: Конфигурирование mpich для работы Up: Руководство по инсталляции mpich, Previous: Документация   Contents

Конфигурирование mpich

Следующим этапом является конфигурирование mpich для Вашей конкретной компьютерной среды. mpich может быть построен для множества параллельных компьютеров и для сетей рабочих станций. Поддерживаемый список параллельных компьютеров включает IBM SP (используя различные опции взаимодействия), Intel Paragon и IPSC860, HP Exemplar, NEC SX-4, и многопроцессорные системы IBM, SGI, HP, Sun. Поддерживаются рабочие станции семейства Sun4 (как SunOS, так и Solaris), Hewlett-Packard, Compaq 3000 и Alpha, семейство IBM RS/6000, SGI. Также поддерживаются клоны PC, базирующиеся на Intel x86, под управлением ОС LINUX и FreeBSD. Предыдущие версии mpich поддерживали Kendall Square KSR-1 и KSR-2, Meiko CS-2, Thinking Machines CM-5, nCube. Ожидается перенос на новые архитектуры.

Конфигурация mpich выполняется скриптом configure, находящимся в каталоге верхнего уровня. Этот скрипт автоматически создается с помощью программы GNU autoconf (Версия 1.6, но не версия 2) из файла configure.in, но Вам не обязательно необходим autoconf.

Скрипт configure сам по себе достаточно документирован. Если Вы наберете

configure -usage
Вы получите полный список аргументов и их значений; они также указаны в приложении А. Наиболее важными опциями являются

$-$$-$prefix=dir
Префикс инсталляции. configure понимает все обычные аргументы инсталляционных каталогов GNU, включая $-$$-$libdir и $-$$-$mandir. Мы рекомендуем всем пользователям определять каталог инсталляции через $-$$-$prefix.
$-$$-$with-device=name
Устанавливает имя используемого устройства для mpich. devname должно быть именем одного из каталогов в каталоге `mpid', например ch_p4, ch_shmem, globus2 ,ch_p4mpd.
$-$$-$with-comm=name
Выбирает опцию коммуникации для устройства. Сейчас используется только для
устройства ch_p4; поддерживаются значения shared (для узлов SMP) и bproc (для Scyld).
$-$$-$enable-debug
Включает поддержку отладчика TotalView©. Это позволит TotalView показывать информацию об очередях сообщений.
$-$$-$enable-sharedlib
Создает и статические, и разделяемые библиотеки для mpich. Это поддерживается только несколькими системами, включая те, которые используют gcc (например, большинство систем Linux Beowulf).
-automountfix=program
Это иногда необходимо для систем с проблемами автомонтирования (см. разд. 6.1.2).
-rsh=commandname
Устанавливает имя программы для запуска удаленных процессов. Это используется только устройством ch_p4, и если имя не указано, то configure пробует определить подходящую программу.

Кроме того, configure использует переменные окружения, такие,как MAKE, CC, F77, CFLAGS,
FFLAGS
.

Обычно рекомендуется использовать configure с наименьшим числом аргументов. Если вы опустите все аргументы, configure обычно догадается о правильной архитектуре (arch), если Вы не работаете в кросс-платформенной среде, и также выберет подходящее устройство (device). Если подходящим механизмом коммуникации является TCP/IP, по умолчанию выбирается устройство TCP (ch_p4).

mpich реализован с использованием спецификации абстрактного устройства (ADI), описанной в [6]. В некоторых системах это абстрактное устройство сконфигурировано, чтобы стать стандартной коммуникационной подсистемой машины. Это можно выполнить, задав аргумент $-$$-$with-device для configure. Для остальных систем, общее коммуникационное устройство создается с использованием p4 [1,2] и используется как реализация ADI. В этих случаях используйте в качестве устройства ch_p4.

ARCH_TYPE определяет, для какого типа процессора производится компиляция. Возможные значения были приведены выше. Для IBM SP тип архитектуры rs6000. Если опция не задана, configure попытается определить тип.

Некоторые машины имеют множество коммуникационных опций, определяемых аргументом comm. В настоящее время устройство ch_p4 использует их. Выбирая -comm=shared, Вы создаете версию устройства ch_p4, которое допускает использование разделяемой памяти и IP/TCP. Это используется в частности на кластерах симметричных мультипроцессорных систем.

Новое устройство globus2 [3,5], основанное на системе исполнения Globus [4], также доступно. Как и устройство ch_p4, устройство Globus способно использовать коммуникацию многими методами на некоторых платформах. Например, IBM SP могут общаться через IBM MPI или TCP в зависимости от узлов, которые связываются. За деталями обращайтесь на http://www.globus.org.

Некоторые примерные вызовы configure показаны ниже. В большинстве случаев создаются также и библиотеки mpe (см. разд. 9 для подробной информации об инсталляции mpe и руководство пользователя mpich для подробной информации об использовании возможностей mpe). Для сборки без библиотек mpe используйте опцию -without-mpe. В большинстве случаев детальные вызовы, указанные ниже, являются вызовами по умолчанию, т.е. тем, что Вы получите, вызвав configure без аргументов. Поэтому наилучшей общей стратегией будет вначале попробовать

./configure
Если это не сработает, см. информацию ниже о средах, подобных Вашей.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Рабочие станции в общем. Up: Конфигурирование mpich Previous: Конфигурирование mpich   Contents

Конфигурирование mpich для работы с различными компиляторами.

Все больше систем, особенно кластеры, поставляются с собственными компиляторами. Во многих случаях, Вы можете построить mpich, использовав один из этих компиляторов, и позволить пользователям использовать их любимый компилятор для создания собственного кода. Во многих случаях это не требует дополнительных шагов. Пользователи могут просто использовать аргумент командной строки -cc или переменную окружения MPICH_CC для определения другого компилятора.

К сожалению, это не всегда работает. Например, в некоторых случаях, различным компиляторам могут потребоваться различные библиотеки при компоновке программ. Некоторые компиляторы требуют дополнительных опций для поддержки ANSI/ISO C. В частности, поддержка длинных типов данных, таких как long long или long double может зависеть от библиотек времени выполнения, которые специфичны для каждого компилятора. Чтобы обработать все такие случаи для C и C++, Вы можете создать файл с именем `mpicc-<compilename>.conf', т.е. `mpicc-gcc.conf' или `mpicc-pgcc.conf', который содержит все определения, необходимые команде mpicc. mpiCC использует `mpiCC-<compilename>.conf'. Сейчас эти файлы нужно создавать вручную, начав с файла `mpichlib.conf', который создается скриптом configure для mpich в каталоге `mpich/util'. Простейшим способом создания файлов является использование configure:

setenv CC cc
configure $-$$-$prefix=/usr/local/mpich-1.2.2
make
make install
cp util/mpichlib.conf /usr/local/mpich-1.2.2/etc/mpicc-cc.conf

setenv CC gcc
configure $-$$-$prefix=/usr/local/mpich-1.2.2
make
cp util/mpichlib.conf /usr/local/mpich-1.2.2/etc/mpicc-gcc.conf

В этом примере использованы значения по умолчанию для sysconfdir, $prefix/etc.

Например, если mpich использует в качестве компилятора cc, а пользователь ожидает вместо
этого gcc, команда MPICH_CC=gcc

mpicc ...
или
mpicc -config=gcc ...
вызовет загрузку `mpich-gcc.conf' для mpicc и использование подходящих определений.

Alex Otwagin 2002-12-16

next up previous contents
Next: Сети рабочих станций с Up: Конфигурирование mpich Previous: Конфигурирование mpich для работы   Contents

Рабочие станции в общем.

Хотя опции по умолчанию зачастую адекватны, рекомендации этого раздела могут помочь сделать mpich лучше для использования специальных средств, предлагаемых этими системами.

mpich может запускаться на гетерогенных сетях рабочих станций различных типов. Для простого набора рабочих станций можно использовать команду mpirun; более сложные наборы гетерогенных машин требуют наличия файла `procgroup' для p4 (для устройства ch_p4) или файла `RSL' (для устройства globus2). Формат файла `procgroup' описан в разделе 6.1. Формат файла `RSL' можно найти в документации Globus по адресу http://www.globus.org под названием Resource Specification Language (Язык Описания Ресурсов).

Устройство ch_p4 используется наиболее просто, когда все рабочие станции разделяют общую файловую систему. Исполняемые файлы MPI должны размещаться на разделяемой файловой системе. Однако, такая система не необходима. С использованием файла `procgroup' размещение исполняемых файлов на каждой рабочей станции может быть определено в различных местах.

Compaq Alpha
Если все Ваши рабочие станции производства Compaq, Вы можете использовать собственный MPI Compaq. Если вы используете mpich, то для получения всех преимуществ ANSI C Вам нужно добавить -cflags=``-std''. Для строгого ANSI C используйте -cflags=``-std1''.
HP
Если все Ваши рабочие станции производства Compaq, Вы можете использовать собственный MPI для HP. Если Вы используете mpich, не требуется никаких дополнительных шагов.
IBM RS6000
Чтобы получить все преимущества ANSI C, Вам необходимо добавить
-cflags=``-qlanglvl=ansi''. В настоящее время mpich не тестировался в 64-битном режиме на рабочих станциях RS6000; предыдущие версии mpich, использующие устройства ch_mpl или ch_p4, имели проблемы с 64-битным AIX (mpich работает с другими 64-битными операционными системами3).
SGI
configure

Некоторые системы SGI поддерживают как 32-х, так и 64-хбитные указатели (адреса). Mpich использует архитектуру IRIX для ссылок на 32-хбитные системы и IRIX64 - для ссылки на 64-хбитные. Mpich пытается определить подходящую архитектуру автоматически, но Вы можете ускорить выбор, определив архитектуру опцией $-$$-$with-arch=IRIX, $-$$-$with-arch=IRIX32,
$-$$-$with-arch=IRIXN32, $-$$-$with-arch=IRIX64
. Последние три из них соответствуют опциям компилятора SGI -32, -n32, -64. Убедитесь в том, что флаги к компилятору и компоновщику присоединяются через переменные окружения следующим образом

setenv CC ``cc -64''
setenv FC ``f77 -64''
configure ...
Sun
Если все Ваши рабочие станции производства Sun, Вы можете использовать собственный MPI от Sun. Если Вы используете mpich, не требуется никаких дополнительных шагов.


Alex Otwagin 2002-12-16

next up previous contents
Next: Сети рабочих станций с Up: Конфигурирование mpich Previous: Рабочие станции в общем.   Contents

Сети рабочих станций с устройством ch_p4

Многие пользователи mpich хотят использовать кластер типа Beowulf, работающий под управлением Linux (пользователи Windows NT должны проконсультироваться об инструкциях по инсталляции для NT-версии mpich). Устройство ch_p4 является одним из двух устройств, пригодных для Beowulf и других кластеров; вторым является устройство ch_p4mpd, описанное в разделе 4.4

Linux
Устройство ch_p4 должно быть выбрано по умолчанию. Использование разделяемой памяти с опцией -comm=shared поддерживается с версии 1.2.0 через IPC системы Unix. Использование mmap не поддерживается, поскольку LINUX не поддерживает использование MAP_SHARED и MAP_ANONYMOUS. Поскольку System V IPC не могут (из-за проектирования) надежно освобождаться приложением после окончания их использования, Вы можете использовать команду cleanipcs, представленную в mpich.
FreeBSD
Для сети ПК, работающих под FreeBSD версией Unix:
configure $-$$-$with-device=ch_p4 $-$$-$with-arch=freebsd
SGI
(Многопроцессорные системы, такие, как Onyx и Origin 2000), использующие разделяемую память для быстрого прохождения сообщений
configure $-$$-$with-device=ch_p4 -comm=shared
Используйте -arch=IRIX, чтобы установить 32-хбитные указатели и -arch=IRIX64, чтобы установить 64-хбитные указатели.
Sun SunOS
configure $-$$-$with-device=ch_p4 $-$$-$with-arch=sun4
Mpich уже требует компилятора, поддерживающего прототипы ANSI C. Старый компилятор C, привязанный к SunOS, не поддерживает прототипы. Если Вам необходим компилятор с поддержкой прототипов, мы рекомендуем использовать GNU C компилятор (gcc).
Sun Solaris
configure $-$$-$with-device=ch_p4 $-$$-$with-arch=solaris
Compaq Alpha
configure $-$$-$with-device=ch_p4 $-$$-$with-arch=alpha
Fujitsu
Для сети Fujitsu M780s под управлением UXP/M были протестированы следующие опции:
setenv FC frt
configure $-$$-$with-arch=UXPM $-$$-$with-device=ch_p4 $\backslash$
-fflags=``-Oe, -Uep -Eml -Aabe'' $\backslash$
-mpe -mpedbg -prefix=/usr/local/mpi $\backslash$
-tcldir=/usr/local -tkdir=/usr/local -wish=/usr/local/bin/wish
HP HPUX
Для сети рабочих станций HP, включая библиотеку mpe, но исключив из нее графические процедуры X Window:
configure $-$$-$with-device=ch_p4 -arch=hpux -mpe -no_mpegraphics


Alex Otwagin 2002-12-16

next up previous contents
Next: Вычислительные решетки с устройством Up: Конфигурирование mpich Previous: Сети рабочих станций с   Contents

Сети рабочих станций с устройством ch_p4mpd.



Alex Otwagin 2002-12-16

next up previous contents
Next: Процессоры массового параллелизма и Up: Конфигурирование mpich Previous: Сети рабочих станций с   Contents

Вычислительные решетки с устройством globus2

Перед конфигурацией устройства globus2 уже должна быть установлена версия Globus4. Вам необходимо знать имя каталога, где установлен Globus (например, /usr/local/globus). Установите переменную окружения GLOBUS_INSTALL_PATH на имя этого каталога, т.е.
setenv GLOBUS_INSTALL_PATH /usr/local/globus

При конфигурации устройства globus2 вы можете установить одну из ``изюминок'' Globus (т.е. mpi, debug или nodebug, threads, 32- или 64-bit и т.д.). Чтобы увидеть полный список всех ``изюминок'' Globus (поскольку не все из них могут быть установлены на Вашей машине), используйте команду

$GLOBUS_INSTALL_PATH/bin/globus-development-path -help

``Изюминки'', доступные Вам (установленные на Вашей машине) перечисляются как каталоги в
$GLOBUS_INSTALL_PATH/development. Например, инсталяция Globus на рабочей станцией под управлением Solaris может иметь следующие ``изюминки'' :

sparc-sun-solaris2.7_nothreads_standard_debug/
sparc-sun-solaris2.7_pthreads_standard_debug/
sparc-sun-solaris2.7_solaristhreads_standard_debug/

Существует два метода конфигурации устройства globus2. Каждый метод выбирает один из каталогов ``изюминок'' Globus в $GLOBUS_INSTALL_PATH/development. Первый метод состоит в точном указании каталога ``изюминки'', например:

configure $-$$-$with-device=globus2:$\backslash$
-dir=$GLOBUS_INSTALL_PATH/development/sparc-sun-solaris 2.7_nothreads_standard_debug

Вы можете также указать каталог ``изюминки''неявно

configure $-$$-$with-device=globus2:-flavor=nothreads,debug

Наконец, вы можете просто выбрать ``изюминки'' по умолчанию (полученные от
$GLOBUS_INSTALL_PATH/bin/globus-development-path)

configure -device=globus2

Вы должны определить -mpi, чтобы разрешить поддерживаемые поставщиком MPI-взаимодействия для внутримашинных сообщений. Другими словами, при конфигурировании на машинах, которые предоставляют собственную реализацию стандарта MPI, Вы должны определить -mpi для лучшей производительности. Неупоминание -mpi отразится на внутримашинных связях TCP.

Выбор -debug может быть полезным в процессе отладки, но замедляет производительность. -nodebug нужно использовать для отлаженного кода продукта.

В общем, необходимо использовать -nothreads (устройство Globus2 не многопоточное). Вам необходимо выбирать поддержку потоков, только если Вы планируете связать Ваше MPI-приложение с другими модулями, которые потребуют версию Globus с поддержкой потоков (т.е. Вы напишете библиотеку, использующую Nexus, который требует наличие обработчиков потоков). Вы не должны выбирать поточную версию Globus лишь потому, что Ваше MPI-приложение многопоточное. Когда Globus создан, автоматически генерируется специальный Make-файл для mpich. Configure использует этот файл для конфигурирования устройства globus2. Этот специальный Make-файл содержит практически всю информацию, необходимую configure для mpich (включая пути к каталогам, специальные библиотеки, имена компиляторов и компоновщиков C и Фортрана, и т.д.).


Alex Otwagin 2002-12-16

next up previous contents
Next: Построение mpich Up: Конфигурирование mpich Previous: Вычислительные решетки с устройством   Contents

Процессоры массового параллелизма и большие многопроцессорные системы

Многопроцессорные системы Cray
(не CRAY T3D, а например, 4-хпроцессорный Cray YMP или С90)
configure $-$$-$with-device=ch_p4 $-$$-$with-arch=CRAY
HP Exemplar
Для этой системы возьмите, пожалуйста, официальную версию HP (ранее называлась Convex). Она основана на mpich, но настроена для обеспечения лучшей производительности
в Exemplar. Если по некоторым причинам Вы хотите использовать на HP версию mpich с разделяемой памятью, используйте команду
configure $-$$-$with-device=ch_shmem $-$$-$with-arch=hpux
IBM SP
(использует высокопроизводительный переключатель для коммуникации)
configure $-$$-$with-device=ch_mpl $-$$-$with-arch=rs6000
Заметьте, что это требует поддержки для библиотеки передачи сообщений IBM MPL. Некоторые из последних версий программного обеспечения IBM SP могут не включать поддержку этой устаревшей библиотеки. В этом случае, Вы должны использовать реализацию IBM MPI.
Многопроцессорные SGI
такие как Origin 2000. Собственный MPI от SGI хорошо настроен на эти машины. Если Вы хотите использовать mpich, используйте команду
configure $-$$-$with-device=ch_shmem
Configure попытается определить количество доступных процессоров; Вы можете переопределить значение установкой переменной окружения PROCESSOR_COUNT перед запуском configure. С другой стороны, Вы можете отредактировать файл `mpich/mpid/ch_shmem/shdef.h' для регулирования максимального числа процессоров и памяти, которая используется для передачи сообщений через разделяемую память. Если Вам нужно сгенерировать определенную версию, соответствующую опциям $-$$-$32, - n32, -64 компилятора SGI, используйте архитектуры IRIX32, IRIXN32, IRIX64 вместо SGI. Следующее используйте специально для SGI R10000 или R12000:
./configure -arch=IRIX32
./configure -arch=IRIXN32
./configure -arch=IRIX64
Если необходимо определить специальные опции компилятора, они могут быть установлены переменными окружения CC и FC:
setenv CC ``cc -32''
setenv FC ``f77 -32''
configure $-$$-$with-arch=IRIX32 $\backslash$
-opt=``-O2'' $\backslash$
$-$$-$with-device=ch_shmem



setenv CC ``cc -n32 -mips4 -r10000''
setenv FC ``f77 -n32 -mips4 -r10000''
configure $-$$-$with-arch=IRIXN32 $\backslash$
-opt=``-O2''$\backslash$
$-$$-$with-device=ch_shmem



setenv CC ``cc -64 -mips4 -r10000''
setenv FC ``f77 -64 -mips4 -r10000''
configure $-$$-$with-arch=IRIX64 $\backslash$
-opt=``-O2'' $\backslash$
$-$$-$with-device=ch_shmem
(Уровень оптимизации необязателен; -O2 работает для некоторых пользователей. Будьте внимательны к чересчур строгой оптимизации, особенно в коде `mpid/ch_shmem').

См. комментарии для рабочих станций SGI для различных 32-х- и 64-хбитных опций.

NEC SX-4
Для векторных мультипроцессоров с разделяемой памятью NEC SX-4 используйте команду
configure $-$$-$with-device=ch_lfshmem
чтобы получить свободное от блокировок устройство с разделяемой памятью, описанное в [9]. Заметьте, что это устройство требует специального ассемблерного кода или опций компилятора, чтобы работать надежно.

next up previous contents
Next: Построение mpich Up: Конфигурирование mpich Previous: Вычислительные решетки с устройством   Contents
Alex Otwagin 2002-12-16

next up previous contents
Next: Подготовка mpich для отладки Up: Конфигурирование mpich Previous: Процессоры массового параллелизма и   Contents

Построение mpich

По умолчанию, configure устанавливает, что mpich будет компилироваться без оптимизации и с дополнительным кодом для облегчения определения проблем и поведения реализации mpich. Когда mpich пройдет тестирование (см. разд. 7), Вы можете захотеть перестроить mpich без отладочного кода. Это приведет к значительно меньшим библиотекам и слегка ускорит код. Чтобы сделать это, добавьте опции
-opt=-O -disable-devdebug
в строку configure, и перезапустите configure и make. Вы можете включить много оптимизационных опций, заключив их в кавычки:
-opt=``-O -qarch=pwr2''
Будьте внимательны при использовании высокого уровня оптимизации компилятором при компиляции устройств ch_shmem, ch_lfshmem или ch_p4 (с поддержкой разделяемой памяти).

Alex Otwagin 2002-12-16

next up previous contents
Next: Фортран Up: Конфигурирование mpich Previous: Построение mpich   Contents

Подготовка mpich для отладки в TotalView

Чтобы отследить очереди сообщений в TotalView, Вы должны конфигурировать mpich с флагом
$-$$-$enable-debug. Если и только если Вы отлаживаете сам mpich, убедитесь в его конфигурировании с флагом -opt=-g. (Это не требуется для отладки пользовательского кода в TotalView и просмотра очередей MPI). Все эти опции отменены по умолчанию. Естественно, что Ваши приложения должны компилироваться и компоноваться с опцией -g.

Alex Otwagin 2002-12-16

next up previous contents
Next: Что делать, если нет Up: Конфигурирование mpich Previous: Подготовка mpich для отладки   Contents

Фортран

Mpich поддерживает как Фортран 77, так и Фортран 90. Поскольку mpich реализован на C, использование mpich из Фортрана иногда требует специальных опций. Этот раздел обсуждает некоторые из этих вещей. Заметьте, что configure пытается определить опции, необходимые для поддержки Фортрана. Информация этого раздела нужна Вам, только если у Вас возникают проблемы. Раздел 4.9.6 обсуждает поддержку нескольких компиляторов Фортрана (например, g77 или pgf77) единой инсталляцией mpich.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Фортран 90 Up: Фортран Previous: Фортран   Contents

Что делать, если нет компилятора Фортрана?

Программа configure должна обнаружить, что компилятора Фортрана нет. Вы можете сообщить
configure об отсутствии необходимости строить части для Фортрана опцией -disable-f77. В этом случае будут построены и оттестированы только программы на С.

Alex Otwagin 2002-12-16

next up previous contents
Next: Фортран 77 и Фортран Up: Фортран Previous: Что делать, если нет   Contents

Фортран 90

В процессе конфигурирования может быть определен ряд специфичных для Фортрана аргументов. См. вывод для configure -help. В частности при использовании компилятора NAG Fortran 90 Вы должны указать -f90nag.

Alex Otwagin 2002-12-16

next up previous contents
Next: Модули Фортран 90 Up: Фортран Previous: Фортран 90   Contents

Фортран 77 и Фортран 90

Выбор Фортрана 90 и Фортрана 77 должен быть сделан, только когда оба компилятора совместимы, поддерживают одинаковые типы данных и соглашения о вызовах. В частности, если компилятор Фортран 90 поддерживает 8-байтовый целый тип, компилятор Фортран 77 должен поддерживать integer*8 (это необходимо процедурам MPI-IO для значений MPI_OFFSET_KIND). В дополнение к этому оба компилятора должны поддерживать одни и те же функции для доступа к командной строке, и код этих команд должен находиться в одной и той же библиотеке. Если два компилятора Фортрана несовместимы, Вы должны либо выбрать компилятор Фортран 90 в качестве единого для Фортрана 77 и Фортрана 90 (сообразно с восходящей совместимостью Фортрана), либо создать две отдельные конфигурации mpich. Например,
setenv FC f90
setenv F90 f90
configure
будет использовать f90 для программ Фортрана 77 и Фортрана 90. Во многих системах это будет работать. Если есть причины для наличия двух отдельных сборок для Фортрана 77 и Фортрана 90, то выполните следующие команды (когда mpich установлен в каталог /usr/local):
setenv FC f77
configure $-$$-$disable-f90 -prefix=/usr/local/mpich-1.2/f77-nof90
make
make install
setenv FC f90
setenv F90 f90
configure -prefix=/usr/local/mpich-1.2/f90
make
make install
Эта последовательность команд создаст и инсталлирует две версии mpich. Альтернативой является наличие единой версии mpich, как описано в разд. 4.9.6.

Alex Otwagin 2002-12-16

next up previous contents
Next: Конфигурирование для компилятора Absoft Up: Фортран Previous: Фортран 77 и Фортран   Contents

Модули Фортран 90

Если configure находит компилятор Фортран 90, по умолчанию mpich пытается создать модуль Фортран 90. В действительности, он создает две версии модуля mpi: одну, включающую только процедуры MPI, не принимающие аргумент ``по выбору'', и вторую, которая может включать аргумент по выбору. Аргумент по выбору - это аргумент, могущий принимать любой тип данных; обычно это буферы в процедурах коммуникации MPI, таких, как MPI_Send и MPI_Recv.

Два различных модуля могут быть доступны через опцию -nochoice и -choice для mpif90 (скрипт для компиляции и компоновки программ MPI). Версия choice поддерживает ограниченное число типов данных (числовые скаляры и числовые одно- и двумерные массивы). Это экспериментальная возможность; пожалуйста, присылайте почту на mpi-bugs@mcs.anl.gov при любых проблемах.

Причина наличия двух версий модуля MPI состоит в трудности создания полностью корректного модуля, включающего все функции с аргументами ``по выбору''. На многих системах размер модуля Фортран 90 для работы с процедурами, имеющими аргументы ``по выбору'' больше, чем вся версия С библиотеки MPI. Если Вас не интересует модуль MPI для Фортрана 90, или Вы хотите иметь небольшую версию mpich, Вы можете отключить создание модуля MPI для Фортрана 90 опцией $-$$-$disable- f90modules.



Alex Otwagin 2002-12-16

next up previous contents
Next: Конфигурирование для множества компиляторов Up: Фортран Previous: Модули Фортран 90   Contents

Конфигурирование для компилятора Absoft Fortran

Компилятор Absoft способен генерировать внешние обозначения, которые могут быть прописными символами верхнего регистра, строчными символами нижнего регистра и строчными символами нижнего регистра с подчеркиванием (наиболее обычный случай для других компиляторов Фортран для Unix), а также использовать смешанный регистр (в дополнение к Фортрану, который ориентирован на один регистр). Каждый из этих случаев требует отдельной конфигурации и построения mpich. mpich тестировался в режиме генерации имен одного регистра; этот случай поддерживается, поскольку только он поддерживает общие (и необходимые mpich) расширения, такие, как getarg и iargc. По умолчанию, mpich заставляет компилятор Absoft использовать нижний регистр; это удовлетворяет большинству компиляторов Фортрана для Unix. mpich в этом случае должен обнаружить подходящие версии getarg и iargc. Поскольку примеры и набор тестов предполагают, что компилятор Фортрана не различает регистр, то библиотека Фортрана, созданная mpich, будет работать только с программным кодом, использующим для всех вызовов MPI один регистр (верхний или нижний).

В дополнение к этому, Вам необходимо использовать -N90, если Вы используете символьные данные, поскольку интерфейс Фортрана для mpich предполагает соглашение о вызовах, которым пользуются практически все системы Unix Fortran (отдельно обсуждается Cray UNICOS). Если Вы создаете разделяемые библиотеки, Вам также необходимо установить переменную окружения FC_SHARED_OPT в none.

Ранние версии компилятора Absoft не могли обрабатывать множественные опции -I. Если у Вас с этим возникают проблемы, обратитесь за дополнением к Absoft.



Alex Otwagin 2002-12-16

next up previous contents
Next: Специальные выпуски для гетерогенных Up: Фортран Previous: Конфигурирование для компилятора Absoft   Contents

Конфигурирование для множества компиляторов Фортрана

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

Первым этапом является конфигурация mpich с опцией $-$$-$with-flibname. Например, если один из компиляторов - это g77, используйте

setenv F77 g77 ./configure $-$$-$with-flibname=mpich-g77 ... other options ...
После того, как Вы создали, протестировали и инсталлировали эту версию mpich, Вы можете добавить поддержку дополнительных компиляторов Фортрана следующим образом:
  1. Перейдите в каталог `src/fortran'
  2. Выполните
    setenv F77 pgf77
    ./configure $-$$-$with-mpichconfig $-$$-$with-flibname=mpich-pgf77
    make
    make install-alt
Для использования определенного компилятора Фортрана, либо выберите его в командной строке mpif77 опцией -config=name (т.е. -config=pgf77), либо выберите определенную команду для mpif77
(т.е. mpif77-pgf77).



Alex Otwagin 2002-12-16

next up previous contents
Next: Настройка rsh Up: Конфигурирование mpich Previous: Конфигурирование для множества компиляторов   Contents

Специальные выпуски для гетерогенных сетей и устройства ch_p4

При построении mpich для гетерогенных сочетаний рабочих станций, Вы можете запустить configure с опцией $-$$-$no_short_longs. Эта опция указывает mpich, что он не должен предоставлять поддержку для типа С long_double. Это может увеличить производительность между системами, у которых та же самая длина типов данных для всех других типов (некоторые машины на базе Intel x86 имеют длину long double в 12 байт (80 бит); многие другие системы используют для long double 8 или 16).



Alex Otwagin 2002-12-16

next up previous contents
Next: Конфигурация с помощью ssh Up: Конфигурирование mpich Previous: Специальные выпуски для гетерогенных   Contents

Настройка rsh

Если Вы используете rsh совместно с устройством ch_p4, Вам необходимо настроить машину, чтобы иметь возможность пользоваться rsh. Вы должны делать это лишь тогда, когда Вы - системный администратор и понимаете свои действия или когда Вы работаете в изолированной сети. Например, если Вы используете Linux на множестве компьютеров дома или на работе и эти машины не соединены с большей по масштабам сетью, Вы можете следовать этим указаниям. Если любая из машин соединена с другой сетью, обсудите с администратором сети правила пользования rsh. В ином случае рассмотрите возможность использования ssh (см. разд. 4.12) или безопасного сервера (см. разд. 6.1.3).

Следующая информация поясняет настройку отдельной машины, чтобы на ней можно было использовать rsh для запуска процессов. Для установки rsh Вам необходимо убедиться в наличии файла
`/etc/hosts.equiv', который содержит как минимум

localhost your_machine_name
где your_machine_name - это имя Вашей машины, определенное в `/etc/hosts'.

Вы должны также убедиться в том, что файлы `/etc/hosts.allow' и `/etc/hosts.deny' пустые.

При использовании машины, не подключенной к сети, например, ноутбука при путешествиях, Вам может понадобиться сменить установки сети. В некоторых версиях Linux можно использовать netcfg и установить Hostname в localhost и Domain в localdomain.



Alex Otwagin 2002-12-16

next up previous contents
Next: mpich и потоки Up: Конфигурирование mpich Previous: Настройка rsh   Contents

Конфигурация с помощью ssh

Естественным механизмом запуска для устройства ch_p4 в сетях является rsh. Однако, использование rsh требует установки некоторых прав доступа на машинах-участниках. В некоторых сетях установка этих прав нежелательна. Простейшей альтернативой использованию rsh является использование ssh (secure shell - безопасная shell). Она может быть использована для безопасных распределенных вычислений. Она требует определенной настройки, описанной здесь, но очень проста в использовании.

Ниже приведен ряд шагов, которые необходимо осуществить, чтобы ssh корректно работала с mpich.

  1. Убедитесь, что в Вашей системе установлена ssh (команда which ssh). Если ее нет, Вы можете взять ее по адресу http://www.ssh.fi/sshprotocols2/index.html.
  2. Создайте свой ключ авторизации.
    ssh-keygen
    Это действие приведет к генерации пары личного и общего ключа. Личный ключ будет сохранен в
     /.ssh/identity
    а общий ключ будет сохранен в
     /.ssh/identity.pub
  3. Авторизация доступа. Поместите Ваш общий ключ в файл  /.ssh/authorized_keys. Все ключи, упомянутые в этом файле, будут позволять доступ.
    cp /.ssh/identity.pub /.ssh/authorized_keys
    Если машина, на которой Вы соединяетесь, не разделяет общую файловую систему, то
     /.ssh/identity.pub нужно скопировать поверх  /.ssh/authorized_keys той машины, к которой Вы подключаетесь. ssh необходимо, чтобы authorized_keys не имел разрешения на запись для группы, так что сделайте
    chmod go-rwx  /.ssh/authorized_keys
    Этот шаг позволит Вам не вводить пароль каждый раз при запуске команды безопасного shell.
  4. Чтобы избежать ввода пароля всякий раз, когда вызывается ssh, необходимо создать ssh-agent и добавить к нему пароль.
    ssh-agent $SHELL
    ssh-add
  5. Выполните конфигурирование с -rsh=ssh, чтобы устройство ch_p4 использовало ssh вместо rsh:
    configure -rsh=ssh
При возникновении проблем:



Alex Otwagin 2002-12-16

next up previous contents
Next: Процедуры MPI и PMPI Up: Конфигурирование mpich Previous: Конфигурация с помощью ssh   Contents

mpich и потоки

Текущая реализация MPI не поддерживает потоки достаточно надежно. Однако, использование mpich в поточных приложениях возможно до тех пор, пока все вызовы mpich делаются одним из потоков. Примером может служить OpenMP, используемый для параллелизма в циклах вместе с MPI. Однако, Вы можете встретиться с некоторыми проблемами для сигналов. Многие пакеты для потоков используют сигналы SIGUSR1 и/или SIGUSR2. По умолчанию устройство ch_p4 также использует SIGUSR1. Если Вы используете mpich совместно с пакетом для потоков, который использует SIGUSR1, Вам необходимо переконфигурация с добавлением аргумента -listenersig= SIGNAL_NAME в строке $-$$-$with-device=ch_p4 и сборка mpich. Пример:
./configure $-$$-$with-device=ch_p4:-listenersig=SIGUSR2
make



Alex Otwagin 2002-12-16

next up previous contents
Next: Компиляция mpich Up: Конфигурирование mpich Previous: mpich и потоки   Contents

Процедуры MPI и PMPI

Стандарт MPI требует наличия каждой процедуры с префиксами как MPI, так и PMPI: например, MPI_Send и PMPI_Send. mpich пробует использовать слабые обозначения для предоставления этой возможности; это уменьшает размер библиотеки . Вы можете заставить mpich создавать отдельные библиотеки для версий MPI и добавлением опции для configure $-$$-$disable-weak-symbols:
configure $-$$-$disable-weak-symbols ...
Некоторые процедуры MPI реализованы в терминах других процедур MPI. Например, MPI_Bcast в mpich реализован с использованием MPI_Send. Когда используются слабые обозначения, даже PMPI-версии процедур реализуются с использованием MPI (не PMPI) версий. Если Вы хотите использовать процедуры PMPI только с использованием процедур PMPI, используйте $-$$-$disable-weak-symbols при конфигурировании mpich. Заметьте, что это поведение может быть изменено в следующих реализациях.



Alex Otwagin 2002-12-16

next up previous contents
Next: С++ Up: Руководство по инсталляции mpich, Previous: Процедуры MPI и PMPI   Contents

Компиляция mpich

Когда configure определит возможности Вашей системы, все, что Вы должны сделать сейчас - это запустить
make
Эта команда очистит все каталоги от предыдущих объектных файлов (любых), скомпилирует обе версии исходного кода - с профилингом и без него, включая Romio и интерфейс C++, создаст все необходимые библиотеки, и скомпонует программы примеров на С и Фортране для тестирования, чтобы проверить, все ли работает. Если что-либо не сработало, см. разд. 14 для информации об этой проблеме. Если ее нет, следуйте указаниям разд. 14.1 для отправки сообщения об ошибке. Чтобы просто проверить ошибки, можно использовать
make >& make.log &
Можно также создать специальные (не по умолчанию) цели. См. Make-файл о том, какие они могут быть.

После запуска make размер дистрибутива будет около 45 мегабайт (в зависимости от конкретной машины, на которой происходит компиляция и выбранных опций), прежде чем будут созданы любые примеры или дополнительная тестовая библиотека. Make-файлы для различных тестовых подкаталогов уже созданы, но сами примеры программ должны быть собраны "вручную".


Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Построение для множества устройств Up: Компиляция mpich Previous: Компиляция mpich   Contents

С++

Поддержка С++ в mpich предоставлена University of Notre Dame, и использует свой собственный процесс конфигурирования (он также поддерживает другие реализации MPI). Эта версия поддерживает только функции MPI-1, и не включает поддержку функций MPI-2, таких, как ввод/вывод или функции для манипулирования MPI_Info. Вопросы, комментарии, предложения и просьбы о дополнительной информации можно присылать на адрес mpi2c++@mpi.nd.edu. Сообщения об ошибках нужно присылать на mpi-bugs@mcs.anl.gov.

Alex Otwagin 2002-12-16

next up previous contents
Next: Запуск программ MPI Up: Компиляция mpich Previous: С++   Contents

Построение для множества устройств или архитектур

При построении более чем одной версии mpich, например, для поддержки двух различных устройств или нескольких различных архитектур, важно строить каждую версию с конфигурированием с уникальным префиксом и инсталлировать созданную версию, прежде чем собирать следующую. К примеру, чтобы создать версии ch_p4 и ch_shmem для группы рабочих станций под управлением Solaris, нужно использовать следующие команды:
./configure $-$$-$with-device=ch_p4 $\backslash$
-prefix=/usr/local/mpich-1.2.2/solaris/ch_p4
make >& make.log
make install
./configure $-$$-$with-device=ch_shmem $\backslash$
-prefix=/usr/local/mpich-1.2.2/solaris/ch_shmem
make >& make.log
make install
Здесь предполагается, что mpich будет установлен в `/usr/local/mpich-1.2.2' и файлы `make.log' будут проверены, чтобы убедиться в успешном создании библиотек. Версии mpich до 1.2.0 помещают определяемые устройством и архитектурой файлы в каталоги, назначенные mpich. В версии 1.2.0 mpich следует (почти) GNU-подходу к инсталляции. В частности, Вы можете переопределить выбор для большинства каталогов стандартными опциями configure. Например, для смены места для библиотек на `/usr/local/lib', добавьте опцию -libdir=/usr/local/lib.



Alex Otwagin 2002-12-16

next up previous contents
Next: Специальные дополнения о запуске Up: Руководство по инсталляции mpich, Previous: Построение для множества устройств   Contents

Запуск программ MPI

Чтобы сделать программы, запускаемые на параллельных машинах, максимально переносимыми при их написании, среда, поставляемая с mpich, содержит скрипт, делающий это. Это команда mpirun, находящаяся в каталоге mpich/bin, которую Вы возможно захотите добавить в свой путь с помощью (предполагая, что Вы пользуетесь C shell):
set path= ($path /home/me/mpich/bin)
Более детально об mpirun изложено в разд. 13.2. Если Вам требуется запуск в сети рабочих станций, Вам необходим файл machines.xxxx в каталоге mpich/util/machines - см .разд 6.1 о деталях. Системы, использующие различные типы автомонтирования файловых систем, требуют небольших изменений в этих программах - см. разд. 6.1.2.

Некоторые простые MPI-программы расположены в каталоге mpich/examples/basic и содержат программы на С и Фортране для оценки числа $\pi$. Перейдите в этот каталог и выполните (предполагая, что Вы добавили каталог с mpirun в Ваш путь)

make cpi
mpirun -np 4 cpi
чтобы запустить версию С или
make fpi
mpirun -np 4 fpi
чтобы запустить версию Фортран. Теперь Вы провели минимальное тестирование Вашей инсталляции mpich. Вы можете также пожелать проверить производительность MPI на Вашей системе. Вы можете провести грубую оценку, запустив программу systest, также находящуюся в каталоге examples/basic. Чтобы испытать ее, выполните
make systest
mpirun -np 2 systest
Для более точной оценки см. разд. 12.



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Использование устройства ch_p4 Up: Запуск программ MPI Previous: Запуск программ MPI   Contents

Специальные дополнения о запуске в сети рабочих станций

Для запуска в сети рабочих станций Вам необходимо определить некоторым образом сетевые имена машин, с которыми Вы будете работать. Это можно сделать несколькими способами. Они детально описаны в руководстве пользователя. Здесь приведена сокращенная версия.



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Действия при автомонтировании. Up: Специальные дополнения о запуске Previous: Специальные дополнения о запуске   Contents

Использование устройства ch_p4

Простейшим способом является редактирование файла mpich/util/machines/ machines.xxxx, содержащего имена машин архитектуры xxxx. Обозначение xxxx совпадает со значением arch, заданным при конфигурировании mpich. После этого при каждом запуске mpirun из этого файла будет выбрано требуемое число имен машин для запуска. (Здесь нет никакой диспетчеризации; машины выбираются с начала по порядку). Для запуска Ваших программ MPI на отдельной рабочей станции сделайте все строчки в файле одинаковыми. Примерный файл `machines.solaris' может выглядеть так:
mercury
venus
earth
mars
earth
mars
Имена должнеы быть представлены в том же формате, что и вывод команды hostname. Например, если результат hostname для earth был earth.my.edu (и подобный для других имен), то файл machines должен быть:
mercury.my.edu
venus.my.edu
earth.my.edu
mars.my.edu
earth.my.edu
mars.my.edu
Для узлов с несколькими процессорами укажите их количество, дополнив имя двоеточием и количеством процессоров. Например, если mars в предыдущем примере имеет два процессора, то файл machines будет иметь вид
mercury
venus
earth
mars:2
earth
mars:2



Alex Otwagin 2002-12-16

next up previous contents
Next: Скорейший запуск задач для Up: Специальные дополнения о запуске Previous: Использование устройства ch_p4   Contents

Действия при автомонтировании.

Автомотирование - это динамическое присоединение файловых систем при необходимости. Его выполняют программы-автомоунтеры (automounters). Поскольку это очень удобно, многие автомоунтеры не могут распознать имена файловых систем, которые генерирует сам автомоунтер5. Например, если пользователь обращается к файлу `/home/me', автомоунтер может обнаружить, что он должен монтировать эту файловую систему и делает это в точке `/tmp_mnt/home/me'. К сожалению, если автомоунтеру в другой системе предоставлена `/tmp_mnt/home/me' вместо `/home/me', он может не обнаружить файловой системы. Это не было бы проблемой, если команда типа pwd вернула бы `/home/me' вместо '/tmp_mnt/home/me'; к сожалению, слишком легко получить путь, который автомоунтер не может распознать, хотя и должен это делать.

Чтобы справиться с этой проблемой, configure позволяет Вам определить программу-фильтр, если Вы выполните ее с опцией -automountfix=PROGRAM, где PROGRAM - это фильтр, читающий путь к файлу из стандартного ввода, делающий необходимые изменения и записывающий результат в стандартный вывод. mpirun использует эту программу, чтобы найти необходимые ему файлы. По определению значением PROGRAM является

sed -e s@/tmp_mnt/@/@g
Она использует команду sed, чтобы вырезать строку /tmp_mnt из имени файла. Простые скрипты sed, подобные этому могут быть достаточно длинны, до тех пор, пока они не включают в себя кавычки (простые или двойные) или используют % (это может пересекаться с командами shell в configure, выполняющими замену). Если Вам необходима более сложная обработка, используйте отдельный скрипт shell или программу.

В качестве другого примера некоторые системы генерируют пути в виде

/a/thishost/root/home/username/....
которые будут правильными только на машине thishost, но тажке имеют пути в форме
/u/home/username/....
которые верны везде. Для этого случая опция configure
-automountfix=`sed -e s@/a/./home@/u/home@g'
даст уверенность, что mpirun получит верное имя файла.

Alex Otwagin 2002-12-16

next up previous contents
Next: Остановка серверов P4 Up: Специальные дополнения о запуске Previous: Действия при автомонтировании.   Contents

Скорейший запуск задач для устройства ch_p4

При использовании устройства ch_p4 существует возможность ускорить процесс запуска задач, используя безопасный сервер. Безопасный сервер - это программа, выполняющаяся на машинах, перечисленных в `machines.xxxx' (где xxxx - имя архитектуры машины) и позволяющая программам запускаться быстрее. Существует два способа инсталляции этой программы: для одного пользователя и для всех пользователей. Не требуется специальных привилегий для установки безопасного сервера для использования одним пользователем. Для использования безопасного сервера следуйте этим этапам:
  1. Выберите порт. Это номер, который Вы используете для идентификации безопасного сервера (различные номера портов могут использоваться для одновременной работы нескольких безопасных серверов). Хорошим выбором будет номер больше 1000. Если Вы выберете номер, который уже используется, сервер закончит работу, и Вам будет необходимо выбрать другой номер. На многих системах Вы можете использовать команду rpcinfo, чтобы узнать, какие номера портов используются (или зарезервированы). Например, чтобы определить используемые порты на машине mysun, попробуйте
    rpcinfo -p mysun
  2. Запустите безопасный сервер. Для этого служит скрипт `sbin/chp4_servs'
    sbin/chp4_servs -port=n -arch=$ARCH
    Он позволяет запускать сервер через удаленный shell (rsh, remsh или ssh); если Вы не можете использовать удаленный shell, Вам необходимо зарегестрироваться в каждой системе,на которой Вы хотите запустить безопасный сервер и делать это вручную. Команда для запуска индивидуального сервера с использованием порта 2345
    serv_p4 -o -p 2345 &
    К примеру, если Вы выбрали порт 2345 и работаете в Solaris, Вы должны дать команду
    sbin/chp4_servs -port=2345 $-$$-$with-arch=solaris
    Сервер создает протокол своих действий в файле `Secure_Server.Log.xxxx' в текущем каталоге, где xxxx - идентификатор процесса, запустившего сервер (заметьте, что сервер может быть запущен как потомок этого начального процесса).
  3. Чтобы пользоваться безопасным сервером для устройства ch_p4, Вы должны информировать mpirun о номере порта. Вы можете сделать это двумя способами. Первый - это указать mpirun опцию -p4ssport n. Например, если порт имеет номер 2345 и Вы хотите запустить cpi на четырех процессорах, используйте
    mpirun -np 4 -p4ssport 2345 cpi
    Другим способом информирования mpirun о безопасном сервере является использование переменных окружения MPI_USEP4SSPORT и MPI_P4SSPORT. В С shell Вы можете установить их так
    setenv MPI_USEP4SSPORT yes
    setenv MPI_P4SSPORT 2345
    Значение MPI_P4SSPORT должно быть портом, на котором Вы запускаете безопасные серверы. Если эти переменные окружения установлены, никаких опций для mpirun больше не нужно.
Заметьте, что когда mpich установлен, безопасный сервер и команды запуска копируются в каталог `bin', чтобы пользователи могли запустить свои собственные копии сервера. Это обсуждается в руководстве пользователя.

Alex Otwagin 2002-12-16

next up previous contents
Next: Управление серверами Up: Специальные дополнения о запуске Previous: Скорейший запуск задач для   Contents

Остановка серверов P4

Чтобы остановить серверы, их процессы должны завершиться. Это легко сделать с помощью расширяемых инструментов Unix [7] командой
ptfps -all -tn serv_p4 -and -o $LOGNAME -kill INT
С другой стороны Вы можете войти в каждую систему и выполнить что-либо подобное
ps auxww | egrep ``$LOGNAME.*serv_p4''
при использовании ps в стиле BSD, или
ps -flu $LOGNAME | egrep `serv_p4'
при использовании ps в стиле System V. Cтиль System V работает, когда имя команды короткое; ps System V дает Вам только первые 80 символов имени команды, и если она начинается с длинного (хотя и верного) пути в каталог, имя команды может быть потеряно.

Альтернативный подход обсуждается в разд. 6.1.5.


Alex Otwagin 2002-12-16

next up previous contents
Next: Использование демонов MPD для Up: Специальные дополнения о запуске Previous: Остановка серверов P4   Contents

Управление серверами

Существует экспериментальная программа на perl5, помогающая Вам управлять безопасными серверами для p4. Это программа chkserv в каталоге `sbin'. Вы можете использовать ее, чтобы проверить, что Ваши серверы работают, запустить новые серверы или остановить работающие.

Прежде чем использовать этот скрипт, Вам нужно отредактировать его; проверить, что в нем заданы верные значения для serv_p4, portnum и machinelist; Вам также может понадобиться установить первую строку на Вашу версию perl5.

Для проверки состояния Ваших серверов используйте

chkserv -port 2345
Чтобы перезапустить любые серверы, которые остановились, используйте
chkserv -port 2345 -restart
Эта команда не перезапускает серверы, которые уже работают; Вы можете использовать ее как задание cron на каждое утро, чтобы убедиться, что Ваши серверы работают. Заметьте, что она использует ту же самую команду удаленной shell, что и configure; если Вы не можете использовать команду удаленной shell для запуска процесса в удаленной системе, Вам необходимо рестартовать серверы вручную. В этом случае Вы можете использовать вывод от chkserv -port 2345, чтобы определить, какие серверы нужно рестартовать.
chkserv -port 2345 -kill
Эта команда соединяется со всеми работающими серверами и приказывает им завершиться. Она не использует rsh и может выполняться на любой системе.

Это программное обеспечение - экспериментальное. Если у Вас есть комментарии или предложения, пожалуйста, присылайте их на mpi-bugs@mcs.anl.gov.


Alex Otwagin 2002-12-16

next up previous contents
Next: Инсталляция Up: Запуск программ MPI Previous: Управление серверами   Contents

Использование демонов MPD для устройства ch_p4mpd

Новая система MPD вместе со своими преимуществами в скорости запуска и управлением stdio описана в дополнительном к данному документе - руководстве пользователя mpich. Здесь мы кратко обсуждаем процесс инсталляции.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Запуск и управление демонами Up: Использование демонов MPD для Previous: Использование демонов MPD для   Contents

Инсталляция

Для построения mpich с устройством ch_p4mpd конфигурируйте его с опциями
configure $-$$-$with-device=ch_p4mpd -prefix=<installdir> <other options>
Особенно важно определить каталог инсталляции аргументом prefix (если Вы не хотите использовать каталог инсталляции по умолчанию /usr/local), поскольку устройство ch_p4mpd должно быть установлено перед использованием.

Если Вы намерены запускать демонов MPD как root, Вы должны также выполнять конфигурирование с $-$$-$enable-root. Тогда многие пользователи могут использовать для запуска задач один и тот же набор демонов MPD. После конфигурирования, как обычно

make
make install
установит mpich и исполняемые файлы MPD в каталог <installdir>/bin, который нужно добавить в Ваш путь.

Alex Otwagin 2002-12-16

next up previous contents
Next: Специальные дополнения о запуске Up: Использование демонов MPD для Previous: Инсталляция   Contents

Запуск и управление демонами MPD

Запуск программ MPI с устройством ch_p4mpd предполагает, что демон mpd запущен на каждой машине в Вашем кластере. В этой секции мы опишем, как запустить и управлять этими демонами. mpd и относящиеся к нему исполняемые файлы создаются после того, как Вы создали и установили mpich командой
$-$$-$with-device=ch_p4mpd -prefix=<prefix directory> <other options>
и находятся в каталоге <prefix-directory>/bin, который нужно добавить в Ваш путь. Набор демонов MPD можно запустить командой
mpichboot <file> <num>
где file - это имя файла, содержащего имена машин в Вашем кластере и num - это число демонов, которое Вы хотите запустить. Скрипт запуска использует rsh для запуска демонов, однако, это более удобный способ, чем запуск их другим путем. Первый демон может быть запущен командой mpd -t. Первый демон, запущенный таким способом, выводит номер порта, который он слушает для соединения с другими mpd. Каждый последующий mpd получает имя машины и номер порта для соединения. Скрипт mpichboot автоматизирует этот процесс. В любое время Вы можете увидеть, какие mpd запущены, если используете mpdtrace.

mpd идентифицируется по имени машины и порту. Для управления кольцом mpd используется ряд команд:

mpdhelp
Выводит эту информацию
mpdcleanup
Удалает файлы сокетов Unix `/tmp/mpd.*', если это необходимо
mpdtrace
Заставляет каждый mpd в кольце ответить сообщением, идентифицирующим его самого и его соседей.
mpdringtest count
Посылает сообщение по кольцу ``count'' раз и отмечает время
mpdshutdown mpd_id
Останавливает указанный mpd; mpd_id задается как host_portnum.
mpdallexit
Вызывает завершение всех mpd.
mpdlistjobs
Показывает активные задания, управляемые кольцом mpd.
mpdkilljob job_id
Завершает указанную задачу.
Несколько опций управляет поведением демонов, позволяя им запускаться либо отдельными пользователями, либо root'ом без конфликтов. Текущий набор опций командной строки содержит следующие:
-h
<имя машины для соединения>
-p
<номер порта для соединения>
-c
разрешить консоль (по умолчанию)
-n
не разрешать консоль
-d
<отладка (0 или 1)>
-w
<рабочий каталог>
-l
<порт для прослушивания>
-b
фоновое приложение-демонизация
-e
не позволять этому mpd запускать процессы, если пользователь не root
-t
выводить номер порта для прослушивания при запуске
Опция -n позволяет нескольким mpd запускаться на одной машине, отключая консоль для второго и последующего демонов.

Alex Otwagin 2002-12-16

next up previous contents
Next: NFS и MPI-IO Up: Запуск программ MPI Previous: Запуск и управление демонами   Contents

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

При использовании устройств ch_shmem или ch_lfshmem в разделяемой памяти System V, процессы, завершившиеся с ошибкой (например, по нарушению сегментации), могут оставить занятыми семафоры или сегменты разделяемой памяти6. Поскольку число этих объектов обычно ограничено, важно восстановить их. Команда Unix ipcs может использоваться, чтобы показать список выделенных семафоров и сегментов разделяемой памяти, а ipcrm можно использовать для их удаления. Скрипт `bin/cleanipcs' может использоваться для определения и удаления всех System V IPC, занятых вызвавшим его пользователем; использовать его очень просто
bin/cleanipcs


Alex Otwagin 2002-12-16

next up previous contents
Next: Процесс тестирования Up: Запуск программ MPI Previous: Специальные дополнения о запуске   Contents

NFS и MPI-IO

Чтобы использовать MPI-IO multihost на файловой системе nfs, nfs должна иметь версию не ниже 3, и разделяемые каталоги nfs должны монтироваться с установленной опцией ``без кеширования атрибута'' (noac) (каталог не может автомонтироваться). Если nfs не монтируется указанным образом, может возникнуть следующая ошибка:
MPI_Barrier: Internal MPI error: No such file or directory
File locking messages

MPI_Barrier: Внутренняя ошибка MPI: Файл или каталог не найден
Сообщения о блокировке файла
Чтобы реконфигурировать NFS для корректной работы с MPI-IO, необходима следующая последовательность шагов (требуются права root):
  1. Убедитесь, что Вы работаете с nfs версии 3
    rpcinfo -p `hostname' | grep nfs
    к примеру, во втором столбце должна быть `3'
    fire> rpcinfo -p fire | grep nfs
    100003     3     udp     2049     nfs
  2. Отредактируйте `/etc/fstab' для каждого каталога nfs, доступного по записи и чтению MPI-IO на каждой машине, используемой для multihost MPI-IO. Ниже приведен пример правильной строки fstab для /epm1:
    root> grep epm1 /etc/fstab
    gershwin:/epm1 /rmt/gershwin/epm1 nfs bg,intr,noac 0 0
    Если отсутствует опция `noac', добавьте ее и смонтируйте заново этот каталог на каждой машине, которая будет использована для разделения файлов MPI-IO.
    root> umount /rmt/gershwin/epm1
    root> mount /rmt/gershwin/epm1
  3. Убедитесь, что каталог смонтирован с опцией noac
    root> grep gershwin /etc/mnttab
    gershwin:/epm1 /rmt/gershwin/epm1 nfs
    noac, acregmin=0, acregmax=0,acdirmin=0, acdirmax=0 0 0 899911504
Выключение кеширования атрибутов уменьшает производительность приложений MPI-IO и других приложений, использующих этот каталог. Загрузка машины, на которой размещаются каталоги nfs, увеличится.

Alex Otwagin 2002-12-16

next up previous contents
Next: Инсталляция mpich для коллективного Up: Руководство по инсталляции mpich, Previous: NFS и MPI-IO   Contents

Процесс тестирования

Каталог examples/test содержит подкаталоги небольших программ, систематически тестирующих большое подмножество функций MPI. Команда
make testing
в каталоге mpich вызовет компиляцию, компоновку, выполнение этих программ и сравнение их результатов с ожидаемыми. Компоновка всех этих тестовых программ требует определенного места, так что Вы можете выполнить
make clean
в каталоге тестов после их завершения. Отдельные части MPI (каждый с каждым, коллективные обмены, топологии и т.д) можно тестировать отдельно, выполняя
make testing
в отдельных подкаталогах examples/test.

Если у Вас возникли проблемы, сначала ознакомьтесь с руководством по исправлению ошибок и списками известных проблем. Если Вам все еще нужна помощь, отошлите детальную информацию на mpi-bugs@mcs.anl.gov.


Alex Otwagin 2002-12-16

next up previous contents
Next: Команды пользователя Up: Руководство по инсталляции mpich, Previous: Процесс тестирования   Contents

Инсталляция mpich для коллективного использования

Этот шаг необязателен. Однако, если Вы инсталлируете mpich, Вы должны убедиться, что Вы определили каталог, в который будет установлен mpich, когда Вы конфигурируете mpich с использованием опции -prefix. Например, если Вы планируете инсталлировать mpich в `/usr/local/mpich-1.2.2', Вы должны конфигурировать его с опцией -prefix=/usr/local/mpich-1.2.2. Если существует возможность, что Вам понадобится построить mpich для нескольких систем или устройств, Вы должны включить эту информацию в префикс. Например, используя префикс -prefix=/usr/local/mpich-1.2.2/solaris/ch_p4, Вы можете позже добавить префикс -prefix=/usr/local/mpich-1.2.2/solaris/ch_p4smp для версии, созданной с опцией -comm=shared для configure (применяется для кластеров симметричных мультипроцессоров, в соответствии с ``smp'' в имени каталога). После того, как Вы протестировали все части дистрибутива MPI (включая инструменты, особенно upshot и/или nupshot), Вы можете установить mpich в общедоступный каталог и распространить информацию для других пользователей, чтобы каждый смог использовать разделяемую инсталляцию. Чтобы инсталлировать библиотеки и файлы include в общедоступное место, перейдите в каталог верхнего уровня mpich, и выполните
make install
Страницы man копируются вместе с инсталляцией, так что Вы можете добавить
/usr/local/mpich-1.2.2/man к системному MANPATH по умолчанию. Страницы man удобно смотреть с помощью mpiman, находящейся в каталоге mpich/bin.

Существует возможность определить каталог, в который mpich будет установлен после создания, установив значение PREFIX при выполнении этапа инсталляции:

make install PREFIX=/usr/local/mpich-1.2.2
Некоторые возможности, особенно возможность просмотра очередей сообщений mpich в TotalView, работают только, когда mpich сконфигурирован с установкой префикса на инсталляционный каталог.

Хорошим способом обращаться с различными реализациями mpich является установка их в каталоги, имена которых включают номер версии, и настройка связи из mpi в этот каталог. Например, если текущая версия 1.2.2, командами для инсталляции в `/usr/local' будут

make install PREFIX=/usr/local/mpi-1.2.2
rm /usr/local/mpi
ln -s /usr/local/mpi-1.2.2 /usr/local/mpi

Скрипт `bin/mpiinstall' предлагает больше контроля над процессом инсталляции mpich (на самом деле, make install просто запускает этот скрипт). Например, Вы можете снять защиту с файлов, инсталлируемых с опцией -mode=nnnn (для обычных файлов) и -xmode=nnnn (для исполняемых и каталогов). Вы можете определить каталог, в который будут помещены страницы man опцией -manpath=<path>. Опция -help показывает весь набор опций mpiinstall.

Инсталляция nupshot может иногда быть трудоемкой. Вы можете использовать ключ -nonupshot в mpiinstall, чтобы не устанавливать nupshot; с другой стороны, Вы можете использовать ключ
-cpnupshot для установки копии в `mpich/profiling/nupshot'. Обычно mpiinstall содает новую версию nupshot, чтобы быть уверенным в том, что все пути верны (nupshot должен найти файлы там, где он установлен). Если Вам необходимо построить nupshot ``вручную'' для инсталляции, ключ -cpnupshot позволяет Вам инсталлировать эту версию.

Вы можете протестировать инсталляцию, используя configure в каталоге `mpich/examples/test'. Например, если Вы установили mpich в `/usr/local/mpich' для архитектуры solaris и устройства ch_p4, выполните

cd examples/test
./configure -mpichpath=/usr/local/mpich-1.2.2/solaris/ch_p4/bin
make testing
Коды тестов в каталоге `mpich/examples/test' могут использоваться в любой реализации MPI, не только в mpich).

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Установка документации Up: Инсталляция mpich для коллективного Previous: Инсталляция mpich для коллективного   Contents

Команды пользователя

Команды mpirun, mpicc, mpif77, mpiCC, mpif90, mpiman, mpireconfig должны находиться в пути поиска у пользователя. Заметьте, что при поддержке нескольких архитектур и/или устройств mpich, важно, чтобы в путь поиска пользователя были добавлены правильные каталоги. Эти команды инсталлируются в каталог `bin'. Если используется множество архитектур или устройств, убедитесь в том, что пути инсталляции у них различаются. Например, если для системы Solaris созданы устройства ch_p4 и ch_shmem, установите префикс инсталляции, чтобы он включал имена:

-prefix=/usr/local/mpich-1.2.2/solaris/ch_p4 и

-prefix=/usr/local/mpich-1.2.2/solaris/ch_shmem.


Alex Otwagin 2002-12-16

next up previous contents
Next: Страницы man Up: Инсталляция mpich для коллективного Previous: Команды пользователя   Contents

Установка документации

Реализация mpich поставляется с различными видами документации. Инсталляторы поддерживают информацию, специфическую для конкретной инсталляции, такую, как ее размещение (особенно, если это не `/usr/local/mpich-1.2.2').

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Примеры Up: Установка документации Previous: Установка документации   Contents

Страницы man

Полный набор страниц man для реализации mpich находится в ` mpich/man'. `man/man1' содержит команды для компиляции и компоновки программ MPI; `man/man3' содержит процедуры MPI; `man/man4' содержит процедуры mpe, а `man/man5' содержит процедуры MPID (это низкоуровневая часть реализации mpich, не представляющая интереса для пользователей). Команда `mpich/bin/mpiman' - это скрипт, который представляет страницы для mpich в различной форме, используя либо терминальный стиль man, xman, или один из браузеров HTML.

Alex Otwagin 2002-12-16

next up previous contents
Next: Библиотека MPE Up: Установка документации Previous: Страницы man   Contents

Примеры

Пользователи зачастую предпочитают начинать с make-файлов и программ примеров. Каталог, который инсталлируется в `examples', содержит версии для С и Фортрана программы `pi', вместе с
`Makefile.in'. Другие примеры включают простую программу параллельного ввода/вывода и программу MPI, написанную с использованием С++ привязок к функциям MPI. Пользователям могут быть интересны также некоторые примеры, находящиеся к дереве исходных кодов и в каталоге `examples'.

Alex Otwagin 2002-12-16

next up previous contents
Next: Опции конфигурации Up: Руководство по инсталляции mpich, Previous: Примеры   Contents

Библиотека MPE

Библиотека mpe может конфигурироваться и устанавливаться как расширение Вашей текущей реализации MPI, или автоматически в течение конфигурации и сборки mpich. Единственным требованием является конфигурирование со специальным ключом реализации MPI. В настоящее время мы сконфигурировали библиотеку mpe для работы с mpich, LAM/MPI, SGI MPI, IBM MPI и CRAY MPI (не окончательно протестирована).



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Инструкции по инсталляции mpe Up: Библиотека MPE Previous: Библиотека MPE   Contents

Опции конфигурации

Существует три типа опций или ключей configure:
  1. Опции реализации MPI (обязательны)
  2. Общие флаги configure (обязательные/необязательные)
  3. Пользовательские опции (необязательны)

Выполнив

./configure $-$$-$help
в каталоге верхнего уровня библиотеки mpe, можно увидеть список флагов и ключей. Специальные ключи реализации MPI:
$-$$-$with-mpich=DIR
Определяет каталог верхнего уровня, в который установлен mpich (версия 1.0.13 или старше)
$-$$-$with-mpichdev=subdir
Определяет подкаталог архитектуры или устройства, которое Вы хотите использовать
$-$$-$with-lam=DIR
Определяет каталог верхнего уровня, в котором установлен LAM MPI
$-$$-$with-sp
Определяет использование собственной реализации IBM POE/MPI
$-$$-$with-sgi
Определяет использование собственной реализации SGI MPI
$-$$-$with-sgi64
Определяет использование собственной реализации SGI MPI, заставляя ее компилироваться в 64-битном режиме
$-$$-$with-cray
Определяет использование собственной реализации Cray MPI

Если Вы хотите конфигурировать mpe для использования с реализацией MPI, не указанной здесь, Вы можете посмотреть, как `configure.in' в каталоге mpe определяет, какие компиляторы, библиотеки и т.д. используются для указанных выше реализациях MPI. Вы можете затем добавить раздел для Вашей собственной реализации MPI в `configure.in'. Убедитесь, что Вы выполнили

autoconf
чтобы создать новый скрипт configure. (Скрипт configure для mpe создается с помощью autoconf 2.13 (исправленного)). Вам также необходимо добавить ключ для реализации MPI. Это достигается использованием макроса AC_ARG_WITH.

Другой опцией является использование общих ключей MPI, позволяющих Вам определить собственные каталоги include и lib для MPI.

Общие ключи реализации MPI:

$-$$-$with-mpiinc=MPI_INC
Определяет каталог include для MPI, например
- I/pkgs/MPI/include
$-$$-$with-mpilibs=MPI_LIBS
Определяет библиотеки для профилинга и библиотеки MPI - например,
-L$MPI_LIB_DIR -lfmpich -lpmpich -lmpich

Следующая информация не является полным списком, а некоторыми наиболее общими флагами:

-prefix=DIR
Определяет инсталляционный каталог назначения для скрипта `mpeinstall'. При конфигурировании mpich, это может быть тот же самый каталог, что и заданный в опциях configure для mpich или к скрипту `mpiinstall' в каталоге `mpich/util'. Если эта опция опущена, и -prefix задан как опция к configure для mpich, то этот каталог конфигурируется автоматически. Скрипт `mpeinstall' инсталлирует в каталог DIR только необходимые библиотеки и файлы include, а также небольшое подмножество примеров. (См. разд. 9.4)
-libdir=DIR
Определяет каталог верхнего уровня, куда будут установлены библиотеки mpe. Если этот каталог не существует, он будет создан. Этот флаг обязателен, если mpich не используется и безразличен при использовании mpich (-libdir заменяется -mpichdev).
-bindir=DIR
Это важно, только если Вы устанавливаете jumpshot вместе с библиотекой mpe. Этот каталог передается configure для jumpshot и станет каталогом, в который устанавливаются исполняемые файлы jumpshot. При конфигурировании mpich он автоматически конфигурируется для Вас. В обратном случае, если этот флаг опущен, это будет каталог `libdir/../bin'. Если этот каталог не существует, он будет создан.
$-$$-$x-includes=DIR
Это необязательный флаг, определяющий, что include-файлы для X Window находятся в каталоге DIR. Если он опущен, configure для mpe попытается найти их.
$-$$-$x-libraries=DIR
Это необязательный флаг, определяющий, что библиотечные файлы для X Window находятся в каталоге DIR. Если он опущен, configure для mpe попытается найти их.

Опции пользователя:

$-$$-$enable-echo
Включает полное отображение сообщений. По умолчанию enable=no.
$-$$-$enable-mpe_graphics
Этот ключ позволяет создать графические процедуры для mpe. Если он выключен, то процедуры mpe, использующие графику X11, создаваться не будут. Это подходит для систем, в которых либо отсутствуют include-файлы для X11, либо не поддерживается графика X11. По умолчанию enable=yes.
$-$$-$enable-f77
Этот ключ разрешает компиляцию процедур, требующих компилятора Фортрана. При конфигурировании mpich скрипт configure в каталоге верхнего уровня mpich выберет подходящее значение для Вас. Однако оно может быть переопределено. По умолчанию enable=yes.
$-$$-$enable-debug
Эта опция включает флаги отладочных и диагностических сообщений в коде mpe и SLOG-API. По умолчанию enable=no.
$-$$-$enable-jumpshot
Этот ключ позволяет сконфигурировать графический инструмент jumpshot. По
умолчанию enable=yes. Если эта опция включена и Вы не использовали конфигурирование mpich, Вам необходимо также определить каталог, в который будет установлен jumpshot
($-$$-$with-jumpshot_home)
.
$-$$-$enable-buildingmpi.
Этот ключ указывает, что mpe будет строиться как часть большой инсталляции mpich. Он выключает проверку на существование библиотек MPI. Этот ключ не обязателен.
$-$$-$with-tcldir=TCL_DIR
Этот ключ указывает, что tcl находится в каталоге TCL_DIR. Это может быть только версия 7 и в каталоге TCL_DIR должны быть `lib/libtcl.a' и `include/tcl.h'. Только эти файлы используются nupshot. Если этот ключ отсутствует, configure в каталоге mpe пробует самостоятельно найти эти файлы.
$-$$-$with-tkdir=TK_DIR
Этот ключ указывает, что tk находится в каталоге TK_DIR. Это может быть только версия 3, если Вы хотите использовать nupshot и в каталоге TK_DIR должны быть
`lib/libtcl.a' и `include/tk.h'. Это может быть тот же каталог, что и TCL_DIR. Если этот ключ отсутствует, configure в каталоге mpe пробует самостоятельно найти эти файлы.
$-$$-$with-wishloc=WISHLOC
Этот ключ определяет имя исполняемого файла wish для tcl/tk. Если этот ключ отсутствует, configure в каталоге mpe пробует самостоятельно найти версию. Опция используется только для nupshot и upshot. Примечание: Поскольку tcl и tk изменились и стали несовместимыми, мы в конечном итоге перестанем поддерживать любые инструменты, использующие tcl/tk. Более новые версии upshot, jumpshot написаны на Java.
$-$$-$with-jumpshot_home=JUMP_DIR
Этот ключ определяет путь к каталогу верхнего уровня, в котором установлен jumpshot. При конфигурировании mpich эта опция автоматически устанавливается по умолчанию. Она может быть переопределена. Если конфигурирования mpich не было, Вам необходимо определить JUMP_DIR, чтобы конфигурировать jumpshot вместе с библиотекой mpe.
$-$$-$with-jumpshot_opts=JUMP_OPTS
Этот ключ позволяет Вам передать специальные опции
configure для jumpshot. К сожалению, из-за способа autoconf 2, которым он обрабатывает множественные аргументы `AC_ARG_WITH', может быть передан только один аргумент. Если необходимо больше опций, конфигурируйте jumpshot отдельно (см .разд. 9.2). Чтобы увидеть опции jumpshot, перейдите в каталог верхнего уровня jumpshot и наберите ./configure $-$$-$help или прочтите
INSTALL в этом каталоге.
$-$$-$with-slog_home=SLOG_HOME
Этот ключ определяет путь к каталогу верхнего уровня, в котором установлен SLOG-API. При конфигурировании SLOG-API вместе с mpich, опция автоматически конфигурируется по умолчанию. Здесь она может быть переопределена.
$-$$-$with-flib_path_leader=FLIB_PATH_LEADER
Этот ключ указывает, как определить путь к библиотеке Фортрана. Он устанавливается по умолчанию при конфигурировании mpich.
$-$$-$with-f77_extra_flag=F77_EXTRA_FLAG
Этот ключ используется для флагов Фортрана, используемых для компиляции, но не для компоновки. В настоящее время это используется для опции -f компилятора Absoft. При конфигурировании mpich это значение будет определено для Вас.
$-$$-$with-cflags=MPE_CFLAGS
Это необязательный ключ для пользователя, поддерживающий дополнительные CFLAGS для компилятора CC.
$-$$-$with-fflags=MPE_FFLAGS
Это необязательный ключ для пользователя, поддерживающий дополнительные FFLAGS для компилятора Фортрана.

next up previous contents
Next: Инструкции по инсталляции mpe Up: Библиотека MPE Previous: Библиотека MPE   Contents
Alex Otwagin 2002-12-16

next up previous contents
Next: Конфигурирование библиотеки mpe как Up: Библиотека MPE Previous: Опции конфигурации   Contents

Инструкции по инсталляции mpe

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

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Конфигурирование библиотеки mpe как Up: Инструкции по инсталляции mpe Previous: Инструкции по инсталляции mpe   Contents

Конфигурирование библиотеки mpe как части процесса конфигурации и построения mpich

В этой инсталляции mpe не требуется флагов или ключей. configure в каталоге верхнего уровня mpich собирает всю необходимую информацию и передает ее скриптам configure в каталогах jumpshot и mpe. Если не заданы ключи или флаги, то библиотека mpe и графический инструмент jumpshot будут сконфигурированы автоматически. Однако пользователь может пожелать переопределить их, сконфигурировав mpich со следующими опциями:
-mpe_opts=MPE_OPTS
-jumpshot_opts=JUMP_OPTS
где mpe_OPTS - один или несколько вариантов из разд. 9.1, а JUMP_OPTS - одна из опций раздела 10.2.1. Позволяется множественное использование -mpe_opts для определения некоторых опций mpe configure.

Пример 1: Конфигурирование mpich вместе с библиотекой mpe и jumpshot

В каталоге верхнего уровня mpich

./configure <mpich options>
make

Пример 2: Конфигурирование mpich вместе с tcldir и tkdir, заданных в качестве опций mpe для configure

В каталоге верхнего уровня mpich

./configure <mpich options> $\backslash$
-mpe_opts=$-$$-$with-tcldir=<path of tcldir> $\backslash$
-mpe_opts=$-$$-$with-tkdir=<path of tkdir> make

Пример 3: Конфигурирование mpich, библиотеки mpe и jumpshot с определением каталога инсталляции

В каталоге верхнего уровня mpich

./configure <mpich options> -prefix=<install directory>
make

Это полезно, если Вы желаете установить mpich, библиотеку mpe и jumpshot в общедоступное место, чтобы другие пользователи могли ими пользоваться. Чтобы установить все три пакета в инсталляционный каталог, наберите

make install
в каталоге верхнего уровня mpich.

Пример 4: Конфигурирование mpich вместе с библиотекой mpe, но без jumpshot

В каталоге верхнего уровня mpich

./configure <mpich options> -mpe_opts=$-$$-$enable-jumpshot=no
make
configure для jumpshot вызывается через configure для mpe. Поэтому отключение конфигурирования jumpshot производится через опцию configure для mpe. См. разд. 10.2.2 об инструкциях по отдельной установке jumpshot.

Пример 5: Конфигурирование mpich без библиотеки mpe и jumpshot

В каталоге верхнего уровня mpich

./configure <mpich options> -nompe
make
Следует отметить, что после того, как сконфигурируется mpich, существует возможность конфигурирования библиотеки mpe и jumpshot без реконфигурирования mpich. Или возможно, что потребуется реконфигурация mpich, но при этом не нужно переконфигурировать библиотеку mpe и jumpshot.

Alex Otwagin 2002-12-16

next up previous contents
Next: Примеры программ mpe Up: Инструкции по инсталляции mpe Previous: Конфигурирование библиотеки mpe как   Contents

Конфигурирование библиотеки mpe как части существующей реализации MPI

При такой инсталляции mpe требуется специальный ключ реализации MPI. При этом, если реализация MPI - это не mpich, то обязательно использование общего флага -libdir.

Пример 1: Конфигурирование mpe с SGI MPI и без jumpshot

В каталоге верхнего уровня mpe

./configure $-$$-$with-sgi -libdir=<directory path of libdir>
или
./configure $-$$-$with-sgi64 -libdir=<directory path of libdir>
make
Без определения $-$$-$with-jumpshot_home (и без использования mpich), jumpshot не будет сконфигурирован.

Пример 2: Конфигурирование mpe с IBM MPI и jumpshot

В каталоге верхнего уровня mpe

./configure $-$$-$with-sp -libdir=<directory path of libdir> $\backslash$
$-$$-$with-jumpshot_home=<directory path of jumpshot>
make
Без определения -bindir=-DIR исполняемые файлы jupmshot будут находиться в `libdir/../bin'. Если требуется определение специального каталога для двоичных файлов, то выполняйте конфигурирование так:

В каталоге верхнего уровня mpe

./configure $-$$-$with-sp -libdir=<directory path of libdir> $\backslash$
$-$$-$with-jumpshot_home=<directory path of jumpshot> $\backslash$
-bindir=<directory path of bindir>
make

Пример 3: Конфигурирование mpe с существующей реализацией mpich и jumpshot

В каталоге верхнего уровня mpe

./configure $-$$-$with-mpich=<directory path of mpich> $\backslash$
$-$$-$with-mpichdev=<library subdirectory for mpich>
make
Если Ваша реализация mpich содержит подкаталог `mpich/jumpshot', нет необходимости выполнять конфигурирование с опцией $-$$-$with-jumpshot_home. Если же каталога нет, то эта опция необходима.

Пример 4: Конфигурирование mpe с SGI MPI и с передачей опций configure для jumpshot В каталоге верхнего уровня mpe

./configure $-$$-$with-sgi -libdir=<directory path of libdir> $\backslash$
$-$$-$with-jumpshot_home=<directory path of jumpshot> $\backslash$
$-$$-$with-jumpshot_opts=<jumpshot option>
make



Alex Otwagin 2002-12-16

next up previous contents
Next: mpeinstall Up: Библиотека MPE Previous: Конфигурирование библиотеки mpe как   Contents

Примеры программ mpe

Как было замечено ранее, библиотека mpe состоит из трех различных профилирующих библиотек. Каждая реализация MPI требует слегка отличающегося способа связи с этими библиотеками. В процессе конфигурирования путь связи и соответствующие библиотеки определяются и запоминаются в переменных. Эти переменные заменяются в make-файле в каталоге `mpe/contrib/test'. Ниже приведен список этих переменных:

В процессе сборки с каждой из указанных выше библиотек будет скомпонована небольшая программа на С `cpi' (расположена в каталоге `mpe/contrib/test'). В сообщениях вывода make будут присутствовать строки, сообщающие о каждой успешной компоновке. Небольшая программа на Фортране `fpi' в каталоге `mpe/contrib/test' будет скомпонована с библиотекой регистрации через FLIB_PATH. Информация об успешной компоновке также будет присутствовать в выводе make. Если тесты по компоновке будут успешно завершены, то эти пути к библиотекам будут также использоваться для Ваших программ.


Alex Otwagin 2002-12-16

next up previous contents
Next: Визуализация поведения программ Up: Библиотека MPE Previous: Примеры программ mpe   Contents

mpeinstall

Скрипт `mpeinstall' создается в процессе конфигурирования. При конфигурировании mpich скрипт `mpiinstall' вызывает `mpeinstall' Однако `mpeinstall' может использоваться и сам по себе. Его использование необязательно и может использоваться только, если Вы хотите установить библиотеку mpe в общедоступное место, чтобы и другие пользователи работали с ней. Инсталляция состоит из каталогов include, lib, bin и каталога примеров examples. Если был сконфигурирован jumpshot, скрипт `mpeinstall' поместит исполняемые файлы jumpshot в каталог bin.

Alex Otwagin 2002-12-16

next up previous contents
Next: Upshot Up: Руководство по инсталляции mpich, Previous: mpeinstall   Contents

Визуализация поведения программ

Дистрибутив mpich содержит несколько программ для визуалиации log-файлов, созданных приложениями или самой библиотекой mpich. Наиболее ранней программой, включенной в mpich, является upshot, являющийся чистым приложением на tcl/tk7. Его наследник назывался nupshot, и был более быстрым при визуализации вывода больших log-файлов, т.к. часть его написана на С. Новая версия, уже готовая к использованию, хотя и находящаяся в разработке - это версия upshot на Java, которую мы назвали jumpshot. Upshot и nupshot используют файлы формата ASCII, называемые alog. jumpshot использует новый двоичный формат, названный CLOG. mpich по умолчанию создает CLOG-файлы;чтобы получить файлы ALOG, установите переменную окружения mpe_LOG_FORMAT в значение ALOG. Новый расширяемый формат log-файлов, названный SLOG, также поддерживается mpich. Только программа jumpshot может работать с файлами SLOG.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: jumpshot Up: Визуализация поведения программ Previous: Визуализация поведения программ   Contents

Upshot

Одной из программ в каталоге `examples/basic' или подкаталоге `mpe/contrib/test' является cpilog. Эта программа использует некоторые процедуры библиотеки mpe. Если Вы соберете и запустите ее, она создаст простой log-файл, который можно просмотреть инструментом анализа программ upshot или jumpshot. Upshot устанавливается как часть инсталляции mpich, пока не задана опция -nompe для configure для mpich, и configure в подкаталоге `mpe' может найти tk и wish (они могут быть заданы через опции configure для mpe; см. разд. 9.2). Если библиотека mpe построена для реализации MPI иной, чем mpich, configure для mpe все равно необходимо найти tk и wish.

Чтобы использовать upshot для просмотра log-файла, выполните

make cpilog mpirun -np 4 cpilog
upshot cpilog.log


Alex Otwagin 2002-12-16

next up previous contents
Next: Опции конфигурирования Up: Визуализация поведения программ Previous: Upshot   Contents

jumpshot

jumpshot распространяется с двумя скриптами: `jumpshot.in' (для использования с Java 1.1.*) и
`jumpshot12.in' (для использования с Java 1.2.*), которые находятся в подкаталоге
`mpe/viewers/jumpshot-2/bin'. Целью этих скриптов является установка переменной CLASSPATH перед вызовом jumpshot. Чтобы установить переменную CLASSPATH, должны быть определены переменные
JAVA_HOME и jumpshot_HOME. Роль configure в каталоге `jumpshot' состоит в определении этих переменных, передаче их в подходящий файл `.in', создании исполняемого jumpshot или jumpshot12, и помещении его в соответсвующий каталог bin. После добавления этого каталога в Ваш путь поиска, Вы можете вызвать jumpshot из любого каталога, набрав
jumpshot
или
jumpshot <имя файла slog>


Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Инструкции по инсталляции Up: jumpshot Previous: jumpshot   Contents

Опции конфигурирования

jumpshot может быть сконфигурирован тремя способами:

Как часть конфигурирования mpich
.configure в каталоге mpich может вызвать configure в подкаталоге `mpe', который может вызвать configure в подкаталоге `jumpshot'. Это способ конфигурирования mpich по умолчанию, который может быть переопределен с использованием опции -nompe.
Как часть конфигурирования mpe.
configure в каталоге `mpe' может вызвать configure в каталоге `jumpshot'. Это происходит по умолчанию, если библиотека mpe конфигурируется вместе с mpich. С другой стороны, должна быть задана опция $-$$-$with-jumpshot_home=JUMP_HOME.
Сам по себе.
jumpshot можно конфигурировать с помощью configure <опции конфигурирования> в каталоге jumpshot. Наберите
./configure $-$$-$help
в каталоге верхнего уровня `jumpshot', чтобы увидеть список флагов и ключей.

Обязательные флаги и ключи:

$-$$-$with-bindir=DIR
Определяет каталог, в котором будут располагаться исполняемые файлы jumpshot. Без этого флага конфигурирование jumpshot невозможно. При конфигурировании вместе с mpich или библиотекой mpe это значение определяется автоматически (но может быть переопределено).
$-$$-$with-jumpshot_home=JUMP_HOME
Определяет путь к каталогу верхнего уровня, в который инсталлируется jumpshot. Без указания этого каталога jumpshot не будет конфигурироваться. При конфигурировании вместе с mpich это значение определяется автоматически (но может быть переопределено).

Необязательные флаги и ключи configure:

$-$$-$enable-echo
Включает полное отображение сообщений. По умолчанию выключено.
$-$$-$with-java=DIR
Определяет путь к каталогу верхнего уровня Java. Если этот ключ опущен,
configure пытается самостоятельно обнаружить java.
$-$$-$with-java_version=VERSION
Определяет версию Java. Если этот ключ опущен, configure пытается самостоятельно определить Вашу версию java.


Alex Otwagin 2002-12-16

next up previous contents
Next: Построение и использование Jumpshot-3 Up: jumpshot Previous: Опции конфигурирования   Contents

Инструкции по инсталляции

Как было отмечено выше, jumpshot может инсталлироваться как часть конфигурирования mpich, как часть конфигурирования mpe, или сам по себе. Ниже приведены инструкции и примеры каждого типа инсталляции.

Конфигурирование jumpshot как части конфигурирования mpich. В этой инсталляции jumpshot не требуются никакие флаги или ключи. Скрипты configure в каталогах mpich и mpe собирают необходимую информацию и передают их configure в каталоге jumpshot. Если configure в каталоге mpich не заданы никакие опции, jumpshot будет конфигурироваться со значениями по умолчанию. Пользователь может переопределить их, сконфигурировав mpich со следующими опциями:

-mpe_opts=MPE_OPTS
-jumpshot_opts=JUMP_OPTS
где JUMP_OPTS - один из вариантов в разд. 10.2.1 (использование нескольких опций jumpshot не допускается). См .разд. 9.1 о MPE_OPTS.

Пример 1: Конфигурирование mpich вместе с библиотекой mpe и jumpshot

В каталоге верхнего уровня mpich наберите

./configure <опции конфигурирования mpich>
make
Пример 2: Конфигурирование mpich без библиотеки mpe, но с jumpshot

В настоящее время, если mpich конфигурируется без библиотеки mpe, jumpshot не будет сконфигурирован (поскольку configure для mpe вызывает configure для jumpshot). Ниже приведены шаги для конфигурирования mpich и jumpshot без библиотеки mpe.

В каталоге верхнего уровня mpich наберите

./configure <опции конфигурирования mpich> -nompe
make

В подкаталоге jumpshot выполните

configure $-$$-$with-bindir=<путь к каталогу mpich/bin> $\backslash$
$-$$-$with-jumpshot_home=<путь к каталогу jumpshot>
Пример 3: Конфигурирование mpich вместе с библиотекой mpe и каталогом java, заданным как опция к configure для jumpshot.

В каталоге верхнего уровня mpich наберите

./configure <опции конфигурирования mpich> $\backslash$
-jumpshot_opts=$-$$-$with-jumpshot_opts=$-$$-$with-java=<путь к каталогу java>
make
Необходимо указать $-$$-$with-jumpshot_opts, поскольку configure для mpich обрежет -jumpshot_opts, а configure для mpe обрежет $-$$-$with-jumpshot_opts и передаст опцию configure для jumpshot.

Пример 4: Конфигурирование mpich вместе с библиотекой mpe и переопределением опции
jumpshot_home в configure для jumpshot.

В каталоге верхнего уровня mpich наберите

./configure <опции конфигурирования mpich> $\backslash$
-jumpshot_opts=$-$$-$with-jumpshot_opts=$-$$-$with-jumpshot_home=DIR
make

Конфигурирование jumpshot как части конфигурирования mpe.

Пример 1: Конфигурирование библиотеки mpe вместе с jumpshot и mpich (уже сконфигурированным и установленным)

В каталоге верхнего уровня mpe наберите

./configure $-$$-$with-mpich=<каталог верхнего уровня для mpich> $\backslash$
$-$$-$with-mpichdev=<подкаталог библиотеки mpich>
make

Пример 2: Конфигурирование библиотеки mpe вместе с jumpshot и SGI MPI

В каталоге верхнего уровня mpe наберите

./configure $-$$-$with-sgi -libdir=<путь к каталогу libdir> $\backslash$
$-$$-$with-jumpshot_home=<путь к каталогу jumpshot>
make

Пример 3: Конфигурирование библиотеки mpe вместе с IBM MPI без jumpshot

В каталоге верхнего уровня mpe наберите

./configure $-$$-$with-sp -libdir=<путь к каталогу libdir> $\backslash$
$-$$-$enable-jumpshot=no
make

Пример 4: Конфигурирование библиотеки mpe с заданным в качестве опции jumpshot каталогом java

В каталоге верхнего уровня mpe наберите

./configure <ключ реализации MPI> $\backslash$
$-$$-$with-jumpshot_opts=$-$$-$with-java=<путь к каталогу java>
make

Конфигурирование jumpshot самого по себе

Пример 1: Конфигурирование jumpshot

В каталоге верхнего уровня jumpshot наберите

./configure -bindir=<путь к каталогу двоичных файлов> $\backslash$
$-$$-$with-jumpshot_home=<путь к каталогу jumpshot>

Пример 2: Конфигурирование jumpshot с полным отображением сообщений

В каталоге верхнего уровня jumpshot наберите

./configure -bindir=<путь к каталогу двоичных файлов> $\backslash$
$-$$-$with-jumpshot_home=<путь к каталогу jumpshot> $\backslash$
$-$$-$enable-echo=yes

Файл log, создаваемый cpilog не очень интересен, поскольку cpi очень простая программа. Более интересные log-файлы можно найти в подкаталоге `profiling/upshot/logfiles' или подкаталоге `jumpshot/lib/logfiles'. Файл cpilog.c показывает, как настроить Ваш собственный код для создания log-файлов. Руководство пользователя [8] описывает, как связать код с версией mpich, которая создает log-файлы автоматически. Краткое описание программ каталога `examples/basic' содержится в файле README.


next up previous contents
Next: Построение и использование Jumpshot-3 Up: jumpshot Previous: Опции конфигурирования   Contents
Alex Otwagin 2002-12-16

next up previous contents
Next: Интернационализация Up: jumpshot Previous: Инструкции по инсталляции   Contents

Построение и использование Jumpshot-3

Соответствующим инструментом визуализации для файлов slog является jumpshot-3, находящийся в каталоге mpich/jumpshot-3.

Создание jumpshot-3:

Перейдите в каталог `$(MPICH)/jumpshot-3', наберите в командной строке configure. Если configure возвращает сообщение об ошибке, о том, что не может обнаружить верной версии Java, либо Вы хотите сконфигурировать jumpshot под определенную версию Java, выполните

./configure $-$$-$with-java=/homes/chan/java/jdk117_v3
затем наберите
make

Перейдите в каталог `$(MPICH)/jumpshot-3/bin', чтобы убедиться, что исполняемые файлы jumpshot и slog_print здесь. slog_print -это скрипт для запуска SLOG Java API для вывода информации в log-файлах. jumpshot - это скрипт для запуска инструмента визуализации jumpshot-3 для просмотра slog-файлов.

Если у Вас возникли вопросы, присылайте их на mpi-maint@mcs.anl.gov.


Alex Otwagin 2002-12-16

next up previous contents
Next: Оценка производительности mpich Up: Руководство по инсталляции mpich, Previous: Построение и использование Jumpshot-3   Contents

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

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

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

Пользователи emacs могут проверить информацию Emacs в разделе ``European Display''. Команды

M-x standard-display-european
M-x iso-accents-mode
можно использовать для ввода большинства европейских языков. Вы можете также загрузить
`iso-transl' и использовать С-x 8, чтобы создавать символы (это устанавливает старший бит символа). mpich в настоящее время не поддерживает языки, требующие многобайтовых наборов символов (таких, как японский). Однако изменения требуются лишь в файле `src/env/errmsg.c'; если Вы заинтересованы в разработке версии набора символов многобайтовых кодировок, пожалуйста, сообщите нам.

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

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


Alex Otwagin 2002-12-16

next up previous contents
Next: Среда программирования mpich Up: Руководство по инсталляции mpich, Previous: Интернационализация   Contents

Оценка производительности mpich

Каталог 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 и выполнить команду set terminal x11, прежде чем выполнить load 'out.gpl'.Вы можете использовать
gnuplot
set term postscript eps
set output "foo.eps"
load 'out.gpl'
чтобы создать график в формате EPS, как на рис.1.

Программы mpptest и goptest имеют широкий спектр возможностей; опция -help выведет их список. Например, mpptest может автоматически определить длину сообщений, чтобы обнаружить любые изменения в поведении и может исследовать возможность перекрытия обмена сообщениями и вычислений. Эти программы написаны с использованием MPI и могут использоваться с любой реализацией MPI, не только с mpich. (Cм. configure в каталоге examples/perftest). Дополнительная информация доступна на http://www.mcs.anl.gov/mpi/mpptest. Оценка производительности может быть очень сложной. См. http://www.mcs.anl.gov/mpi/mpptest/hownot.html о наиболее общих ошибках тестирования. Работа [10] описывает эти вещи более подробно.

Figure: Пример вывода из mpptest
\includegraphics[width=12cm]{igfig1.good.eps}


Alex Otwagin 2002-12-16

next up previous contents
Next: Введение Up: Руководство по инсталляции mpich, Previous: Оценка производительности mpich   Contents

Среда программирования mpich

mpich поставляется с набором инструментов для облегчения построения, запуска и отладки программ MPI. Они подробно описаны в руководстве пользователя mpich; здесь приведен краткий обзор.



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: mpirun, переносимый скрипт запуска Up: Среда программирования mpich Previous: Среда программирования mpich   Contents

Введение

Стандарт MPI не определяет ничего за рамками программ MPI, даже способ их запуска. mpich поддерживает ряд полезных инструментов для управления программами MPI, в том числе
  1. mpirun, переносимую команду запуска, так что программы MPI могут быть запущены одинаковым образом на многих различных системах.
  2. mpicc и mpif77, скрипты компиляции и компоновки программ MPI на С и Фортране.
  3. mpiCC и mpif90, скрипты компиляции и компоновки программ MPI на С++ и Фортране 90.
  4. mpe - библиотеку полезных процедур, работающих вместе с MPI. Сейчас эта библиотека включает процедуры для создания log-файлов событий с временными отметками, простую библиотеку для параллельной графики X, процедуры для представления кода в виде последовательности блоков, и процедуры запуска отладчика при возникновении ошибки.
  5. Набор предопределенных профилирующих библиотек. Стандарт MPI определяет механизм, в котором пользователь может ``обрамлять'' любой набор функций MPI кодом своих собственных функций, без доступа к исходным кодам реализации MPI. Мы предоставляем инструменты для создания такой профилирующей версии библиотеки MPI минимальными усилиями, а также три созданных заранее множества ``обрамлений'' для определения затрат времени в процедурах MPI, для подготовки log-файлов и для программной анимации.
  6. upshot - инструмент анализа log-файлов, созданных функциями регистрации mpe или автоматической регистрацией в профилирующей библиотеке регистрации.
  7. jumpshot - Java-версия для upshot и nupshot.


Alex Otwagin 2002-12-16

next up previous contents
Next: Команды компиляции и сборки Up: Среда программирования mpich Previous: Введение   Contents

mpirun, переносимый скрипт запуска

Каждая среда параллельного программирования предоставляет определенный механизм для запуска параллельных программ. К сожалению, эти механизмы очень отличны друг от друга. Чтобы сделать этот аспект параллельного программирования переносимым, mpich содержит скрипт, называемый mpirun. Этот скрипт частично настраивается в процессе конфигурирования и создания mpich. Поэтому настоящий исходный код mpirun (для большинства устройств) содержится в файле mpirun.in в каталоге mpich/util; некоторые устройства также имеют дополнительные файлы в их исходных каталогах (например, `mpid/ch_p4'). Наиболее общий вызов mpirun просто определяет количество процессов и программу для запуска:
mpirun -np 4 cpi
Полный список опций mpirun можно получить, выполнив
mpirun -help

Более подробную информацию об использовании mpirun можно найти в руководстве пользователя mpich.


Alex Otwagin 2002-12-16

next up previous contents
Next: Проблемы Up: Среда программирования mpich Previous: mpirun, переносимый скрипт запуска   Contents

Команды компиляции и сборки программ

Реализация mpich предлагает две команды для компиляции и компоновки программ C, C++, Фортран 77 и Фортран 90. Они имеют простой интерфейс с профилирующими библиотеками и библиотекой визуализации, описанной в [12], через следующие опции командной строки:
-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
Отметьте, что для Фортрана 90 разные системы могут потребовать разных суффиксов. Например, AIX не поддерживает f90 как суффикс программ на Фортране 90. Команды для компоновщика могут включать дополнительные библиотеки. Например, для использования некоторых процедур из библиотеки mpe, введите
mpicc -o foo foo.o -lmpe
Комбинирование компиляции и компоновки в одной команде, как показано здесь,
mpicc -o foo foo.с
mpiCC -o foo foo.С
mpif77 -o foo foo.f
mpif90 -o foo foo.f90
может не работать на некоторых системах.

Дополнительная информация об использовании этих команд находится в руководстве пользователя mpich.


Alex Otwagin 2002-12-16

next up previous contents
Next: Отсылка сообщений об ошибке Up: Руководство по инсталляции mpich, Previous: Команды компиляции и сборки   Contents

Проблемы

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

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Проблемы конфигурирования Up: Проблемы Previous: Проблемы   Contents

Отсылка сообщений об ошибке

Любые проблемы, которые Вы не смогли решить, прочитав этот раздел, можно прислать на адрес
mpi-bugs@mcs.anl.gov. Пожалуйста, укажите:

Если у Вас возникло более одной проблемы, пожалуйста, присылайте их в отдельных сообщениях; это упрощает нашу обработку сообщений об ошибках.

Остальная часть этого раздела содержит информацию о устранении ошибок в mpich. Некоторая часть описывает проблемы, свойственные определенным средам, и дает соответствующие пояснения. Каждый раздел организован в форме ответов на вопросы, причем вопросы, относящиеся к более чем одной среде (рабочей станции, ОС), продолжаются вопросами для определенных систем. Проблемы с кластерами рабочих станций собраны в одном месте.


Alex Otwagin 2002-12-16

next up previous contents
Next: Общие Up: Проблемы Previous: Отсылка сообщений об ошибке   Contents

Проблемы конфигурирования



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Linux Up: Проблемы конфигурирования Previous: Проблемы конфигурирования   Contents

Общие

  1. В: При попытке запустить configure, я получаю сообщения типа
    ./configure : синтаксическая ошибка в строке 20: ' (' не определена
    О: У Вас устаревшая версия Bourne Shell (sh). mpich требует, чтобы shell поддерживала процедуры; это было стандартом в большинстве Bourne Shell. Чтобы справиться с этим, Вы можете (а) получить дополненную версию от своего поставщика или (б) инсталлировать любую общедоступную замену shell.
  2. В: configure сообщает, что компилятор не работает, но с ним все в порядке (он исполняет тест, который завершается без проблем).

    О: Возможно, Вы используете Bash shell (`/bin/bash') в качестве замены Bourne shell (`/bin/sh'). Нам сообщали что, например, в LINUX, Bash не всегда корректно возвращает результат выражения. Способом исправить это является использование другого shell, например `/bin/ash' в такой системе.

    Это может не работать на некоторых системах LINUX (любая shell не справится). Нам сообщили, что следующий фрагмент будет работать:

    1. В configure замените trap `rm -f confdefs*' 0 на trap `rm -f confdefs*' 1
    2. После завершения configure удалите файл `confdefs.h' вручную.
  3. В: configure сообщает об ошибках в виде
    checking gnumake... 1: Плохой номер файла
    О: Некоторые версии bash shell некорректно обрабатывают перенаправление вывода. Либо обновите свою версию bash, либо запустите configure под другой shell (такой, как /bin/sh). Убедитесь, что используемая версия sh - это не псевдоним bash. configure пробует определить эту ситуацию и обычно выдает сообщение об ошибке.
  4. В: configure сообщает, что числа с плавающей точкой не коммутативны! Как это исправить?

    О: Смотрите документацию Вашего компилятора. На RS/6000 используйте опцию -qnomaf. На некоторых других системах промежуточные результаты могут запоминаться в 80-битных регистрах (процессоры Intel); это также ведет к неправильному округлению. Вам необходимо заставить компилятор округлять до 64 бит.



Alex Otwagin 2002-12-16

next up previous contents
Next: Проблемы построения mpich Up: Проблемы конфигурирования Previous: Общие   Contents

Linux

  1. В: Этап конфигурирования выдает сообщение:
    checking that the compiler f77 runs... no
    Fortran compiler returned non-zero return code
    Output from test was
    f2ctmp_conftest.f:
    MAIN main:
    О: Возможно, это вызвано проблемой с компилятором Фортрана в LINUX. Команда f77 в LINUX зачастую является скриптом shell, использующим программу f2c для преобразования программы на Фортране в С с последующей компиляцией ее компилятором С. Во многих версиях LINUX этот скрипт содержит ошибку, которая возвращает ненулевой код возврата даже при успешном завершении компиляции.

    Чтобы исправить эту ошибку, Вам необходим скорректированный скрипт f77. Если Вы можете исправить его сами, измените последние три строки

    case $cOPT in 2) $CC $G -o $OUTF $OFILES -lf2c -lm;; esac
    rc=$?
    exit $rc
    на строки
    case $cOPT in 2) $CC $G -o $OUTF $OFILES -lf2c -lm;; esac
    rc=$?
    trap 0
    exit $rc
  2. В: Тест компоновки завершается в LINUX с ошибкой типа:
    overtake.o (.text+0x59): undefined reference to `MPI_COMM_WORLD'
    overtake.o (.text+0x81): undefined reference to `MPI_COMM_WORLD' ...
    О: Возможно, это вызвано проблемой с компилятором Фортрана в LINUX. Команда f77 в LINUX зачастую является скриптом shell, использующим программу f2c для преобразования программы на Фортране в С с последующей компиляцией ее компилятором С. Во многих версиях LINUX этот скрипт содержит ошибку, которая возвращает ненулевой код возврата даже при успешном завершении компиляции.

    Чтобы исправить эту ошибку, Вам необходим скорректированный скрипт f77. Если Вы можете исправить его сами, измените последние три строки

    case $cOPT in 2) $CC $G -o $OUTF $OFILES -lf2c -lm;; esac
    rc=$?
    exit $rc
    на строки
    case $cOPT in 2) $CC $G -o $OUTF $OFILES -lf2c -lm;; esac
    rc=$?
    trap 0
    exit $rc
  3. В: Во время этапа конфигурирования иногда возникает сообщение
    /homes/me/mpich/configure: 134956160: Permission denied
    Что неверно?

    О: Это ошибка в Linux sh shell. shell пытается создать файл с именем `/tmp/t<processid>-sh' (например, `/tmp/t11203-sh'), но не может этого сделать. Это может произойти, если `/tmp' переполнен; однако, это может произойти и когда shell создала этот файл для другого пользователя ранее. (Вы можете увидеть, что произошло, запустив configure под управлением strace -f). Единственным решением будет уничтожение старых файлов в `/tmp' вашим системным администратором.



Alex Otwagin 2002-12-16

next up previous contents
Next: Общие Up: Проблемы Previous: Linux   Contents

Проблемы построения mpich



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Сети рабочих станций Up: Проблемы построения mpich Previous: Проблемы построения mpich   Contents

Общие

  1. В: При запуске make для mpich возникает ошибка:
    ar: write error : No such file or directory
    *** Error code 1
    При этом все файлы доступны и имеют соответствующие права доступа.

    О: Проверьте наличие свободного пространства в `/tmp'. Эта ошибка иногда возникает, когда в `/tmp' не хватает места для копирования архива (эту операцию ar выполняет при дополнении библиотеки). Команда df /tmp покажет Вам объем свободного места. Убедитесь, что доступно вдвое большее пространство, чем нужно для библиотеки.

  2. В: При запуске make для mpich возникает ошибка выполнения ranlib.

    О: Многие системы реализуют ranlib с помощью команды ar, и используют по умолчанию каталог `/tmp', полагая, что это будет наиболее быстрым (`/tmp' обычно расположен на локальном диске). К сожалению, большинство систем имеет чрезвычайно маленький раздел `/tmp', поэтому его использование связано с определенным риском. В некоторых случаях команда ar, используемая mpich, завершается успешно, поскольку она использует опцию l, заставляя ar работать с локальным каталогом вместо `/tmp'. С другой стороны, ranlib может использовать `/tmp' и не может быть исправлена.

    В некоторых случаях команда ranlib может Вам и не понадобиться. В этих случаях Вы можете произвести реконфигурирование с опцией -noranlib. Если Вам нужно использовать ranlib, либо уменьшите пространство, используемое в `/tmp', либо увеличьте размер этого раздела (Ваш системный администратор должен это сделать). При этом в `/tmp' должно быть как минимум 20-30 Mb свободного места.

  3. В: При выполнении теста компоновки, компоновка не происходит и не может обнаружить процедуры MPI:
    /homes/them/burgess/mpich/IRIX32/ch_p4/bin/mpicc $\backslash$
    -o overtake overtake.o test.o
    ld: WARNING 126: The archive $\backslash$
    /homes/them/burgess/mpich/IRIX32/ch_p4/lib/libmpi.a $\backslash$
    defines no global symbols. Ignoring.
    ld: WARNING 84: /usr/lib/libsun.a is not used for resolving any symbol.
    ld: ERROR 33: Unresolved data symbol "MPI_COMM_WORLD" $-$$-$ $\backslash$
    1st referenced by overtake.o
    ld: ERROR 33: Unresolved text symbol "MPI_Send" $-$$-$ $\backslash$
    1st referenced by overtake.o
    ...
    О: Убедитесь, что программы ar и ranlib совместимы. GNU Ranlib устанавливается таким образом, что она используется поставщиками программ ar, с которыми она несовместима. Используйте в этом случае опцию -noranlib для configure.


Alex Otwagin 2002-12-16

next up previous contents
Next: Cray T3D Up: Проблемы построения mpich Previous: Общие   Contents

Сети рабочих станций

  1. В: При построении mpich он выдает ошибку на стадии make, подобную:
    making p4 in directory lib
    make libp4.a
    cc -Aa -g -I../include -I../../../../include -c p4_globals.c
    cc: ``/usr/include/netinet/in.h'', line 69: error 1000: Unexpected symbol:
    ``u_long''.
    cc: ``/usr/include/netinet/in.h'', line 127: error 1000: Unexpected symbol:
    ``u_short''.
    и т.д.

    О: Убедитесь, что cc имеет псевдоним (в С-shell выполните alias cc). Если он существует, либо отмените его, либо установите переменную окружения СС на полный путь к компилятору. Чтобы задать полный путь, выполните

    unalias cc
    setenv CC 1which cc'
    и выполните реконфигурирование.
  2. В: При построении устройства ch_p4 возникает ошибка вида
    making p4 in directory lib
    make libp4.a
    cc -I../include -I../../../../include -c p4_globals.c
    cc -I../include -I../../../../include -c p4_MD.c
    cc -I../include -I../../../../include -c p4_error.c
    cc-142 cc: WARNING File = p4_error.c, Line = 152

    The number of old style and prototype parameters does not agree.
    cc-142 cc: WARNING File = p4_error.c, Line = 162

    The number of old style and prototype parameters does not agree.
    cc-142 cc: WARNING File = p4_error.c, Line = 169

    The number of old style and prototype parameters does not agree.
    cc-142 cc: WARNING File = p4_error.c, Line = 174

    The number of old style and prototype parameters does not agree.
    О: Это делается при описании обработчика сигналов и может быть проигнорировано. P4 использует SIG_IGN (игнорирование) и SIG_DFL (поведение по умолчанию), определенные в
    `/usr/include/signal.h'.

next up previous contents
Next: Cray T3D Up: Проблемы построения mpich Previous: Общие   Contents
Alex Otwagin 2002-12-16

next up previous contents
Next: SGI Up: Проблемы построения mpich Previous: Сети рабочих станций   Contents

Cray T3D

  1. В: При компоновке возникает ошибка
    mppldr-133 cf77: CAUTION
    Встречаются неудовлетворительные внешние ссылки.
    Неудовлетворительные внешние ссылки
    Entry name         Modules referencing entry
    GETARG (equivalenced to $USX1)

    MPIR_GETARG
    О: Вы должны определить компилятор Фортрана для configure с помощью агрумента -fc. Реализация mpich на Фортране использует общее расширение Фортрана,GETARG, для получения аргументов командной строки. Большинство систем исполнения Фортрана поддерживают его, но Cray использует вместо него вызов pxfgetarg (i, s, len (s), ierr). Вы можете исправить вручную файл `src/env/farg.f', чтобы вызвать правильную процедуру (заметьте, что configure всякий раз создает при запуске новый `farg.f' из `farg.f.in').

    На системе HP-UX версии 10 Вы можете выполнить конфигурирование с -fflags= +U77 и пересобрать mpich. Это уже выполняется по умолчанию.

    mpich уже пытается определить правильные имена процедур для доступа к командной строке. Если Вы обнаружили, что mpich не может сделать это корректно, отошлите сообщение об ошибке на mpi-bugs@mcs.anl.gov.



Alex Otwagin 2002-12-16

next up previous contents
Next: Linux Up: Проблемы построения mpich Previous: Cray T3D   Contents

SGI

  1. В: Построение программ на SGI Power Challenge завершается с ошибкой
    Signal: SIGSEGV in Back End Driver phase.
    > ### Error:
    > ### Signal SIGSEGV in phase Back End Driver $-$$-$ processing aborted
    > f77 ERROR: /usr/lib64/cmplrs/be died due to signal 4
    > f77 ERROR: core dumped
    > *** Error code 2 (bu21)
    > *** Error code 1 (bu21)
    > *** Error code 1 (bu21)
    О: По нашей информации установка переменной окружения SGI_CC в -ansi исправляет эту проблему.
  2. В: Построение программ на SGI с архитектурой IRIX32 завершается с ошибкой
    cc: Warning: -c should not be used with ucode -O3 -o32 $\backslash$
        on a single file; use -j instead to get inter-module optimization.
    О: Поразительно, но стандартная опция -c не работает с компиляторами SGI, когда определены -O3 и -o32. Это ``свойство'' компилятора SGI и его невозможно обойти для mpich (кроме общего и непортируемого изменения всех Make-файлов). Вы можете лишь не использовать опцию -O3.


Alex Otwagin 2002-12-16

next up previous contents
Next: IBM SP Up: Проблемы построения mpich Previous: SGI   Contents

Linux

  1. В: Тест компоновки завершается на Linux с ошибкой
    ...
    cc -o overtake overtake.o test.o -L/usr/local/mpich/LINUX/ch_p4/lib -lmpi
    overtake.o (.text+0x71): undefined reference to `MPI_COMM_WORLD'
    overtake.o (.text+0x82): undefined reference to `MPIR_I_DOUBLE'
    overtake.o (.text+0xe1): undefined reference to `MPI_COMM_WORLD'
    ...
    О: Нас информировали, что это связано с ошибкой в скрипте f77 в некоторых весиях LINUX. Попробуйте либо получить исправленную версию скрипта f77, либо переконфигурировать с опцией -nof77.
  2. В: Построение для устройства ch_p4 завершается с ошибкой при использовании компилятора
    Compaq C.

    О: Существует несовместимость системных include-файлов (но не include-файлов mpich). Если Вы можете модифицировать `/usr/include/rpc/xdr.h', добавьте следующие строки в начало этого файла:

    #if defined (__DECC) || defined (__DECCXX)
    typedef long int int64_t;
    #endif


Alex Otwagin 2002-12-16

next up previous contents
Next: Compaq ULTRIX Up: Проблемы построения mpich Previous: Linux   Contents

IBM SP

  1. В: При попытке компоновки на IBM SP возникает ошибка mpirun:
    mpCC -o overtake overtake.o test.o $\backslash$

    -L/usr/local/src/Mpi/1.2.0/lib/rs6000/ch_eui -lpmich
    ld: 0711-317 ERROR: Undefined symbol: .mp_main
    ld: 0711-317 ERROR: Undefined symbol: .mp_environ
    ld: 0711-317 ERROR: Undefined symbol: .mpc_bsend
    ...
    О: Ваша реализация IBM может не содержать процедуры MPL, которые mpich использует для реализации MPI. Ваша система должна содержать версию MPI для IBM, и Вы должны использовать ее.


Alex Otwagin 2002-12-16

next up previous contents
Next: Проблемы тестирования Up: Проблемы построения mpich Previous: IBM SP   Contents

Compaq ULTRIX

  1. В: При попытке построения make прерывается во время фазы очистки:
    amon:MPICH/mpich>make clean

    /bin/rm -f *.o *  nupshot *** Error code 1
    О: Это ошибка в поддержке shell в некоторых системах Compaq ULTRIX. Вы можете обойти ее, использовав
    setenv PROG_ENV SYSTEM_FIVE
    Конфигурирование с -make=s5make также сработает.


Alex Otwagin 2002-12-16

next up previous contents
Next: Общие Up: Проблемы Previous: Compaq ULTRIX   Contents

Проблемы тестирования

Набор тестов mpich в каталоге `examples/test' выполняет полное тестирование реализации MPI. Если здесь возникает ошибка, она обычно означает проблему данной реализации MPI; если Вы встретились с такой проблемой, пожалуйста сообщите на mpi-bugs@mcs.anl.gov. Однако, существует несколько исключений, приведенных здесь.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Использование configure Up: Проблемы тестирования Previous: Проблемы тестирования   Contents

Общие

  1. В: Тест `pt2pt/structf' завершается с ошибкой
    0 - Error in MPI_ADDRESS: Invalid argument: Address of location given to
    MPI_ADDRESS does not fit in Fortran integer
    0Aborting program!
    О: Это не ошибка; это пробел в определении MPI-1, исправленный в MPI-2. Это указывает, что целые числа в Фортране недостаточно велики, чтобы содержать адрес. Это должно означать, что программы, написанные на Фортране, не должны использовать MPI_Address в этой системе.
  2. В: Тест `env/timers' завершается с ошибкой
    Timer around sleep (1) did not give 1 second; gave 0.399949
    О: Низкоуровневое ПО, которое использует mpich, возможно использует сигнал SIGALRM, что запрещено программам пользователя. Это не ошибка (стандарт запрещает системам использовать любые сигналы), хотя это и неудобно. Одной из систем, использующих SIGALRM, является ПО IBM MPL/POE (устройство ch_mpl) для использования в высокопроизводительных переключателях параллельных компьютеров IBM SP.


Alex Otwagin 2002-12-16

next up previous contents
Next: Устаревшие возможности Up: Руководство по инсталляции mpich, Previous: Общие   Contents

Использование configure

Команда configure -help выведет
Usage: configure $-$$-$with-arch=ARCH_TYPE -comm=COMM_TYPE
$-$$-$with-device=DEVICE
$-$$-$with-mpe$-$$-$without-mpe
$-$$-$disable-f77$-$$-$disable-f90 $-$$-$with-f90nag$-$$-$with-f95nag
$-$$-$disable-f90modules
$-$$-$disable-gencat$-$$-$disable-doc
$-$$-$enable-c++$-$$-$disable-c++
$-$$-$enable-mpedbg$-$$-$disable-mpedbg
$-$$-$enable-devdebug$-$$-$disable-devdebug
$-$$-$enable-degub$-$$-$disable-debug
$-$$-$enable-traceback$-$$-$disable-traceback
$-$$-$enable-long-long$-$$-$disable-long-long
$-$$-$enable-long-double$-$$-$disable-long-double
-prefix=INSTALL_DIR

-c++=C++_COMPILERnoc++
-opt=OPTFLAGS
-cc=C_COMPILER-fc=FORTRAN_COMPILER
-clinker=C_LINKER-flinker=FORTRAN_LINKER
-c++linker=CC_LINKER
-cflags=CFLAGS-fflags=FFLAGS -c++flags=CCFLAGS
-optcc=C_OPTFLAGS-optf77=F77_OPTFLAGS
-f90=F90_COMPILER-f90flags=F90_FLAGS
-f90inc=INCLUDE_DIRECTORY_SPEC_FORMAT_FOR_F90
-f90linker=F90_LINKER
-f90libpath=LIBRARY_PATH_SPEC_FORMAT_FOR_F90
-lib=LIBRARY-mpilibname=MPINAME
-mpe_opts=mpe_OPTS
-make=MAKEPGM
-memdebug-ptrdebug-tracing -dlast
-listener_sig=SIGNAL_NAME
-cross
-adi_collective
-automountfix=AUTOMOUNTFIX
-noranlib-ar_nolocal
-rsh=RSHCOMMAND-rshnol
-noromio-file_system=FILE_SYSTEM
-p4_opts=P4_OPTS
где

ARCH_TYPE        =    тип архитектуры машины, для которойконфигурируется MPI 

COMM_TYPE = уровень взаимодействия или используемая опция
DEVICE = используемое устройство взаимодействия
INSTALL_DIR = каталог для установки MPI (необязательно)
MPE_OPTS = опции для передачи configure для mpe
P4_OPTS = опции для передачи p4 configure (device=ch_p4)
C++_COMPILER = по умолчанию использует xlC, g++, CC (необязательно)
OPTFLAGS = флаги оптимизации для передачи компилятору (например -g)
CFLAGS = флаги компилятора C
FFLAGS = флаги компилятора Фортран
MAKEPGM = используемая версия make
LENGTH = длина сообщения, при которой ADI переключает протоколсообщений
с коротких на длинные сообщения
AUTOMOUNTFIX = команды для исправления автомонтирования
RSHCOMMAND = команда использования удаленной shell
MPILIBNAME = имя для использования вместо mpich при упоминаниибиблиотеки MPI.
Если установлено, то данное имя используется вместоlibmpich.
Опция используется в системах с несколькими
различнымиреализациями MPI.
FILE_SYSTEM = имя файловой системы, используемой ROMIO. Поддерживает на
данный момент nfs, ufs, pfs (Intel), piofs (IBM), hfs (HP),
sfs (NEC), xfs (SGI).
SIGNAL_NAME = имя используемого устройством P4 (device=ch_p4) сигнала отом,
что требуется новое соединение. По умолчанию это SIGUSR1.
Все аргументы не обязательны, но если представлены аргументы `arch', `comm' или `prefix',
они должны быть единственными. `arch' должен определяться перед `comm', если встречаются
оба аргумента.

Пакеты, которые могут включаться в mpich


$-$$-$with-device=name        -Использовать именованное устройство для 

взаимодействия. Известные имена включают ch_p4,
ch_mpl, ch_shmem, globus2. Если ничего не определено,
берется значение по умолчанию. Специальные опции
устройства определяются после имени устройства,
отделяясь двоеточием. Пример:
$-$$-$with-device=globus2:-flavor=mpi, nothreads
$-$$-$with-romio=OPTIONS- Использовать ROMIO для предоставления MPI
ввода-вывода из MPI-2 (по умолчанию). Опции включают
-file_system=fstype, где fstype может быть любой
комбинацией nfs, ufs, pfs (Intel), piofs (IBM), hfs (HP),
sfs (NEC), xfs (SGI), скомбинированные '+'. Если romio
не включается, не могут быть построены модули Fortran 90.
$-$$-$with-mpe - Создать среду mpe (по умолчанию)
$-$$-$with-f90nag - Выбрать компилятор NAG f90 для
Фортрана ( предварительная версия, предназначенная для
использования вместо компилятора Фортран 77)
$-$$-$with-f95nag - Выбрать компилятор NAG f95 для Фортрана
Вы можете использовать $-$$-$without-<опция>, чтобы отключить опцию (кроме device).
Возможности, которые могут включаться в mpich


$-$$-$enable-c++                    - Создать интерфейсы C++ для процедур MPI-1

(по умолчанию)
$-$$-$enable-f77 - Создать интерфейсы Фортран 77 для процедур MPI
(по умолчанию)
$-$$-$enable-weak-symbols - Использовать слабые обозначения для процедур MPI/PMPI.
Эта опция использует для профилирующего интерфейса
слабые обозначения, если они доступны (по умолчанию).
$-$$-$enable-debug - Разрешить поддержку отладчиков для доступа к очередям
сообщений.
$-$$-$enable-traceback - Разрешить вывод стека вызовов, когда MPI и программы
пользователя создаются с помощью определенных компиляторов
(в настоящее время поддерживаются только определенные
версии gcc)
$-$$-$enable-mpedbg - Разрешить аргумент командной строки -mpedbg (например,
ошибки могут вызвать xterm, выполняющий отладчик).
Работает только с некоторыми рабочими станциями.
$-$$-$enable-sharedlib - Попытаться построить разделяемые библиотеки.Всегда
$-$$-$enable-sharedlib=dir строит статические библиотеки. Если определен каталог,
библиотеки будут помещены в него. Опция используется
для помещения разделяемых библиотек в единое место на
локальных дисках кластера.
$-$$-$enable-f90modules - Создать поддержку модулей Фортран 90 (по умолчанию,
если найден компилятор Фортран 90 или 95). Если не
построен ROMIO, модули Фортран 90 не создаются.
Следующие опции предназначены для разработчиков MPI и отладки configure:

$-$$-$enable-strict        - Попытаться построить mpich, используя опции strict в

GNU gcc.
$-$$-$enable-echo - Заставить configure сообщать о своих действиях
$-$$-$enable-devdebug - Разрешить отладочный код в ADI.
Вы можете использовать $-$$-$disable-<опция> для отключения опции.

Заметки об использовании configure:

Рекомендации по использованию GNU configure советуют не использовать его для построения различных инструментов, а лишь для контроля некоторых базовых возможностей или вложенных пакетов. Наше использование configure не следует этим правилам, поскольку configure слишком удобен, и нам требуется гибкость, позволяющая пользователю создавать варианты mpich.

Несколько заметок о параметрах командной строки:

Вы можете выбрать разные компиляторы C и Фортран, используя ключи `-cc' и `-fc'. Переменные окружения `C' и `FC' могут также содержать значения этих параметров, но они могут переопределяться скриптом configure. Использование `-cc=$CC -fc= $FC' заставит configure использовать эти компиляторы.

Если указано `-with-cross=file', этот файл используется для кросс-компиляции. Файл должен содержать присваивания в форме

CROSS_SIZEOF_INT=4
для каждой переменной кросс-компиляции. Команда
egrep `CROSS_A_Z_=` configure | sed `s/=.*//g'
должна показать каждую переменную.

Опция `-opt' позволяет Вам задать опции оптимизации для компиляторов ( и С, и Фортран). Например, `-opt=-O' выбирает оптимизированную генерацию кода для большинства систем. `-optcc' и `-optf77' позволяют Вам задать опции только для компилятора С, либо Фортрана. Используйте
`-cflags' и `-fflags' для опций, не относящихся к компиляции.

Следует отметить, что опции `-opt' не передаются скриптам `mpicc', `mpif77', `mpiCC',
`mpif90'
. Эти опции используются только при построении mpich.

Опция `-lib' позволяет Вам определить место библиотеки, котрая может понадобиться определенному устройству. Большинство устройств не требуют этой опции; см. инструкции по инсталляции для тех, которым это нужно

Опция `-make' может использоваться для выбора альтернативной программы make. Например, в системах FreeBSD, может потребоваться -make=gnumake, поскольку make, унаследованный из BSD 4.4, не поддерживает операции включения (используя вместо этого форму .include, не такую, как в других make); опция используется в утилите wrappergen.

Опция `$-$$-$disable-short-longs' может использоваться для запрета использования типов С `long long' (общее расширение) и `long double' (ANSI/ISO C), когда их размер соответствует размеру типов `long' и `double'. Некоторые системы позволяют такие длинные типы С, но генерируют предупреждение, когда они используются; эта опция может использоваться для устранения этих сообщений (и поддержки этих типов). `$-$$-$disable-long-long' отключает только `long long'; `$-$$-$ disable-long-double' отключает только `long double'.

Опция `ar_nolocal' упреждает команду архива библиотеки от попыток использования локального каталога для временного хранения. Эту опцию нужно использовать (а) когда в разделе, на котором расположен mpich, недостаточно места (менее 20 Mb) и (b) когда места достаточно в /tmp (или в месте для помещения временных файлов по умолчанию).

Опция `-noranlib' пропускает шаг `ranlib' (необходимый в некоторых системах для создания объектной библиотеки). Это особенно полезно для систем, в которых `ranlib' необязателен (возможен, но не нужен; поскольку он возможен, configure использует его заодно), но может не сработать (некоторые `ranlib' реализованы, как скрипты с использованием `ar'; если они не используют локальный каталог, они могут не сработать, уничтожив в процессе библиотеку, если в каталоге /tmp не достаточно места). Это встречается в некоторых OSF-системах.

Опция `-memdebug' создает избыточный отладочный код внутренней памяти. Это нужно использовать только, если Вы пытаетесь найти проблему с памятью (это может помочь найти проблемы с памятью и в коде пользователя). Запуск программ с опцией `-mpidb memdump' создает после вызова `MPI_Finalize' дамп всей занятой памяти, выделенной MPI. Например, будет указан созданный пользователем тип данных, который позже не был освобожден.

Опция `-tracing' позволяет трассировку внутренних вызовов. Это нужно использовать только для отладки самой реализации mpich.

Опция `-dlast' позволяет трассировать самые последние действия, выполненные устройством. Это может быть вывод при возникновении сигнала (типа SIGINT), ошибки или вызова специальной процедуры. Для этой опции существуют издержки по производительности, но она может быть полезна для разработчиков, пытающихся отладить проблему.

Опция `-rsh' позволяет Вам выбрать альтернативную команду для удаленной shell (по умолчанию, configure использует `rsh' или `remsh' из переменной `PATH'). Если Ваш shell не поддерживает опцию `-l' (некоторые AFS-версии rsh имеют этот недостаток), укажите также опцию `-rshnol'. Эти опции полезны только при построении сетевой версии mpich (т.е. `$-$$-$with-device=ch_p4').

Специальные опции настройки:

Существует ряд опций для настройки ADI (Abstract Device Interface - интерфейс абстрактного устройства), являющегося интерфейсом передачи сообщений нижнего уровня. Эти опции не нужно использовать, пока Вы не уверены в том, что Вы делаете.

Опция `-pkt-size=LENGTH' позволяет Вам выбрать длину сообщений, при которой ADI переключается с короткого на длинный формат сообщений. LENGTH должна быть положительной.

Опция `-adi_collective' позволяет ADI предоставить некоторые коллективные операции в дополнение к базовым операциям "точка-точка". В настоящее время большинство систем не поддерживают эту опцию (она игнорируется), а на других она недостаточно протестирована.

Примерное использование configure:

Чтобы создать mpich для использования на sun4 с SunOS, в качестве устройства ch_p4, и с каталогом установки, равным текущему каталогу:

./configure $-$$-$with-device=ch_p4 $-$$-$with-arch=sun4 make
Известными устройствами являются

ch_nx            (стандартные вызовы Intel NX),

ch_mpi (стандартные вызовы IBM EUI или MPL),
ch_p4 (p4),
globus2 (Globus:globus_io/vMPI),
ch_meiko (для Meiko CS2, использую библиотеку совместимости NX),
ch_shmem (системы с разделяемой памятью, типа SMP),
ch_lfshmem (системы с разделяемой памятью, типа SMP; используют
неблокирующиеся буферы сообщений),
ch_cenju3 (стандартные вызовы NEC Cenju-3)
Следующие устройства поддерживались ADI-1, но сейчас не поддерживаются. Пожалуйста, свяжитесь с нами, если Вы заинтересованы помочь нам с поддержкой этих устройств:


meiko        (для Meiko CS2, используя библиотеку elan tport),

nx (Intel Paragon),
t3d (Cray T3D, используя библиотеку Cray shmem),
ch_nc (стандартные вызовы nCube, требует -arch=ncube),
ch_cmmd (стандартные вызовы TMC CM-5 CMMD)
Они больше не поставляются с дистрибутивом mpich.

Известные архитектуры включают (регистр важен)


sun4                (SUN OS 4.x)

solaris (Solaris)
solaris86 (Solaris on Intel platforms)
hpux (HP UX)
sppux (SPP UX)
rs6000 (AIX for IBM RS6000)
sgi (Silicon Graphics IRIX 4.x, 5.x, 6.x)
sgi5 (Silicon Graphics IRIX 4.x on R4400's, для MESHINE)
IRIX (то же, что и sgi)
IRIX32 (IRIX с 32-битными объектами -32)
IRIXN32 (IRIX c -n32)
IRIX64 (IRIX с 64-битными объектами)
alpha (DEC alpha)
intelnx (Intel i860 или Intel Delta)
paragon (Intel Paragon)
tflops (Intel TFLOPS)
meiko (Meiko CS2)
CRAY (CRAY XMP, YMP, C90, J90, T90)
cray_t3d (CRAY T3D)
freebsd (PC клоны на FreeBSD)
netbsd (PC клоны на NetBSD)
LINUX (PC клоны на LINUX)
LINUX_ALPHA (Linux на процессорах Alpha)
ksr (Kendall Square KSR1 и KSR2)
EWS_UX_V (NEC EWS4800/360AD рабочие станции. Не тестировалось.)
UXPM (UXP/M. Не тестировалось.)
uxpv (uxp/v/ Не тестировалось.)
SX_4_float0
(NEC SX-4; Формат с плавающей точкой 0
Удовлетворяет стандарту IEEE 754.
С:    sizeof (int)    = 4;sizeof (float)    = 4
FORTRAN: sizeof (INTEGER)= 4;sizeof (REAL)    = 4)
SX_4_float1
(NEC SX-4; Формат с плавающей точкой 1
Формат с плавающей точкой IBM.
С:    sizeof (int)    = 4;sizeof (float)    = 4
FORTRAN: sizeof (INTEGER)= 4;sizeof (REAL) = 4)
SX_4_float2
(NEC SX-4; Формат с плавающей точкой 2
Формат с плавающей точкой CRAY.
С:    sizeof (int)    = 4;sizeof (float)    = 8
FORTRAN: sizeof (INTEGER)    = 8;sizeof (REAL)    = 8
!!!ВНИМАНИЕ!!! Версия не работает с процедурами Фортран
sizeof (INTEGER) != sizeof (int))
SX_4_float2_int64
(NEC SX-4; Формат с плавающей точкой 2 и 64-битными целыми
С:    sizeof (int)    = 8;sizeof (float)    = 8
FORTRAN: sizeof (INTEGER)= 8;sizeof (REAL)    = 8)
Специальные замечания:

Для многопроцессорных SGI ($-$$-$with-arch=IRIX), работающих с устройствами ch_p4, используйте -comm=ch_p4, чтобы отключить использование устройства коммуникации p4 через разделяемую память и -comm=shared, чтобы включить использование устройства коммуникации p4 через разделяемую память. По умолчанию используется устройство коммуникации через разделяемую память.

Остальное может быть определено.


next up previous contents
Next: Устаревшие возможности Up: Руководство по инсталляции mpich, Previous: Общие   Contents
Alex Otwagin 2002-12-16

next up previous contents
Next: Получение Tcl, Tk и Up: Руководство по инсталляции mpich, Previous: Использование configure   Contents

Устаревшие возможности

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



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Устаревшие системы Up: Устаревшие возможности Previous: Устаревшие возможности   Contents

Получение Tcl, Tk и wish

Эти программные пакеты доступны по анонимному ftp с ftp.scriptics.com/pub/ tcl/tcl_old. Они необходимы только для программ upshot и nupshot; чтобы установить mpich, они не нужны. Если Вы не нашли их на ftp.scriptics.com, копии tcl и tk доступны на ftp://ftp.mcs.anl.gov/mpi/tcltk.

Вы должны получить tcl7.3.tar.Z и tk3.6.tar.Z (а также заплатку tk3.6p1.patch). Более поздние версии tcl и tk не совместимы с этими и не работают с nupshot. Программа upshot модифицирована для работы как с tk 3.6, так и с tk 4.0.

Необходимо, чтобы программа wish была доступна пользователям; другие части tcl и tk можно не устанавливать (но убедитесь в том, что все необходимое для wish установлено).

Для сборки Tcl и Tk мы рекомендуем следующий подход:

  1. Поместите упакованные файлы tar и заплатку в пустой каталог, желательно в локальной (не NFS) файловой системе, например в `/tmp' (убедитесь в том, что в этой файловой системе достаточно места).
  2. Распакуйте файлы tar:
    gunzip -c tcl7.3.tar.Z | tar xf -
    gunzip -c tk3.6.tar.Z | tar xf -
  3. Примените заплатку tk:
    cd tk3.6
    patch -p 1 < ../tk3.6p1.patch
    cd ..
    (Отметьте, что используется patch -p; новые версии patch требуют аргумента и правильным в этом случае будет такое значение; другие версии patch могут потребовать -p1 (без пробела между p и 1)).
  4. Сконфигурируйте Tcl. Укажите каталог инсталляции, ясно показывающий версию Tcl и Tk. Например, для создания Tcl и установки его в `/usr/local/tcl73tk36' используйте
    cd tcl7.3
    ./configure -prefix=/usr/local/tcl73tk36
  5. Создайте и инсталлируйте Tcl. Прежде чем Вы сделаете make install, убедитесь, что каталог, указанный в аргументе -prefix для configure, существует.
    mkdir /usr/local/tcl73tk36
    make
    make install
  6. Сконфигурируйте, создайте и инсталлируйте tk. Используйте для Tk тот же каталог инсталляции, что и для Tcl:
    cd ../tk3.6
    ./configure -prefix=/usr/local/tcl73tk36
    make
    make install
Эти действия снабдят Вас инсталляцией Tcl и Tk, которая может использоваться с инструментами Tcl и Tk, предлагаемыми mpich. Если Вы инсталлируете их в нетсандартное место (так, как показано выше), Вы можете установить переменную окружения TCL73TK36_DIR в место, используемое как префикс в командах configure:
setenv TCL73TK36_DIR /usr/local/tcl73tk36
Это позволит mpich обнаружить эти версии Tcl/Tk.

Alex Otwagin 2002-12-16

next up previous contents
Next: mpireconfig, способ создания make-файлов Up: Устаревшие возможности Previous: Получение Tcl, Tk и   Contents

Устаревшие системы

Чтобы сконфигурировать для Intel Paragon, используйте
configure $-$$-$with-device=ch_nx -arch=paragon
Две подсказки по устранению ошибок для Paragon
  1. В: При построении на Paragon получены следующие сообщения об ошибке
    PGC-W-0115-Duplicate standart type (init.c: 576)
    PGC/Paragon Paragon Rel R5.0: compilation completed with warnings
    PGC-W-0115-Duplicate standart type (init.c: 576)
    PGC/Paragon Paragon Rel R5.0: compilation completed with warnings
    О: Это происходит из-за невозможности обработки или игнорирования компилятором long long. Эти предупреждения не наносят вреда.
  2. В: При компиляции или запуске программ на Фортране возникают ошибки.

    О: Программы на Фортране должны использовать абсолютный путь к файлу `mpif.h' из-за ошибки в компиляторе Фортрана (он просматривает каталоги в неправильном порядке).

Подсказки по устранению ошибок для устаревшей Intel i860
  1. В: Проверка компоновки на Intel i860 завершается с ошибкой
    icc -o overtake overtake.o test.o -L//mpich/lib/intelnx/ -lmpi -lnode
    /usr/ipcsXDEV/i860/bin/ld860: Error: undefined symbol `_MPI_Keyval_create'
    /usr/ipcsXDEV/i860/bin/ld860: Fatal: no output file created
    О: Возможно, Вы пытаетесь построить mpich на древнем 386-ом под управлением System V выпуск 2. Эта версия Unix имеет очень жесткие ограничения на длину имен файлов (более жесткие, чем нам хотелось бы). Главной проблемой здесь является имя файла `mpich/src/context/keyval_create.c', которое слишком длинное для этой системы и некорректно архивируется. Лучше создать mpich на другой, более современной системе (например, Sun под управлением SunOS или Solaris).


Alex Otwagin 2002-12-16

next up previous contents
Next: Благодарности Up: Устаревшие возможности Previous: Устаревшие системы   Contents

mpireconfig, способ создания make-файлов

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



Alex Otwagin 2002-12-16

next up previous contents
Next: Bibliography Up: Руководство по инсталляции mpich, Previous: mpireconfig, способ создания make-файлов   Contents

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

Выполнению работы, описанной в этом документе, способствовало много людей. Мы также благодарны тем, кто помогал в реализации mpich, особенно Patrick Bridges и Edward Karrels. Особенная благодарность Nathan Doss и Anthony Skjellum за ценную помощь в реализации и разработке mpich. Много усилий было сделано Debbie Swider и (по jumpshot) Omer Zaki. Anthony Chan помогал с SLOG и jumpshot-3. David Ashton, разработавший версию mpich для Windows NT, также занимался mpich. Связки с C++ были выполнены Andrew Lumsdaine и Jeff Squyres из Notre Dame. Rajeev Thakur из Argonne отвечает за реализацию ROMIO для функций ввода-вывода MPI-2. Устройство Globus2 разработано Nick Karonis из Northern Illinois University и Brian Toonen из Argonne National Laboratory.



Alex Otwagin 2002-12-16

next up previous contents
Next: About this document ... Up: Руководство по инсталляции mpich, Previous: Благодарности   Contents

Bibliography

1
Ralph Butler and Ewing Lusk. User's guide to the p4 parallel programming system. Technical report ANL-92/17, Argonne National Laboratory, October 1992.

2
Ralph Butler and Ewing Lusk. Monitors, messages, and clusters: The p4 parallel programming system. Parallel Computing, 20: 547-564, April 1994. (Also Argonne National Laboratory Mathematics and Computer Science Division preprint P362-0493).

3
I. Foster, J. Geisler, W. Gropp, N. Karonis, E. Lusk, G. Thiruvathukal, and S. Tuecke. A wide-area implementation of the Message Passing Interface. Parallel Computing, 24 (11), 1998.

4
I. Foster and C. Kesselman. Globus: A metacomputing infrastructure toolkit. International Journal of Supercomputing Applications, 11 (2):115-128, 1997.

5
Ian Foster and Nicholas T. Karonis. A grid-enabled MPI: Message passing in heterogeneous distributed computing systems. In Proceedings of SC98. IEEE, November 1999. http://www.supercomp.org/sc98.

6
William Gropp and Ewing Lusk. An abstract device definition to support the implementation of a high-level message-passing interface. Technical Report MCS-P342-1193, Argonne National Laboratory, 1993.

7
William Gropp and Ewing Lusk. Scalable Unix tools on parallel processors. In Proceedings of the Scalable High Performance Computing Conference, pages 56-62. IEEE, 1994.

8
William Gropp and Ewing Lusk. User's guide for mpich, a portable implementation of MPI. Tech-
nical Report ANL-96/6, Argonne National Laboratory, 1996. The updated version is
at ftp://ftp.mcs.anl.gov/pub/mpi/userguide.ps.

9
William Gropp and Ewing Lusk. A high-performance MPI implementation on a shared-memory vector supercomputer. Parallel Computing, 22 (11):1513-1526, January 1997.

10
William Gropp and Ewing Lusk. Reproducible measurements of MPI performance characteristics. Technical Report ANL/MCS-P755-0699, Mathematics and Computer Science Division, Argonne National Laboratory, June 1999.

11
William Gropp, Ewing Lusk, Nathan Doss, and Anthony Skjellum. A high- performance, portable implementation of the MPI message-passing interface standard. Parallel Computing, 22:789-828, 1996.

12
Edward Karrels and Ewing Lusk. Performance analysis of MPI programs. In Jack Dongarra and Bernard Tourancheau, editors, Proceedings of the Workshop on Environments and Tools For Parallel Scientific Computing. SIAM Publications, 1994.


Alex Otwagin 2002-12-16

next up previous contents
Up: Руководство по инсталляции mpich, Previous: Bibliography   Contents

About this document ...

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

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html mpich_install.tex

The translation was initiated by Alex Otwagin on 2002-12-16


Alex Otwagin 2002-12-16

next up previous contents
Next: Contents   Contents

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

William Gropp

Ewing Lusk 1





Alex Otwagin 2002-12-16

next up previous contents
Next: Contents   Contents

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

William Gropp

Ewing Lusk 1





Alex Otwagin 2002-12-16

next up previous
Next: Введение Up: Руководство пользователя mpich, переносимой Previous: Руководство пользователя mpich, переносимой


Contents

Это руководство пользователя соответствует mpich версии 1.2.2.
$\textstyle \parbox{13cm}{
\begin{small}
\begin{abstract}
MPI(Message Passing...
...ограммы MPI, используя реализацию {\tt mpich}.\par
\end{abstract}
\end{small}}$
Этот документ описывает использование mpich [9], переносимой реализации стандарта передачи сообщений MPI. Детали получения и инсталляции реализации mpich представлены в отдельном руководстве по инсталляции для mpich [6]. Версия 1.2.2 mpich в основном исправляет ошибки и увеличивает переносимость, особенно для кластеров на базе LINUX.

Новое в 1.2.2:

Новые возможности, включенные в 1.2.1:

Alex Otwagin 2002-12-16

... Lusk1
Перевод Алексея Отвагина
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...mpich2
Вы можете заставить `.cshrc' проверять, в какой системе Вы работаете и устанавливать пути нужным образом. Это не такой гибкий подход, как способ с установкой переменных окружения из запущенного shell
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... путь''3
Даже если компоновщик может предложить форму ``добавить в путь поиска''
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...globus24
globus2 заменило устройство globus, распространявшееся с предыдущими версиями mpich
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... событий5
Это важно, если Вы пишете библиотеку, которая использует процедуры регистрации MPE
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... RSL6
О синтаксисе и семантике языка определения ресурсов Globus см. http://www.globus.org
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

next up previous contents
Next: Компоновка и запуск программ Up: Руководство пользователя mpich, переносимой Previous: Contents   Contents

Введение

mpich является свободно доступной реализацией стандарта MPI, который работает на множестве вариантов систем. Детали реализации mpich описаны в [9]; статьи по этой теме также включают [7] и  [8]. Этот документ предполагает, что mpich уже инсталлирован; если это не так, Вы должны сначала прочесть руководство по инсталляции mpich, переносимой реализации MPI [5]. Более конкретно, этот документ предполагает, что реализация mpich установлена в `/usr/local/mpich' и что Вы добавили `/usr/local/mpich/bin' в Ваш путь поиска. Если mpich установлен в другом месте, Вы должны сделать необходимые изменения. Если mpich был собран для нескольких различных архитектур и/или механизмов коммуникации (называемых в mpich устройствами), Вы должны выбрать каталоги соответствующим образом; сверьтесь с тем, кто установил mpich в Вашей системе.

Основные возможности mpich:

Этот документ предполагает, что mpich уже создан и установлен в соответствии с инструкциями из руководства по инсталляции mpich.


Alex Otwagin 2002-12-16

next up previous contents
Next: Скрипты для компиляции и Up: Руководство пользователя mpich, переносимой Previous: Введение   Contents

Компоновка и запуск программ

mpich предлагает инструменты, упрощающие создание исполняемых файлов MPI. Поскольку программы mpich могут потребовать специальных библиотек и опций компиляции, Вам необходимо использовать команды, предлагаемые mpich для компиляции и компоновки программ. Однако, для специальных случаев, раздел 2.2 указывает, как определить необходимые библиотеки и опции, не используя скрипты mpich.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Использование разделяемых бибилиотек Up: Компоновка и запуск программ Previous: Компоновка и запуск программ   Contents

Скрипты для компиляции и компоновки приложений

Реализация mpich предлагает четыре команды для компиляции и компоновки программ на С (mpicc), Фортране 77 (mpif77), С++ (mpiCC) и Фортране 90 (mpif90).

Поддерживаются также следующие специальные опции:

-mpilog
Создавать версию, генерирующую log-файлы MPE.
-mpitrace
Создавать версию с трассировкой.
-mpianim
Создавать версию, генерирующую анимацию в реальном времени.
-show
Показать команды, которые можно использовать без их действительного запуска.
Используйте эти команды как обычные компиляторы C, Фортрана 77, С++ или Фортрана 90. Например,
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
Команды для компоновщика могут включать дополнительные библиотеки. Например, для использования процедур из библиотеки math для С, используйте
mpicc -o foo foo.o -lm
Комбинирование компиляции и компоновки в единой команде, как показано здесь
mpicc -o foo foo.с
mpif77 -o foo foo.f
mpiCC -o foo foo.C
mpif90 -o foo foo.f
также можно использовать.

Заметьте, что хотя суффиксы .c для программ С и .f для программ Фортрана являются стандартными, такого же соглашения о суффиксах для программ на С++ и Фортране 90 нет. Примеры, показанные выше подходят ко многим, но не ко всем системам. mpich пытается определить приемлемые суффиксы, но не всегда в состоянии сделать это.

Вы можете переопределить выбор компилятора определением переменных окружения MPICH_CC,
MPICH_F77, MPICH_CCC, MPICH_F90. Однако, помните, что это будет работать, только если альтернативный компилятор совместим с компилятором по умолчанию (под совместимостью мы подразумеваем, что они используют те же самые размеры для типов данных и генерируют объектный код, который может использоваться библиотеками mpich). Если Вы хотите переопределить компоновщик, испорльзуйте переменные окружения MPICH_CLINKER, MPICH_F77LINKER, MPICH_CCLINKER, MPICH_F90LINKER.


Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Фортран 90 и модуль Up: Скрипты для компиляции и Previous: Скрипты для компиляции и   Contents

Использование разделяемых бибилиотек

Разделяемые бибилиотеки могут помочь уменьшить размер исполняемых файлов. Это особенно ценно для кластеров рабочих станций, где исполняемые файлы обычно копируются по сети на каждую машину, которая исполняет параллельную программу. Однако, существует несколько практических проблем использования разделяемых библиотек; этот раздел обсуждает некоторые из них и методы решения большинства этих проблем. В настоящее время разделяемые библиотеки не поддерживаются для С++.

Чтобы создать разделяемые библиотеки для mpich, Вы должны конфигурировать и собирать mpich с опцией $-$$-$enable-sharedlib. Поскольку каждая Unix-система и практически каждый компилятор использует различные и зачастую несовместимые множества опций для создания разделяемых объектов и библиотек, mpich может не определить коректные опции. В настоящее время mpich воспринимает Solaris, GNU gcc (на большинстве платформ, включая LINUX и Solaris) и IRIX. Информацию о построении разделяемых библиотек на друих платформах можно присылать на mpi-bugs@mcs.anl.gov.

Когда разделяемые библиотеки построены, Вы должны сообщить командам компиляции и компоновки mpich об их использовании (причина, по которой разделяемые библиотеки не используются по умолчанию, будет пояснена ниже). Вы можете сделать это либо опцией командной строки -shlib или установкой переменной окружения MPICH_USE_SHLIB в значение yes. Например,

mpicc -o cpi -shlib cpi.c
или
setenv MPICH_USE_SHLIB yes
mpicc -o cpi cpi.c
Использование переменной окружения MPICH_USE_SHLIB позволяет Вам управлять использованием разделяемых библиотек без изменения команд компиляции; это очень полезно в проектах, которые используют make-файлы.

Запуск программы, построенной с испоьзованием разделяемых библиотек, может быть очень сложным. Некоторые (большинство?) систем не запоминают, где находились разделяемые библиотеки, когда компоновался исполняемый файл! Вместо этого, они пробуют найти разделяемые библиотеки либо в каталоге по умолчанию (таком, как `/lib'), либо в каталоге, определяемом переменной окружения, такой, как LD_LIBRARY_PATH, либо в каталоге, определяемом агрументом командной строки, таким, как -R или -rpath (см. ниже более подробно). configure для mpich проверяет их и сообщает, когда исполняемый файл, построенный с разделяемыми библиотеками, вспоминает их размещение. Он также пытается использовать аргументы командной строки компилятора, чтобы заставить исполняемый файл вспомнить размещение разделяемых библиотек.

Если Вам необходимо установить переменные окружения, чтобы указать, где находятся разделяемые библиотеки mpich, Вам необходимо убедиться в том, что и процесс, из которого Вы запустили mpirun, и любые процессы, запущенные mpirun, получат переменную окружения. Простейший способ сделать это - установить переменную окружения внутри Вашего файла `.cshrc' (для пользователей csh или tcsh) или `.profile' (для пользователей sh или ksh).

Однако, установка переменной окружения внутри скриптов запуска может вызвать проблемы, если Вы используете несколько различных систем. Например, у Вас имеется единый файл `.cshrc', который Вы используете в SGI (IRIX) и Solaris. Вы не хотите установить LD_LIBRARY_PATH, чтобы указать SGI на Solaris-версию разделяемых библиотек mpich2. Вместо этого, Вы можете пожелать установить переменную окружения перед запуском mpirun:

setenv LD_LIBRARY_PATH $$\lbrace$LD_LIBRARY_PATH$\rbrace$:/usr/local/mpich/lib/shared
mpirun -np 4 cpi
К сожалению, это не всегда сработает. В зависимости от метода, используемого mpirun и mpich для запуска процессов, переменная окружения может не передаться новому процессу. Это вызовет завершение программы с сообщением вида
ld.so.1: /home/me/cpi: fatal: libpmpich.so.1.0: open failed:
No such file or directory
Killed
Существуют различные решения этой проблемы; каждое из них зависит от конкретного устройства mpich (например, ch_p4), которое Вы используете, и эти решения обсуждаются в соответствующих разделах в разд.3.

Альтернативой использованию LD_LIBRARY_PATH и безопасного сервера является добавление опции к команде компоновки, предоставляющей путь для использования в поиске разделяемых библиотек. К сожалению, опция, которая Вам нужна, это ``добавить этот каталог в путь поиска'' (такая, какую Вы получаете, используя -L). Вместо этого, многие компиляторы предлагают только опцию ``заменить путь поиска на данный путь''3. Например, некоторые компиляторы позволяют использовать -Rpath:path:...:path для определения заменяемого пути. Тогда, если и mpich, и пользователь предоставляют путь поиска библиотек через -R, один из путей будет утерян. В итоге, mpicc и другие скрипты могут проверить наличие опции -R и создать универсальную версию, но сейчас они этого не делают. Вы можете, однако, предложить полный путь поиска самостоятельно, если Ваш компилятор поддерживает такие опции, как -R.

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


Alex Otwagin 2002-12-16

next up previous contents
Next: Компиляция и компоновка без Up: Скрипты для компиляции и Previous: Использование разделяемых бибилиотек   Contents

Фортран 90 и модуль MPI

При конфигурировании mpich в процессе инсталляции определяется местонахождение компилятора Фортрана 90, и если он найден, создается две различные версии модуля MPI. Один из модулей включает только те процедуры MPI, которые не принимают аргументы ``по выбору''; друой включает все процедуры MPI. Аргумент ``по выбору'' может принимать значения любого типа данных; обычно это буферы в процедурах коммуникации MPI, таких, как MPI_Send и MPI_Recv. Два различных модуля доступны через опции mpif90 -nochoice и -choice соответственно. Версия модуля ``по выбору'' поддерживает ограниченное множество типов данных (числовые скаляры и числовые одно- и двумерные массивы). Это экспериментальная возможность; если у Вас возникли проблемы, присылайте почту на mpi-bugs@mcs.anl.gov. Ни один из этих модулей не предлагает полной ``расширенной поддержки Фортрана'', определенной в стандарте MPI-2.

Alex Otwagin 2002-12-16

next up previous contents
Next: Запуск через mpirun Up: Компоновка и запуск программ Previous: Фортран 90 и модуль   Contents

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

В некоторых случаях использовать скрипты, поставляемые с mpich для компиляции и компоновки программ, невозможно. Например, другие средства могут иметь свои собственные скрипты компиляции. В этом случае, Вы можете использовать -compile_info и -link_info, чтобы указать скриптам компиляции mpich флаги компиляции и библиотеки компоновки, необходимые для корректной работы процедур mpich. Например, при использовании устройства ch_shmem в системе Solaris, библиотека thread (-lthread) должна компоноваться вместе с приложением. Если этой библиотеки нет, приложение будет собрано, но необходимые процедуры будут заменены версиями-заглушками из С-библиотеки Solaris, вызывающими некорректное завершение приложения.

Например, чтобы определить флаги, используемые для компиляции и компоновки программ на С, Вы можете использовать эти команды, вывод которых показан для устройства ch_p4 на рабочей станции Linux.

% mpicc -compile_info
cc -DUSE_STDARG -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_UNISTD_H=1
-DHAVE_STDARG_H=1 -DUSE_STDARG=1 -DMALLOC_RET_VOID=1
-I/usr/local/mpich/include -c

% mpicc -link_info
cc -DUSE_STDARG -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_UNISTD_H=1
-DHAVE_STDARG_H=1 -DUSE_STDARG=1 -DMALLOC_RET_VOID=1
-L/usr/local/mpich/lib -lmpich


Alex Otwagin 2002-12-16

next up previous contents
Next: Специальные возможности различных систем Up: Компоновка и запуск программ Previous: Компиляция и компоновка без   Contents

Запуск через mpirun

Для запуска программы MPI используйте команду mpirun, находящуюся в каталоге
`/usr/local/mpich/bin'. Практически для всех систем Вы можете использовать команду
mpirun $-$np 4 a.out
для запуска программы `a.out' на четырех процессорах. Команда mpirun -help выдаст Вам полный список опций, которые также можно найти в приложении В.

При выходе mpirun возвращает статус одного из процессов, обычно процесса с рангом 0 в
MPI_COMM_WORLD.


Alex Otwagin 2002-12-16

next up previous contents
Next: Программы MPMD Up: Руководство пользователя mpich, переносимой Previous: Запуск через mpirun   Contents

Специальные возможности различных систем

MPI сделан относительно просто для написания переносимых параллельных программ. Единственной вещью, не стандартизованной в MPI, является среда, внутри которой выполняются параллельные программы. Существуют три базовых типа параллельных сред: параллельные компьютеры, кластеры рабочих станций и интегрированные распределенные среды, которые мы называем ``вычислительными решетками'', и которые включают в себя параллельные компьютеры и рабочие станции, а также могут охватывать несколько географических мест. Естественно, параллельный компьютер (обычный) предоставляет интегрированный, относительно простой способ выполнения параллельных программ. С другой стороны, кластеры рабочих станций и среды-решетки, обычно не имеют стандартного способа выполнения параллельных программ и требуют некоторой дополнительной настройки. Реализация mpich создана, чтобы скрыть эти различия внутри скрипта mpirun; однако, если Вам необходимы специальные возможности или опции, или если Вы столкнулись с проблемой при запуске Вашей программы, Вы должны понимать различия между этими системами. Далее мы описываем специальные возможности, которые применяются для кластеров рабочих станций, решеток (поддерживаемых через устройство globus2) и некоторых параллельных компьютеров.

Для связывания множества многопроцессорных систем выбор устройства globus2, описанного в разд. 3.6, может быть лучшим, чем устройства ch_p4.


Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Кластеры рабочих станций и Up: Специальные возможности различных систем Previous: Специальные возможности различных систем   Contents

Программы MPMD

Существует возможность запуска параллельной программы с различными исполняемыми файлами и использованием нескольких устройств, таких, как ch_p4, ch_mpl, и globus2. Этот стиль параллельного программирования часто называется MPMD (множество программ при множестве данных). Во многих случаях, программу MPMD легко преобразовать в единую программу, которая использует ранг процесса для вызова различных процедур; это облегчает старт параллельных программ и их отладку. Если преобразование программы MPMD в SPMD (одна программа при множестве данных, не путайте с SIMD - один поток команд при множестве данных) не возможно, то Вы можете запускать программы MPMD через mpich. Однако, Вы не можете использовать mpirun для запуска программ; вместо этого, Вам нужно следовать инструкциям для каждого устройства. Для устройства globus2 см. разд. 3.6. Для устройства ch_p4 см. разд. 3.2.6 и обсуждение файлов procgroup. Для устройства ch_mpl Вам нужно смотреть документацию POE для Вашей системы о деталях по запуску программ MPMD.

Alex Otwagin 2002-12-16

next up previous contents
Next: Проверка Вашего списка машин Up: Специальные возможности различных систем Previous: Программы MPMD   Contents

Кластеры рабочих станций и устройство ch_p4

Большинство процессоров массового параллелизма (MPP) предоставляют способ запуска программы на требуемом количестве процессоров; mpirun дает возможность использовать соответствующую команду. В противоположность этому, кластеры рабочих станций требуют, чтобы каждый процесс в параллельной задаче запускался индивидуально, даже если существуют программы, помогающие запуску этих процессов (см. ниже 3.2.3). Поскольку кластеры рабочих станций не всегда организованы как MPP, требуется дополнительная информация для их использования. mpich нужно инсталлировать со списком участвующих рабочих станций, находящимся в файле `machines.<arch>' в каталоге `/usr/local/mpich/share'. Этот файл используется mpirun для выбора процессоров для выполнения. (Использование гетерогенных кластеров обсуждается в разд. 3.2.6.) Далее в этом разделе обсуждаются некоторые детали этого процесса и решение проблем.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Использование безопасной shell Up: Кластеры рабочих станций и Previous: Кластеры рабочих станций и   Contents

Проверка Вашего списка машин

Используйте скрипт `tstmachines' в каталоге `/usr/local/mpich/sbin', чтобы убедиться в возможности использования всех машин, указанных в списке. Этот скрипт выполняет rsh и краткий вывод каталогов; он проверяет, что у Вас есть доступ к узлу и что программа в текущем каталоге видна на удаленном узле. Если возникают проблемы, они будут указаны. Эти проблемы должны быть устранены до продолжения работы.

Единственным аргументом tstmachines является имя архитектуры; оно то же самое, что и расширение файла machines. Например,

/usr/local/mpich/sbin/tstmachines sun4
проверяет, что программа в текущем каталоге может исполняться на всех машинах sun4 в списке machines. Эта программа ничего не выводит, если все в порядке; если Вы хотите увидеть, что происходит, используйте аргумент -v (verbose - подробно):
/usr/local/mpich/sbin/tstmachines -v sun4
Вывод этой команды может выглядеть примерно так
Trying true on host1.uoffoo.edu ...
Trying true on host2.uoffoo.edu ...
Trying ls on host1.uoffoo.edu ...
Trying ls on host2.uoffoo.edu ...
Trying user program on host1.uoffoo.edu ...
Trying user program on host2.uoffoo.edu ...
Если tstmachines обнаружит проблему, он может предположить возможные причины и решения. Вкратце здесь проводятся три теста:
  1. Могут ли процессы запускаться на удаленной машине? tstmachines пытается запустить команду true для shell на каждой машине из файла `machines', используя команду удаленной shell. Отметьте, что устройства ch_p4 не требуют команды удаленной shell и могут использовать альтернативные методы (см. разд. 3.2.3 и 3.2.2).
  2. Доступен ли текущий рабочий каталог всем машинам? Это предполагает выполнение ls для файла, который создала tstmachines при запуске ls с использованием команды удаленной shell. Отметьте, что устройство ch_p4 не требует, чтобы все процессоры имели доступ к одной и той же файловой системе (см. разд. 3.2.6), но этого требует команда mpirun.
  3. Может ли программа пользователя выполняться на удаленной системе? Здесь проверяется, что разделяемые библиотеки и другие компоненты корректно установлены на всех машинах.


Alex Otwagin 2002-12-16

next up previous contents
Next: Использование безопасного сервера Up: Кластеры рабочих станций и Previous: Проверка Вашего списка машин   Contents

Использование безопасной shell

Руководство по инсталляции поясняет, как настроить вашу среду, чтобы устройство ch_p4 в сети могло использовать безопасную shell ssh вместо rsh. Это полезно для сетей, в которых по причинам безопасности использование rsh не разрешено.

Alex Otwagin 2002-12-16

next up previous contents
Next: Кластеры SMP Up: Кластеры рабочих станций и Previous: Использование безопасной shell   Contents

Использование безопасного сервера

Поскольку каждая рабочая станция в кластере (обычно) требует, чтобы новый пользователь регистрировался на ней, и поскольку этот процесс требует больших временных затрат, mpich предлагает программу, которую можно использовать для ускорения этого процесса. Это безопасный сервер serv_p4 в каталоге `/usr/local/mpich/bin'. Скрипт `chp4_servs' в этом же каталоге можно использовать для запуска serv_p4 на тех рабочих станциях, где Вы можете выполнить rsh. Вы можете также запустить сервер вручную и позволить ему работать в фоновом режиме; это подходит для машин, которые не имеют соединения по rsh, но на которых у Вас есть профиль.

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

chp4_servs -port=1234
Она запустит безопасный сервер на всех машинах, перечисленных в файле
`/usr/local/mpich/share/machines.<arch>'.

Номер порта, указанный опцией -port=, должен отличаться от любого уже используемого порта рабочих станций.

Чтобы разрешить использование безопасного сервера устройствами ch_p4, добавьте в Вашу среду следующие определения:

setenv MPI_USEP4SSPORT yes
setenv MPI_P4SSPORT 1234
Значением MPI_P4SSPORT должен быть порт, на котором Вы хотите запустить безопасный сервер. Когда эти переменные окружения установлены, mpirun пытается использовать безопасный сервер для запуска программ, использующих устройство ch_p4.( Аргумент командной строки -p4ssport для mpirun может использоваться вместо этих переменных окружения; mpirun -help даст Вам дополнительную информацию.)

Alex Otwagin 2002-12-16

next up previous contents
Next: Гетерогенные сети и устройство Up: Кластеры рабочих станций и Previous: Использование безопасного сервера   Contents

Кластеры SMP

При использовании кластеров SMP-машин (с устройством ch_p4, сконфигурированным с опцией
-comm=shared), Вы можете контролировать количество процессов на каждом узле, которые общаются через разделяемую память. Во-первых, Вы должны изменить файл machines (см. разд. 3.2), чтобы указать количество процессов, запускаемых на каждой машине. Обычно это число не больше количества процессоров; на SMP с большим количеством процессоров это число должно быть на единицу меньше, чтобы предоставить один процессор операционной системе. Формат очень прост: каждая строка файла machines определяет имя компьютера, возможно продолженное двоеточием (:) и количеством возможных процессов. Например, файл содержит строки
mercury
venus
earth
mars:2
jupiter:15
определяющие три однопроцессных машины (mercury, venus, earth), двухпроцессную машину mars и 15-процессную машину jupiter.

По умолчанию mpirun использует не более процессоров, чем указано в файле machines для каждого узла, до 16 процессов на каждой машине. При установке переменной окружения MPI_MAX_CLUSTER_SIZE с положительным целым значением, mpirun может запускать не более MPI_MAX_CLUSTER_SIZE процессов на машине, разделяя память для взаимодействия. Например, если MPI_MAX_CLUSTER_SIZE имеет значение 4, то команда mpirun -np 9 для указанного выше файла machines создаст один процесс на машинах mercury, venus, earth, два процесса на mars (поскольку файл machines определяет, что mars может иметь два процесса, разделяющих память) и 4 на jupiter (поскольку jupiter может иметь 15 процессов, но необходимы только 4). Если необходимо 10 процессов, mpirun стартует заново с начала файлаmachines, создавая дополнительный процесс на mercury; значение MPI_MAX_CLUSTER_SIZE предотвращает запуск mpirun пятого процесса с разделяемой памятью на jupiter.


Alex Otwagin 2002-12-16

next up previous contents
Next: Файл procgroup для P4 Up: Кластеры рабочих станций и Previous: Кластеры SMP   Contents

Гетерогенные сети и устройство ch_p4

Гетерогенная сеть рабочих станций - это сеть, в которую входят машины с различными архитектурами и/или операционными системами. Например, сеть может содержать три рабочих станции Sun SPARC (sun4) и три рабочих станции SGI IRIX, взаимодействующих через протокол TCP/IP. mpirun может использовать все станции путем указания множества аргументов -arch и -np. Например, для запуска программы на 3-х sun4 и 2 SGI IRIX, используйте
mpirun -arch sun4 -np 3 -arch IRIX -np 2 program.%a
Специальное имя программы program.%a позволяет Вам определить различные исполняемые файлы программы, поскольку исполняемые файлы Sun не могут работать на рабочих станциях SGI и наоборот. %a заменяется на имя архитектуры; в данном примере program.sun4 работает на машинах Sun и program.IRIX работает на машинах SGI IRIX. Вы также можете поместить программы в различные каталоги; например,
mpirun -arch sun4 -np 3 -arch IRIX -np 3 /tmp/%a/program
Важно определить архитектуру через -arch перед определением количества процессоров. Первая команда arch должна относиться к процессору, на котором будет запущена задача. Если не указана опция -nolocal, то первая -arch должна относиться к процессору, с которого запущен mpirun.

Alex Otwagin 2002-12-16

next up previous contents
Next: Настройка производительности P4 Up: Кластеры рабочих станций и Previous: Гетерогенные сети и устройство   Contents

Файл procgroup для P4

Для большего контроля над тем, как запускается задача, нам нужно увидеть, как mpirun запускает параллельную программу на кластере рабочих станций. Каждый раз при запуске mpirun он создает и использует новый файл имен машин только для этого запуска, используя в качестве ввода файл machines. (Новый файл называется PIyyyy, где yyyy - идентификатор процесса). Если Вы определяете -keep_pg для вызова mpirun, Вы можете использовать эту информацию, чтобы видеть, где mpirun запустил несколько Ваших последних задач. Вы можете создать этот файл самостоятельно и определить его в качестве аргумента mpirun. Чтобы сделать это для ch_p4, используйте
mpirun -p4pg pgfile myprog
где pgfile - имя файла. Формат файла определен ниже.

Это необходимо, если Вы хотите жестко контролировать машины, на которых Вы работаете, или mpirun не может создать файл автоматически. Это происходит, если

Формат файла procgroup для ch_p4 - это множество строк вида
<hostname>    <#procs>    <progname>    <login>
Примером такого файла, где команда будет запущена с машины sun1, может быть


sun1        0    /users/jones/myprog 

sun2 1 /users/jones/myprog
sun3 1 /users/jones/myprog
hp1 1 /home/mbj/myprog    mbj
Указанный выше файл определяет четыре процесса, по одному на каждой из трех sun и один на другой станции, где имя профиля пользователя отличается. Отметьте 0 в первой строке. Он здесь, чтобы указать, что на машине sun1 не должен запускаться никакой другой процесс, кроме того, который запускается командой пользователя. Вы можете пожелать запустить все процессы на Вашей собственной машине в качестве теста. Вы можете сделать это, повторив ее имя в файле


sun1        0    /users/jones/myprog 

sun1 1 /users/jones/myprog
sun1 1 /users/jones/myprog
Эта команда запустит три процесса на sun1, взаимодействующих через сокеты. Для запуска на многопроцессорной системе с разделяемой памятью 10 процессов, вы можете использовать файл вида
sgimp        9     /u/me/prog
Заметьте, что это пример для 10 процессов, один из которых непосредственно запускается пользователем, а другие девять определены в этом файле. Он требует, чтобы mpich был сконфигурирован с опцией -comm=shared; для дополнительной информации см. руководство по инсталляции.

Если Вы находитесь на машине gyrfalcon и хотите запустить задачу с одним процессом на gyrfalcon и тремя процессами на alaska, причем процессы на alaska взаимодействуют через разделяемую память, Вы можете использовать



local        0    /home/jbg/main 

alaska 3 /afs/u/graphics
Не существует возможности передать различным процессам MPI различные аргументы командной строки.

Alex Otwagin 2002-12-16

next up previous contents
Next: Использование специальных межсоединений Up: Кластеры рабочих станций и Previous: Файл procgroup для P4   Contents

Настройка производительности P4

Существует несколько переменных окружения и опций командной строки, которые можно использовать для настройки производительности устройства ch_p4. Отметьте, что эти переменные окружения должны быть определены для всех процессов, которые создаются, а не только для того, который Вы запустите из программы MPI (т.е., установка этих переменных должна быть частью Ваших файлов `.login' или `.cshrc'). Переменными окружения являются:
P4SOCBUFSIZE
определяет размер буфера сокета в байтах. Увеличение этого значения может увеличить производительность на некоторых системах.
P4_WINSHIFT
Это еще один параметр сокета, поддерживаемый только на некоторых платформах. Мы советуем не использовать его.
P4_GLOBMEMSIZE
Это количество памяти в байтах, зарезервированной для коммуникации через разделяемую память (когда mpich конфигурируется с -comm=shared). Увеличьте его, если Вы получаете сообщение об ошибке, что p4_shmalloc возвращает NULL.
Настройка TCP. Опция командной строки -p4sctrl принимает параметры, которые определяют различные опции сокетов. Они предоставляются в форме имя=значение, разделенные двоеточием. За исключением bufsize, пользователи обычно не изменяют их значения по умолчанию. Имена и их значения:
bufsize
Размер буфера сокета, в килобайтах. Например, bufsize=32 требует буферы для сокетов по 32К. По умолчанию значение - 16.
winsize
Размер winshift. доступно только на системах, которые определяют TCP_WINSHIFT и игнорируется в других случаях.
netsendw
Использовать select для ожидания завершения write. Значения y (по умолчанию) и n.
netreadw
Использовать select для ожидания завершения read. Значения y (по умолчанию) и n.
writev
Использовать writev для отправки заголовка (конверта MPI) и данных в одном сообщении. Значения y (по умолчанию) и n.
readb
Переключить сокет в блокирующий режим ожидания по чтению, вместо ожидания по занятости или использования select. Значения y (по умолчанию) и n.
stat
Вывести статистику операций write и read. Использовать только опытным пользователям!
Например, для использования буферов сокетов по 64К и отключения использования writev, Вы должны использовать
mpirun -np 2 mpptest -p4sctrl bufsize=64:writev=n


Alex Otwagin 2002-12-16

next up previous contents
Next: Использование разделяемых библиотек с Up: Кластеры рабочих станций и Previous: Настройка производительности P4   Contents

Использование специальных межсоединений

В некоторых инсталляциях определенные машины могут соединяться несколькими способами. Например, ``обычный'' Ethernet может поддерживаться высокоскоростным кольцом FDDI. Обычно для идентификации высокоскоростных соединений используются альтернативные имена машин. Все, что Вам необходимо сделать - это поместить эти альтернативные имена в файл machines.xxxx. В этом случае важно использовать не форму local 0, а имя локальной машины. Например, если машины host1 и host2 соединены ATM с именами host1-atm и host2-atm соответственно, верный файл procgroup для ch_p4 (для запуска программы `/home/me/a.out') будет иметь вид
host1-atm     0     /home/me/a.out
host2-atm     1     /home/me/a.out


Alex Otwagin 2002-12-16

next up previous contents
Next: Быстрый запуск через многоцелевого Up: Кластеры рабочих станций и Previous: Использование специальных межсоединений   Contents

Использование разделяемых библиотек с устройством ch_p4

Как указано в конце раздела 2.1.1, иногда необходимо быть уверенным, что переменные окружения передаются удаленным машинам, прежде чем запустится программа, использующая разделяемые библиотеки. Различные команды удаленной shell (например, rsh или ssh) не делают этого. К счастью, безопасный сервер (разд. 3.2.3) может передать переменные окружения. Сервер создается и инсталлируется как часть устройства ch_p4, и может быть установлен на всех машинах из файла machines для текущей архитектуры (предполагая, что там существует работающая команда удаленной shell) с помощью
chp4_servs -port=1234
Безопасный сервер распространяет все переменные окружения на удаленные процессы, и обеспечивает, чтобы среда процесса (содержащего Вашу программу MPI) содержала все переменные окружения, начинающиеся с LD_ (в таком случае система использует LD_SEARCH_PATH или некоторое другое имя для поиска разделяемых бибилиотек).

Alex Otwagin 2002-12-16

next up previous contents
Next: Цели Up: Специальные возможности различных систем Previous: Использование разделяемых библиотек с   Contents

Быстрый запуск через многоцелевого демона и устройство ch_p4mpd

Это устройство является экспериментальным и версия mpirun для него немного отличается от версий для других устройств. В этом разделе мы описываем, как работает система демонов mpd и как с их использованием запустить программу MPI. Чтобы использовать эту систему, mpich должен конфигурироваться для устройства ch_p4mpd, и демоны должны быть запущены на машине, с которой Вы хотите выполнить задачу. Этот раздел описывает, как это сделать.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Введение Up: Быстрый запуск через многоцелевого Previous: Быстрый запуск через многоцелевого   Contents

Цели

Целью многоцелевого демона (mpd и связанного с ним устройства ch_p4mpd) является обеспечить поведение mpirun как единой программы, даже если она создает множество процессов для выполнения задачи MPI. Далее мы будем ссылаться на процесс mpirun и процессы MPI. Это поведение включает в себя

Alex Otwagin 2002-12-16

next up previous contents
Next: Примеры Up: Быстрый запуск через многоцелевого Previous: Цели   Contents

Введение

Устройство ch_p4 по умолчанию обращается к rsh для обработки запуска на удаленной машине. Необходимость идентификации во время запуска задачи, сочетающаяся с последовательным процессом, в котором информация собирается с каждой удаленной машины и отсылается широковещательно всем остальным, делает запуск задачи неприемлимо медленным, особенно для большого числа процессов.

Начиная с mpich версии 1.2.0 мы ввели новый медот обработки запуска, основанный на демонах. Этот механизм, требующий конфигурирования нового устройства, еще не достаточно широко протестирован, чтобы использоваться в кластерах по умолчанию, но мы надеемся, что в конечном итоге он станет таким. В этой версии mpich он был существенно улучшен и сейчас инсталлируется вместе с mpich по команде make install. В системах с gdb он поддерживает простой параллельный отладчик, который мы называем mpigdb.

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

Для использования нового механизма запуска Вы должны



Alex Otwagin 2002-12-16

next up previous contents
Next: Как работают демоны Up: Быстрый запуск через многоцелевого Previous: Введение   Contents

Примеры

Здесь приведены несколько примеров использования mpirun, которые созданы при условии, что mpich конфигурировался и строился для устройства ch_p4mpd.
\includegraphics[width=12cm]{usfig1.good.eps}


Alex Otwagin 2002-12-16

next up previous contents
Next: Запуск задач mpich под Up: Быстрый запуск через многоцелевого Previous: Примеры   Contents

Как работают демоны

Как только демоны запускаются, они соединяются в кольцо: "консольный" процесс (mpirun, mpdtrace, mpdallexit, и т.д.) может соединиться с любым mpd через именованный сокет Unix, установленный в /tmp локальным mpd. Если это процесс mpirun, он требует, чтобы было запущено определенное число процессов, начиная с машины, заданной -MPDLOC-, как было указано выше. По умолчанию место размещения - следующий mpd в кольце после того, который был запрошен с консоли. После этого происходят следующие события. С этого момента ситуация выглядит подобно показанной на рис. 1. Когда клиенту необходимо соединиться с другим клиентом, они используют менеджеры, чтобы найти подходящий процесс на машине-приемнике. Процесс mpirun может быть приостановлен - в этом случае останавливаются и его клиенты, однако mpd и менеджеры продолжают выполняться, чтобы они смогли разбудить клиентов после пробуждения mpirun. Уничтожение процесса mpirun уничтожает и клиентов, и менеджеров.

Одно и то же кольцо mpd может использоваться для запуска множества задач с множества консолей в одно и то же время. При обычных условиях необходимо, чтобы для каждого пользователя существовало отдельное кольцо mpd. Для целей безопасности каждый пользователь должен иметь в своем домашнем каталоге доступный для чтения только ему файл `.mpdpasswd', содержащий пароль. Файл будет считываться при запуске mpd. Только mpd, знающие этот пароль, могут войти в кольцо существующих mpd.

Новой является возможность конфигурировать систему mpd, чтобы демоны могли загружаться как root. Чтобы сделать это после конфигурирования mpich Вам нужно повторно переконфигурировать ее в каталоге mpid/mpd с опцией $-$$-$enable-root и пересобрать. Тогда mpirun будет инсталлирован как программа setuid. Несколько пользователей могут использовать одно и то же множество mpd, которые были запущены root, несмотря на то, что их mpirun, менеджеры и клиенты будут запущены от имени пользователя, вызвавшего mpirun.

Figure: Система mpd с консолью, менеджерами и клиентами
\includegraphics[width=12cm]{usfig2.good.eps}


Alex Otwagin 2002-12-16

next up previous contents
Next: Отладка программ MPI Up: Быстрый запуск через многоцелевого Previous: Как работают демоны   Contents

Запуск задач mpich под управлением MPD

Поскольку демоны MPD уже находятся в соединении друг с другом перед запуском задачи, то ее запуск происходит гораздо быстрее, чем при использовании устройства ch_p4. Команда mpirun для устройства ch_p4mpd имеет ряд специальных аргументов командной строки. Если Вы введете mpirun без аргументов, они будут выведены:
% mpirun
Использование: mpirun <аргументы> программа <аргументы программы>
Аргументы:
-np     число_процессов_для_запуска (обязательные 2 первых аргумента)
-s    (закрыть stdin; может запускаться в фоновом режиме без ввода с терминала)
-g размер_группы    (запускает размер_группы процессов на одном mpd)
-m файл_machine    (имя файла возможных машин)
-l    (метки строк; уникальные метки для вывода от каждого процесса)
-1    (не запускать первый процесс локально)
-y    (запускать как задачу для Myrinet)
Опция -1 позволяет Вам, например, запускать mpirun на ``входном узле'' или ``узле разработки'' в Вашем кластере, но запускать все процессы приложения на ``вычислительных узлах''.

Программа mpirun запускается в отдельном (не-MPI) процессе, который создает процессы MPI, выполняющие определенные исполняемые файлы. Он служит единым процессом, представляющим параллельные процессы MPI, чтобы сигналы, посылаемые ему, такие как Z и C, передавались через систему демонов MPD ко всем процессам. Потоки вывода stdout и stderr от процессов MPI возвращаются в stdout и stderr для mpirun. Как и в большинстве реализаций MPI, stdin от mpirun направляется в stdin процесса MPI с рангом 0.


Alex Otwagin 2002-12-16

next up previous contents
Next: Подход printf Up: Специальные возможности различных систем Previous: Запуск задач mpich под   Contents

Отладка программ MPI

Отладка параллельных программ, как известно, сложный процесс. Параллельным программам присущи не только обычные виды ошибок, но и новые, связанные с временем и ошибками синхронизации. Часто программы ``зависают'', когда процесс ждет сообщения, которое никогда не было послано или послано с неверным идентификатором. Параллельные ошибки часто возникают, когда Вы добавляете код, чтобы попытаться определить ошибку, что особенно обидно. В этом разделе мы обсуждаем три подхода к параллельной отладке.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Использование коммерческого отладчика Up: Отладка программ MPI Previous: Отладка программ MPI   Contents

Подход printf

Как и в последовательной отладке, Вы часто желаете отследить интересующие события в программе выводом сообщений трассировки. Обычно Вы идентифицируете сообщение рангом процесса, пославшего его. Это делается непосредственным помещением ранга в сообщение трассировки. Как было указано выше, использование опции ``метки строк'' (-l) для mpirun в устройстве ch_p4mpd в mpich добавляет ранг автоматически.

Alex Otwagin 2002-12-16

next up previous contents
Next: Использование mpigdb Up: Отладка программ MPI Previous: Подход printf   Contents

Использование коммерческого отладчика

Отладчик TotalView©    от Etnus, Ltd. [1] работает на множестве платформ и взаимодействует со многими фирменными реализациями MPI, включая mpich на кластерах Linux. Для устройства ch_p4 Вы вызываете TotalView командой
mpirun -tv <другие аргументы>
а для устройства ch_p4mpd Вы используете
totalview mpirun <другие аргументы>
Здесь mpirun представляет параллельную задачу как целое. TotalView содержит специальные команды для вывода очередей сообщений в процессе MPI. Существует возможность присоединить TotalView к набору процессов, которые уже запущены параллельно; его также можно присоединить к одному из процессов.

Alex Otwagin 2002-12-16

next up previous contents
Next: Симметричные мультипроцессоры (SMP) и Up: Отладка программ MPI Previous: Использование коммерческого отладчика   Contents

Использование mpigdb

Устройство ch_p4mpd в mpich предоставляет ``параллельный отладчик'', который состоит просто из
нескольких копий отладчика gdb, и механизма перенаправления stdin. Команда mpigdb является версией mpirun, которая запускает каждый процесс под управлением gdb и управляет stdin для gdb. Команда `z' позволяет Вам направит ввод с терминала в определенный процесс или разослать его всем процессам. Мы демонстрирем это запуском cpi под управлением простого отладчика:


donner% mpigdb -np 5 cpi                                         #
по умолчанию вывод от всех

(mpigdb) b 29 # установить точку останова для
# всех
0-4: Breakpoint 1 at 0x8049e93: file cpi.c, line 29.
(mpigdb)r # запустить все 0-4:
Starting program:/home/lusk/mpich/examples/basic/cpi
0: Breakpoint 1, main (argc=1, argv=0xbffffa84) at cpi.c:29
1-4: Breakpoint 1, main (argc=1, argv=0xbffffa74) at cpi.c:29
0-4: 29     n = 0; # все достигли точки останова
(mpigdb)n # пошаговый режим для всех
0: 38 if (n==0) n=100; else n=0;
1-4: 42 MPI_Bcast (&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
(mpigdb) z0 # stdin только для процесса
# ранга 0
(mpigdb)n # пошаговый режим процесса
# ранга 0
0: 40 startwtime = MPI_Wtime ();
(mpigdb)n # до останова
0: 42 MPI_Bcast (&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
(mpigdb)z # stdin возвращен для всех
# процессов
(mpigdb)n # пошаговый режим для всех
... # до интересующего места
(mpigdb) n
0-4: 52         x = h * ( (double)i $-$ 0.5);
(mpigdb) px # вывод от всех процессов
0: $1 = 0.0050000000000000001 # значение x процесса 0
1: $1 = 0.014999999999999999 # значение x процесса 1
2: $1 = 0.025000000000000001 # значение x процесса 2
3: $1 = 0.035000000000000003 # значение x процесса 3
4: $1 = 0.044999999999999998 # значение x процесса 4
(mpigdb)c # продолжить все
0: pi is approximately 3.141600986923, Error is 0.000008333333
0$-$4: Program exited normally.
(mpigdb)q # выход
donner%
Если отлаживаемый процесс зависает (нет приглашения mpigdb) из-за ожидания текущим процессом действий другого процесса, ctl-C вызовет меню, позволяющее Вам переключать процессы. mpigdb не так развит, как TotalView, но зачастую полезнее и свободно распространяется с mpich.
next up previous contents
Next: Симметричные мультипроцессоры (SMP) и Up: Отладка программ MPI Previous: Использование коммерческого отладчика   Contents
Alex Otwagin 2002-12-16

next up previous contents
Next: Вычислительные решетки: устройство globus2 Up: Специальные возможности различных систем Previous: Использование mpigdb   Contents

Симметричные мультипроцессоры (SMP) и устройство ch_shmem

Во многих реализациях с разделяемой памятью mpich резервирует часть разделяемой памяти, через которую передаются сообщения. По умолчанию, mpich резервирует приблизительно 4 Мбайт разделяемой памяти. Вы можете изменить объем с помощью переменной окружения MPI_GLOBMEMSIZE. Например, чтобы предоставить 8 МБайт, введите
setenv MPI_GLOBMEMSIZE 8388608
Большие сообщения передаются частями, так что MPI_GLOBMEMSIZE не может ограничить максимальный размер сообщения, но его увеличение может улучшить производительность. Помните, что системы могут ограничивать количество доступной разделяемой памяти.

По умолчанию, mpich ограничивает количество процессов для устройства ch_shmem числом 32, несмотря на то, что во время конфигурирования было определено, что машина может иметь больше процессов. Вы можете переопределить этот предел, установив переменную окружения PROCESSOR_COUNT в максимальное число процессов, которое Вы хотите запустить, а затем переконфигурировать и пересобрать mpich.


Alex Otwagin 2002-12-16

next up previous contents
Next: Многопроцессорные системы Up: Специальные возможности различных систем Previous: Симметричные мультипроцессоры (SMP) и   Contents

Вычислительные решетки: устройство globus2

Устройство globus24 поддерживает выполнение программ MPI на ``вычислительных решетках'', которые могут включать параллельные компьютеры и рабочие станции, охватывающие несколько географических мест. В таких решетчатых средах различные машины могут поддерживать разные механизмы безопасности и механизмы создания процессов. Устройство globus2 скрывает от Вас низкоуровневые детали, позволяя Вам запускать программы через mpirun, как на многопроцессорных системах, так и на кластерах рабочих станций. Оно также предлагает другие удобные опции, такие, как удаленный доступ к файлам и вычислительную поддержку. Эти возможности предоставляются использованием служб, поддерживаемых пакетом Globus: см. http://www.globus.org о деталях.

Устройство globus2 требует, чтобы на компьютерах, где будут создаваться процессы, были запущены специальные серверы. В нашей дискуссии об использовании устройства globus2 мы предполагаем, что будем использовать globus2 на наборе машин, где уже установлены и запущены различные серверы Globus. Такой набор часто определяется как ``вычислительная решетка'', например NASA's Information Power Grid (IPG). Если это возможно, мы рекомендуем Вам использовать устройство globus2 для таких сред. Если Вы хотите использовать устройство globus2 в других ситуациях, пожалуйста, пришлите письмо на developers@globus.org. Детали о запуске программ MPI с использованием устройства globus2 в вычислительных решетках на основе Globus приведены в приложении С.


Alex Otwagin 2002-12-16

next up previous contents
Next: Примеры программ MPI Up: Специальные возможности различных систем Previous: Вычислительные решетки: устройство globus2   Contents

Многопроцессорные системы

Каждая многопроцессорная система отличается от других и даже системы одного производителя могут использовать различные способы запуска задач при различных инсталляциях. Программа mpirun пытается адаптироваться к этому, но Вы можете обнаружить, что она не работает с Вашей инсталляцией. Один из шагов, который Вы можете предпринять - использовать опцию -show или -t (тестирование) для mpirun. Она покажет, как mpirun пытается запустить Вашу программу без ее действительного запуска. Вы можете использовать эту информацию вместе с инструкциями по запуску программ на Вашей машине, чтобы узнать, как запустить программу. Пожалуйста, сообщите нам (mpi-bugs@mcs.anl.gov) о всех специальных требованиях.

IBM SP. Использование mpirun на компьютерах IBM SP может оказаться сложным, поскольку существует много различных (и часто взаимоисключающих) способов запуска программ на них. mpirun, распространяемый вместе с mpich, работает на системах, использующих планировщик Argonne (иногда называемый EASY) и в системах, использующих предустановленные величины для менеджера ресурсов (т.е. тех, которые не требуют от пользователя выбора RMPOOL). Если у Вас есть проблемы с запуском программ mpich, попробуйте следовать правилам инсталляции для запуска программы MPL или POE (при использовании устройства ch_mpl) или для запуска p4 (при использовании устройства ch_p4).


Alex Otwagin 2002-12-16

next up previous contents
Next: Библиотека полезных расширений MPE Up: Руководство пользователя mpich, переносимой Previous: Многопроцессорные системы   Contents

Примеры программ MPI

Пакет mpich содержит ряд примеров программ, находящихся в дереве исходных файлов. Большиство из них работают с любой реализацией MPI, а не только с mpich.
examples/basic
содержит несколько коротких программ на Фортране, С и С++ для тестирования простейших возможностей MPI.
examples/test
содержит множество каталогов тестов для различных частей MPI. Введите ``make testing'' в этом каталоге для запуска нашего набора тестов функций.
examples/perftest
- программы оценки производительности. См. скрипт runmpptest об информации по запуску тестов производительности. Они относительно сложны.
mpe/contrib/mandel
- программа Mandelbrot, использующая графический пакет MPE, поставляемый вместе с mpich. Она должна работать с любой реализацией MPI, однако мы не тестировали ее. Это хорошая демонстрационная программа, если у Вас быстрый X сервер и не слишком много процессов.
mpe/contrib/mastermind
- программа для параллельного решения головоломки Mastermind. Она может использовать графику (gmm) или не использовать ее (mm).
Дополнительные примеры из книги Using MPI [10] доступны через WWW на
ftp://info.mcs.anl.gov/pub/mpi/using. На веб-сайте ftp://info.mcs.anl.gov/pub/mpi/ можно также найти обучающий материал.

Alex Otwagin 2002-12-16

next up previous contents
Next: Создание log-файлов Up: Руководство пользователя mpich, переносимой Previous: Примеры программ MPI   Contents

Библиотека полезных расширений MPE

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

Ожидается, что mpich будет и далее накапливать процедуры расширения различных направлений. Мы собираем их в библиотеке, названной mpe, от MultiProcessor Environment (многопроцессорная среда).

В настоящее время главными компонентами MPE являются



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Формат log-файлов Up: Библиотека полезных расширений MPE Previous: Библиотека полезных расширений MPE   Contents

Создание log-файлов

MPE предлагает несколько способов генерации log-файлов, описывающих прогресс вычислений. Эти log-Файлы могут быть просмотрены одним из графических инструментов, распространяемым вместе с MPE. К тому же Вы можете настроить эти log-файлы, чтобы добавить информацию, специфическую для приложения.

Простейшим способом генерации log-файлов является связывание Вашей программы со специальной библиотекой MPE, которая использует возможности профилирования MPI перехватывать все вызовы MPI в приложении.

Вы можете создать настраиваемые log-файлы для просмотра с помощью вызовов различных процедур регистрации MPE. О деталях смотрите man-страницы MPE. Пример приведен в разд. 5.5.3.


Alex Otwagin 2002-12-16

next up previous contents
Next: Параллельная графика для X Up: Библиотека полезных расширений MPE Previous: Создание log-файлов   Contents

Формат log-файлов

В настоящее время MPE предлагает три различных формата log-файлов - ALOG, CLOG и SLOG. ALOG предоставляется для обратной совместимости и отмечает события текстом ASCII. CLOG похож на ALOG, но запоминает данные в двоичном формате (по существу ``external32'') SLOG - это сокращение от Scalable LOGfile (расширяемый log-файл), запоминающий данные как состояния (а именно событие и его длительность) в специальном двоичном формате, выбранном для облегчения обработки программой визуализации очень больших (в несколько Гб) файлов.

Каждый из этих форматов log-файлов распознается одной или несколькими программами визуализации. Формат ALOG распознается программой nupshot. Формат CLOG распознается программой nupshot и jumpshot, базирующейся на Java. SLOG и Jumpshot-3 способны обрабатывать log-файлы, содержащие гигабайты данных.


Alex Otwagin 2002-12-16

next up previous contents
Next: Другие процедуры MPE Up: Библиотека полезных расширений MPE Previous: Формат log-файлов   Contents

Параллельная графика для X

MPE предлагает ряд процедур, поволяющих Вам выводить простую графику через систему X Window. К тому же здесь есть процедуры для ввода, такие, как определение области с помощью мыши. Примеры доступных графических процедур показаны в табл. 1. Об аргументах смотрите страницы man.

Table    1: Графические процедуры MPE
Процедуры управления
MPE_Open_graphics (совместно) открывает дисплей X
MPE_Close_graphics Закрывает графическое устройство X11
MPE_Update Обновляет дисплей X11
Процедуры вывода
MPE_Draw_point рисует точку на дисплее X
MPE_Draw_points рисует точки на дисплее X
MPE_Draw_line Рисует линию на дисплее X11
MPE_Draw_circle Рисует окружность
MPE_Fill_rectangle Рисует закрашенный прямоугольник на дисплее X11
MPE_Draw_logic Устанавливает логическую операцию для новых пикселей
MPE_Line_thinkness Устанавливает толщину линий
MPE_Make_color_array Создает массив индексов цветов
MPE_Num_colors Возвращает число доступных цветов
MPE_Add_RGB_color Добавляет новый цвет
Процедуры ввода
MPE_Get_mouse_press Возвращает текущие координаты мыши
MPE_Get_drag_region Возвращает прямоугольную область

Вы можете найти пример использования графической библиотеки MPE в каталоге mpich/mpe/contrib/mandel. Введите
make
mpirun -np 4 pmandel
чтобы увидеть параллельный алгоритм вычисления Mandelbrot, который демонстрирует некоторые возможности графической библиотеки MPE.

Alex Otwagin 2002-12-16

next up previous contents
Next: Профилирующие библиотеки Up: Библиотека полезных расширений MPE Previous: Параллельная графика для X   Contents

Другие процедуры MPE

Иногда, во время выполнения параллельной программы Вам необходимо убедиться, что лишь несколько (зачастую один) процессор в данное время чем-то занят. Процедуры MPE_Seq_begin и MPE_Seq_end позволяют Вам создать ``последовательную секцию'' в параллельной программе.

Стандарт MPI упрощает для пользователей определение процедур, вызываемых при обнаружении ошибки MPI. Зачастую то, что Вы хотите получить, это чтобы программа вызывала отладчик, чтобы Вы могли диагностировать проблему немедленно. В некоторых средах сделать это позволяет Вам обработчик ошибок в MPE_Errors_call_dbx_in_xterm. В дополнение к этому Вы можете скомпилировать библиотеку MPE с вложенным отладочным кодом. (См. опцию configure с названием -mpedbg).


Alex Otwagin 2002-12-16

next up previous contents
Next: Сбор информации о затратах Up: Библиотека полезных расширений MPE Previous: Другие процедуры MPE   Contents

Профилирующие библиотеки

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

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Автоматическая регистрация Up: Профилирующие библиотеки Previous: Профилирующие библиотеки   Contents

Сбор информации о затратах времени в процедурах MPI

Первая профилирующая библиотека очень простая. Профилирующая версия каждой из процедур MPI_Xxx вызывает PMPI_Wtime (создающую временную отметку) до и после каждого вызова соответствующей процедуры PMPI_Xxx. Времена накапливаются в каждом процессе и выводятся в отдельные файлы для каждого процесса в профилирующей версии MPI_Finalize. Файлы затем могут использоваться либо в общем отчете, либо в отчете процесс за процессом. Эта версия не принимает во внимание вложенные вызовы, возникающие при реализации, например, MPI_Bcast в рамках MPI_Send и MPI_Recv. Файл `mpe/src/trc_wrappers.c' реализует этот интерфейс, а опция -mpitrace в любом скрипте компиляции (например, mpicc) автоматически подключает эту библиотеку.

Alex Otwagin 2002-12-16

next up previous contents
Next: Настраиваемая регистрация Up: Профилирующие библиотеки Previous: Сбор информации о затратах   Contents

Автоматическая регистрация

Вторая профилирующая библиотека называется библиотекой регистрации MPE для генерации log-фай-
лов, которые являются файлами временных отметок событий для CLOG или временных отметок состояний для SLOG. Во время выполнения делаются вызовы MPE_Log_event для запоминания определенных типов событий в памяти, после чего эти буферы памяти собираются и сливаются параллельно во время MPI_Finalize. Во время выполнения можно использовать MPI_Pcontrol для приостановления или перезапуска операций регистрации. (По умолчанию регистрация включена. Вызов MPI_Pcontrol (0) выключает регистрацию; MPI_Pcontrol (1) снова включает ее.) Вызовы MPE_Log_event делаются автоматически при каждом вызове MPI. Вы можете анализировать конечные log-файлы множеством инструментов; они описаны в разд. 5.6.1 и 5.6.2.

Alex Otwagin 2002-12-16

next up previous contents
Next: Анимация в реальном времени Up: Профилирующие библиотеки Previous: Автоматическая регистрация   Contents

Настраиваемая регистрация

В дополнение к использованию предопределенных библиотек регистрации MPE для регистрации всех вызовов MPI, вызовы регистрации MPE могут встраиваться в пользовательские программы MPI для определения и регистрации состояний. Эти состояния называются состояниями, определяемыми пользователем. Состояния могут вкладываться друг в друга, позволяя определять состояния, описывающие процедуру пользователя, содержащую несколько вызовов MPI, и показывать как состояние, определенное пользователем, так и содержащиеся в нем операции MPI. Процедура MPE_Log_get_event_number может использоваться для назначения уникальных номеров событий5 из системы MPE. Процедуры MPE_Describe_state и MPE_Log_event могут затем использоваться для описания пользовательских состояний. Следующий пример иллюстрирует использование этих процедур.
int eventID_begin, eventID_end;
...
eventID_begin = MPE_Log_get_event_number ();
eventID_end = MPE_Log_get_event_number ();
...
MPE_Describe_state ( eventID_begin, eventID_end, ``Amult'', ``bluegreen'' );
...
MyAmult ( Matrix m, Vector v )
/* Записывает стартовое событие вместе с размером матрицы */
MPE_Log_event ( eventID_begin, m->n, (char *)0 );
... Код Amult, включая вызовы MPI ...
MPE_Log_event ( eventID_end, 0, (char *)0 );
Log-файл, генерируемый этим кодом, будет отмечать процедуры MPI внутри процедуры MyAmult зелено-голубым прямоугольником. Цвет, использованный в этом коде выбран из файла rgb.txt, предоставленного инсталляцией сервера X, т.е. `rgb.txt' находится в каталоге `/usr/X11R6/lib/X11' в Linux.

Если бибилотека регистрации MPE `liblmpe.a' не связаны с программой пользователя, необходимо использовать перед и после всех вызовов MPE процедуры MPE_Init_log и MPE_Finish_log. Программы-примеры `cpilog.c' и `fpi.f' для иллюстрации использования этих процедур MPE находятся в каталоге исходных кодов MPE `contrib/test' или в установленном каталоге `share/examples'.


Alex Otwagin 2002-12-16

next up previous contents
Next: Просмотрщики log-файлов Up: Профилирующие библиотеки Previous: Настраиваемая регистрация   Contents

Анимация в реальном времени

Третья библиотека реализует простую программную анимацию в реальном времени. Графическая библиотека MPE содержит процедуры, позволяющие множеству процессов разделять дисплей X, который не ассоциирован ни с одним определенным процессом. Наш прототип использует эти возможности для рисования стрелок, которые представляют трафик сообщений при выполнении программ.

Alex Otwagin 2002-12-16

next up previous contents
Next: Upshot и Nupshot Up: Библиотека полезных расширений MPE Previous: Анимация в реальном времени   Contents

Просмотрщики log-файлов

Существует четыре графических средства визуализации, распространяемых вместе с MPE - это upshot, nupshot, Jumpshot-2 и Jumpshot-3. Из этих 4 просмотрщиков log-файлов только три построены с помощью MPE. Это upshot, Jumpshot-2 и Jumpshot-3.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Jumpshot-2 и Jumpshot-3 Up: Просмотрщики log-файлов Previous: Просмотрщики log-файлов   Contents

Upshot и Nupshot

Один из используемых нами инструментов называется upshot, написанный на Tcl/Tk, который происходит от Upshot [13]. Вид экрана Upshot в работе показан на рис. 2.

Он показывает параллельные линии времени с состояниями процессов, подобно paraGraph [12]. Вид может увеличиваться или уменьшаться по горизонтали или вертикали, центрироваться на любой точке дисплея, выбранной мышью. На рис. 2 среднее окно происходит от увеличения верхнего окна в выбранной точке, чтобы увидеть больше деталей. Нижнее окно показывает гистограмму продолжительности состояний, с несколькими настраиваемыми параметрами.

Nupshot - это версия upshot, которая быстрее, но требует устаревшей версии Tcl/Tk. Из-за этих ограничения Nupshot не создается по умолчанию в текущей версии MPE.


Alex Otwagin 2002-12-16

next up previous contents
Next: Автоматическая генерация профилирующих библиотек Up: Просмотрщики log-файлов Previous: Upshot и Nupshot   Contents

Jumpshot-2 и Jumpshot-3

Figure: Снимок экрана upshot
\includegraphics[width=10cm]{usfig3.good.eps}
Существует две версии Jumpshot, поставляемых вместе с MPE. Это Jumpshot-2 и Jumpshot-3, развившиеся из Upshot и Nupshot. Обе написаны на Java и являются графическими средствами визуализации для интерпретации двоичных файлов трасс, которые показывают их на дисплее, так, как показано на рис. 3.

О Jumpshot-2 см. [17] для дополнительной информации. Для Jumpshot-3 см. файл
`mpe/viewers/jumpshot-3/doc/TourStepByStep.pdf' для краткого введения.

По мере увеличения размера log-файла уменьшается производительность Jumpshot-2, что может привести к зависанию Jumpshot-2 во время чтения файла. Трудно определить, в какой момент происходит зависание, но мы наблюдали это при файлах менее 10Mb. Если размер файла CLOG около 4 Mb, производительность Jumpshot-2 начинает заметно снижаться. Это текущие исследовательский результат, который получается из-за попытки сделать программу, основанную на Java, значительно более расширяемой. Результаты первой итерации этих попыток - это SLOG, поддерживающий расширяемую регистрацию данных и Jumpshot-3, который читает SLOG.


Alex Otwagin 2002-12-16

next up previous contents
Next: Инструменты управления профилирующей библиотекой Up: Библиотека полезных расширений MPE Previous: Jumpshot-2 и Jumpshot-3   Contents

Автоматическая генерация профилирующих библиотек

Figure: Дисплей Jumpshot-1
\includegraphics[width=10cm]{usfig4.good.eps}
Для каждой из этих библиотек процессы построения очень подобны. Во-первых, должны быть написаны профилирующие версии MPI_Init и MPI_Finalize. Профилирующие версии других процедур MPI подобны по стилю. Код каждой из них выглядит подобно
int MPI_Xxx (...)
$\lbrace$
сделать что-либо для профилирующей библиотеки
retcode = PMPI_Xxx ( . . . );
сделать что-либо еще для профилирующей библиотеки
return retcode;
$\rbrace$
Мы создаем эти процедуры только написанием частей ``сделать что-либо'', схематически, а затем обрамляем их автоматически вызовами PMPI_. Поэтому генерация профилирующих библиотек очень проста. См. также файл README в каталоге `mpe/profiling/wrappergen' или приложение А.

Примеры написания заготовок обрамления находятся в подкаталоге `mpe/profiling/lib'. Здесь Вы найдете исходные коды (файлы .w) для создания трех профилирующих библиотек, описанных выше. Пример make-файла для их испытания находится в каталоге `mpe/profiling/examples'.


Alex Otwagin 2002-12-16

next up previous contents
Next: Отладка программ MPI встроенными Up: Библиотека полезных расширений MPE Previous: Автоматическая генерация профилирующих библиотек   Contents

Инструменты управления профилирующей библиотекой

Простые профилирующие оболочки для mpich распространяются как код определения оболочки. Этот код пропускается через утилиту wrappergen для генерации кода С (см. разд. 5.7). Любое количество определений оболочки можно использовать совместно, так что возможен любой уровень вложенности профилирующих обрамлений при использовании wrappergen.

Несколько примеров определений обрамления представлены в mpich:

timing
Использует MPI_Wtime () для определения общего количества вызовов каждой функции MPI, и времени, затраченного на эту функцию. Она просто проверяет таймер перед и после вызова функции. Она не отнимает время, потраченное на вызов других функций.
logging
Создает log-файл для всех вызовов функций pt2pt.
vismess
Создает окно X, которое выдает простую визуализацию всех прошедших сообщений.
allprof
Все вышеперечисленное. Этот пример показывает, как можно комбинировать профилирующие библиотеки.
Замечание: Эти обрамления не используют никаких специальных возможностей mpich, кроме графики и регистрации MPE в `vismess' и `logging' соответственно. Они должны работать с любой реализацией MPI.

Вы можете встраивать эти обрамления вручную в Ваше приложение, что потребует трех этапов в построении Вашего приложения:

Чтобы упростить ее, были созданы несколько примеров разделов make-файлов в каталоге
`mpe/profiling/lib':
Makefile.timing - оболочка timing
Makefile.logging - оболочка logging
Makefile.vismess - оболочка animated messages
Makefile.allprof - оболочка timing, logging, and vismess
Для использования этих фрагментов make-файлов:
  1. (Необязательно) Добавьте в список зависимостей Вашего приложения
    $(PROF_OBJ)
    myapp: myapp.o $(PROF_OBJ)
  2. Добавьте $(PROF_FLG) в строку компиляции CFLAGS:
    CFLAGS = -O $(PROF_FLG)
  3. Добавьте $(PROF_LIB) в Ваш путь компоновки, после объектного кода Вашего приложения, но перед главной библиотекой MPI:
    $(CLINKER) myapp.o -L$(MPIR_HOME)/lib $(PROF_LIB) -lmpich
  4. (Необязательно) Добавьте $(PROF_CLN) в Вашу мишень clean:
    rm -f *.o *  myapp $(PROF_CLN)
  5. Включите нужный фрагмент make-файла в Ваш make-файл:
    include $(MPIR_HOME)/mpe/profiling/lib/Makefile.logging


Alex Otwagin 2002-12-16

next up previous contents
Next: Обработчики ошибок Up: Руководство пользователя mpich, переносимой Previous: Инструменты управления профилирующей библиотекой   Contents

Отладка программ MPI встроенными средствами

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

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Аргументы командной строки для Up: Отладка программ MPI встроенными Previous: Отладка программ MPI встроенными   Contents

Обработчики ошибок

Стандарт MPI определяет механизм установки своих собственных обработчиколв ошибок, и определяет поведение двух предопределенных обработчиков MPI_ERRORS_RETURN и MPI_ERRORS_ARE_FATAL. Мы включили как часть библиотеки MPE еще два обработчика ошибок для облегчения использования dbx в отладке программ MPI.
MPE_Errors_call_dbx_in_xterm
MPE_Signals_call_debugger
Эти обработчики ошибок находятся в каталоге MPE. Опция configure ( -mpedbg) включает эти обработчики ошибок в стандартные библиотеки MPI, и разрешает аргумент командной строки -mpedbg, чтобы сделать MPE_Errors_call_dbx_in_xterm обработчиком ошибок по умолчанию (вместо
MPI_ERRORS_ARE_FATAL).

Alex Otwagin 2002-12-16

next up previous contents
Next: Аргументы MPI для приложений Up: Отладка программ MPI встроенными Previous: Обработчики ошибок   Contents

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

mpirun предлагает некоторую помощь в запуске программ с отладчиком.
mpirun -dbg=<name of debugger> -np 2 program
запускает program на двух машинах с запущенным выбранным отладчиком на локальной машине. Существует пять скриптов отладки, вложенных в mpich, которые будут находиться в каталоге `mpich/bin' после выполнения make. Они называются mpirun_dbg.%d, где %d может заменяться на dbx, ddd, gdb, totalview, xxgdb. Соответствующий скрипт вызывается при использовании опции -dbg вместе с mpirun.

Alex Otwagin 2002-12-16

next up previous contents
Next: Аргументы p4 для устройства Up: Отладка программ MPI встроенными Previous: Аргументы командной строки для   Contents

Аргументы MPI для приложений

Они в настоящее время недокументированы и некоторые требуют опций configure для своего определения (как -mpipktsize и -chmemdebug). Опция -mpiversion полезна для определения того, как сконфигурирована Ваша версия mpich и какая это версия.
-mpedbg
Если возникает ошибка, запускается xterm, соединяющийся с процессом, который сгенерировал ошибку. Требует, чтобы mpich конфигурировался с -mpedbg и работает только на некоторых системах рабочих станций.
-mpiversion
Выводит версию и аргументы конфигурирования для используемой реализации mpich.
Эти аргументы предназначены для программы, а не для mpirun. То есть,
mpirun -np 2 a.out -mpiversion


Alex Otwagin 2002-12-16

next up previous contents
Next: Отладка p4 Up: Отладка программ MPI встроенными Previous: Аргументы MPI для приложений   Contents

Аргументы p4 для устройства ch_p4

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

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Установка рабочего каталога для Up: Аргументы p4 для устройства Previous: Аргументы p4 для устройства   Contents

Отладка p4

Если Ваша конфигурация mpich использует -device=ch_p4, то Вам доступны некоторые из возможностей отладки p4. Наиболее полезными из них являются аргументы командной строки для приложения. Таким образом
mpirun -np 10 myprog -p4dbg 20 -p4rdbg 20
приведет к выводу во время выполнения в стандартный вывод информации о трассировке программы на уровне 20. Для получения информации о том, что выводится на конкретном уровне, см. руководство пользователя p4 [2].

Если в командной строке указано -p4norem, mpirun не будет реально запускать процессы. Главный процесс выводит сообщение, подсказывающее пользователю, что он может сделать. Целью этой опции является возможность позволить пользователю, например, запустить удаленные процессы под его любимым отладчиком. Опция имеет смысл лишь тогда, когда процессы запускаются удаленно, например, в сети рабочих станций. Отметьте, что это аргумент программы, а не mpirun. Например, для запуска myprog таким способом, используйте

mpirun -np 4 myprog -p4norem
Для запуска cpi двумя процессами, причем второй процесс выполняется под отладчиком, Вам нужно ввести команду вида
mpirun -np 2 cpi -p4norem
ожидание процесса с машины shakey.mcs.anl.gov:
/home/me/mpich/examples/basic/cpi sys2.foo.edu 38357 $-$p4amslave
на первой машине и
% gdb cpi
GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type ``show copying'' to see the conditions.
There is absolutely no warranty for GDB. Type ``show warranty'' for details.
This GDB was configured as ``i586-mandrake-linux''...
(gdb) run sys2.foo.edu 38357 -p4amslave
Запуск прграммы: /home/me/mpich/examples/basic/cpi sys2.foo.edu 38357 -p4amslave


Alex Otwagin 2002-12-16

next up previous contents
Next: Аргументы командной строки для Up: Аргументы p4 для устройства Previous: Отладка p4   Contents

Установка рабочего каталога для устройства p4

По умолчанию рабочим каталогом для процессов, запущенных удаленно на устройстве сh_p4 будет тот же каталог, что и для двоичных файлов. Для определения рабочего каталога используйте -p4wdir, как указано ниже:
mpirun -np 4 myprog -p4wdir myrundir


Alex Otwagin 2002-12-16

next up previous contents
Next: Запуск задач через отладчик Up: Отладка программ MPI встроенными Previous: Установка рабочего каталога для   Contents

Аргументы командной строки для приложений

Аргументы в командной строке, котрые следуют за именем приложения и не относятся к системе mpich (не начинаются с -mpi или -p4) пропускаются ко всем процессам приложения. Например, если Вы выполните
mpirun -echo -np 4 myprog -mpiversion -p4dbg 10 x y z
то -echo -np 4 интерпретируется mpirun (отображение для mpirun и запуск 4 процессов), -mpiversion интерпретируется mpich (каждый процесс выводит информацию о конфигурации), -p4dbg 10 интерпретируется устройством p4, если Ваша версия сконфигурирована с -device=ch_p4 (устанавливает уровень отладки p4 в 10), а x, y, z пропускаются к приложению. К тому же, MPI_Init обрезает все аргументы, не принадлежащие приложению, так что после вызова MPI_Init в Вашей программе на С вектор аргументов argv содержит лишь
myprog x y z
и Ваша программа может обрабатывать свои собственные аргументы командной строки. Отметьте, что массив аргументов для программ Фортрана и Фортрана 77 будет содержать команды mpich, поскольку в Фортране не определен стандартный механизм для доступа или модификации командной строки. обычным способом.

Не существует возможности предоставить различным процессам различные аргументы командной строки.


Alex Otwagin 2002-12-16

next up previous contents
Next: Запуск отладчика при возникновении Up: Отладка программ MPI встроенными Previous: Аргументы командной строки для   Contents

Запуск задач через отладчик

Опция -dbg=<name of debugger> для mpirun заставляет процессы запускаться под управлением выбранного отладчика. Например, вызов
mpirun -dbg=gdb
или
mpirun -dbg=gdb a.out
вызывает скрипт mpirun_dbg.gdb, находящийся в каталоге `mpich/bin'. Этот скрипт захватывает правильные аргументы, вызывает отладчик gdb, и запускает первый процесс под gdb, если это возможно. Существует четыре скрипта отладчика; gdb, xxgdb, ddd и totalview. Их иногда необходимо исправлять, что зависит от Вашей системы. Существует также скрипт отладчика dbx, который должен быть отредактирован, поскольку команды dbx различаются для версий. Вы можете также использовать эту опцию для вызова другого отладчика; например, -dbg=mydebug. Все, что Вам необходимо, это написать скрипт `mpirun_dbg.mydebug', который совпадает по формату с поставляемыми файлами скриптов, и поместить его в каталог `mpich/bin'. Дополнительная информация по использованию отладчика Totalview с mpich приведена в разделе 7.

Alex Otwagin 2002-12-16

next up previous contents
Next: Присоединение отладчика к запущенной Up: Отладка программ MPI встроенными Previous: Запуск задач через отладчик   Contents

Запуск отладчика при возникновении ошибки

Часто очень удобно запускать отладчик, когда в программе возникает ошибка. Если mpich сконфигурирован с опцией $-$$-$enable-mpedbg, то добавление опции командной строки mpedbg к программе вызовет попытку mpich запустить отладчик (обычно dbx или gdb), когда возникает ошибка, которая генерирует сигнал (такой как SIGSEGV). Например
mpirun -np 4 a.out -mpedbg
Если Вы не уверены, что Ваш mpich поддерживает эту возможность, Вы можете использовать
-mpiversion и убедится, что mpich создан с опцией $-$$-$enable-mpedbg.

Alex Otwagin 2002-12-16

next up previous contents
Next: Сигналы Up: Отладка программ MPI встроенными Previous: Запуск отладчика при возникновении   Contents

Присоединение отладчика к запущенной программе

На кластере рабочих станций Вы часто можете присоединить отладчик к запущенному процессу. Например, отладчик dbx может принять идентификатор процесса (pid), который Вы можете получить с помощью команды ps. Форма вызова
dbx a.out 1234
или
dbx $-$pid 1234 a.out
где 1234 - идентификатор процесса. Можно также присоединить к работающей программе отладчик TotalView (см. разд. 7.3 ниже).

Alex Otwagin 2002-12-16

next up previous contents
Next: Инструменты отладки Up: Отладка программ MPI встроенными Previous: Присоединение отладчика к запущенной   Contents

Сигналы

Вообще, пользователю рекомендуется избегать использования сигналов в программах MPI. Страница man для MPI_Init описывает сигналы, котрые испоьзуются реализацией MPI; они не должны изменяться пользователем.

Поскольку Unix не связывает сигналы в цепь, существует возможность, что различные пакеты могут использовать те же самые сигналы, вызывая ошибки в программе. Например, по умолчанию, устройство ch_p4 использует SIGUSR1; некоторые пакеты потоков также используют SIGUSR1. Если у Вас возникла такая ситуация, см. руководство по инсталляции mpich об информации, как выбрать другие сигналы для использования в mpich.

В некоторых случаях, Вы можете изменить сигнал перед вызовом MPI_Init. В этих случаях Ваш обработчик сигналов будет вызван после того, как реализация mpich отреагирует на сигнал. Например, если Вы хотите изменить поведение SIGSEGV для вывода сообщения, Вы можете установить этот обработчик сообщения перед вызовом MPI_Init. Для устройств типа ch_p4, которые обрабатывают SIGSEGV, это вызовет реакцию на Ваш сигнал после того, как его обработает mpich.


Alex Otwagin 2002-12-16

next up previous contents
Next: Отладка программ MPI с Up: Отладка программ MPI встроенными Previous: Сигналы   Contents

Инструменты отладки

Расширяемые инструменты Unix - это набор для управления сетью рабочих станций, такой, как мультипроцессорная система. Они включают в себя программы для поиска процессов в кластере и выполнения над ними операций (таких, как присоединение отладчика к каждому процессу, которым Вы управляете, и который запускает отдельную программу). Они не являются частью MPI, но могут быть полезны при работе с кластерами рабочих станций. Версия MPI для этих инструментов находится на www.mcs.anl.gov/sut; эта реализация хорошо работает с устройством ch_p4mpd для mpich.

Alex Otwagin 2002-12-16

next up previous contents
Next: Подготовка mpich для отладки Up: Руководство пользователя mpich, переносимой Previous: Инструменты отладки   Contents

Отладка программ MPI с помощью TotalView

TotalView©    является мощным коммерческим переносимым отладчиком для параллельных и многопоточных программ, доступным с http://www.etnus.com. TotalView воспринимает множество реализаций MPI, включая mpich. Это означает, что при наличии установленного в Вашей системе TotalView очень легко запустить Вашу программу для mpich под управлением TotalView, даже если Вы работаете на нескольких машинах, легко управлять Вашими процессами вместе или по отдельности через удобный графический интерфейс TotalView, и даже контролировать внутренние структуры данных mpich в очередях сообщений [3]. Общая модель работы TotalView будет знакома пользователям отладчиков, базирующихся на командной строке, таких, как gdb или dbx.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Запуск программы mpich под Up: Отладка программ MPI с Previous: Отладка программ MPI с   Contents

Подготовка mpich для отладки в TotalView

См. руководство по инсталляции об инструкциях по конфигурированию mpich, чтобы TotalView мог показать очереди сообщений.

Alex Otwagin 2002-12-16

next up previous contents
Next: Присоединение к работающей программе Up: Отладка программ MPI с Previous: Подготовка mpich для отладки   Contents

Запуск программы mpich под управлением TotalView

Для запуска параллельной программы под управлением TotalView, просто добавьте `-dbg=totalview' к Вашим аргументам для mpirun:
mpirun -dbg=totalview -np 4 cpi
TotalView запустится и Вы можете начать выполнение программы, нажав `G'. Появится окно с вопросом, хотите ли Вы остановить процессы после выполнения MPI_Init. Вы можете посчитать более удобным ответить ``нет'' и установить свою собственную точку останова после MPI_Init (см. разд. 7.4). Таким образом, после остановки процесс будет находиться в некоторой строке программы вместо неопределенного места внутри MPI_Init.

Alex Otwagin 2002-12-16

next up previous contents
Next: Отладка с помощью TotalView Up: Отладка программ MPI с Previous: Запуск программы mpich под   Contents

Присоединение к работающей программе

TotalView можно присоединить к работающей программе, что особенно полезно, если Вы подозреваете, что Ваш код имеет блокировки. Чтобы сделать это, запустите TotalView без аргументов, а затем нажмите `N' в главном окне. Это приведет к появлению списка процессов, к которым Вы можете присоединиться. Если Вы углубляетесь в начальный процесс mpich в этом окне, TotalView также собирает все другие процессы mpich (даже не являющиеся локальными). (См. руководство по TotalView о деталях этого процесса).

Alex Otwagin 2002-12-16

next up previous contents
Next: Другая документация MPI Up: Отладка программ MPI с Previous: Присоединение к работающей программе   Contents

Отладка с помощью TotalView

Вы можете установить точки останова, отметив мышью поле слева от номера строки. Большая часть графического интерфейса TotalView интуитивно понятна. Вы выбираете элементы левой кнопкой мыши, вызываете меню действий средней кнопкой и ``углубляетесь'' в функции, переменные, структуры, процессы и т.д. правой кнопкой. Нажатие cntl-? в любом окне TotalView вызывает справочную информацию по этому окну. В исходном окне TotalView это приводит к появлению общей справки. Полная документация (Руководство пользователя TotalView) доступно на веб-сайте Etnus.

Вы переключаетесь от просмотра одного процесса к другому с помощью стрелок в верхнем правом углу главного окна, или непосредственным выбором (левой кнопкой) процесса в корневом окне для фокусировки существующего окна на этом процессе, или углублением (правой кнопкой) через процесс в корневом окне, чтобы открыть новое окно для выбранного процесса. Все ``быстрые клавиши'' указаны в меню, вызываемом средней кнопкой. Команды в основном знакомые. Специфической для MPI является команда `m', которая показывает очереди сообщений, ассоциированые с процессом.

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


Alex Otwagin 2002-12-16

next up previous contents
Next: В случае неудачи Up: Руководство пользователя mpich, переносимой Previous: Отладка с помощью TotalView   Contents

Другая документация MPI

Информация о MPI доступна из множества источников. Некоторые из них, особенно Web-страницы имеют указатели на другие ресурсы.



Alex Otwagin 2002-12-16

next up previous contents
Next: Проблемы компиляции или компоновки Up: Руководство пользователя mpich, переносимой Previous: Другая документация MPI   Contents

В случае неудачи

Этот раздел описывает некоторые общие возникающие проблемы и их решения. Он также описывает машинно-зависимые случаи. Присылайте любые проблемы, с которыми Вы не можете справиться после чтения этого раздела на mpi-bugs@mcs.anl.gov.

Пожалуйста, укажите:

Каждый раздел организован в формате вопрос-ответ, вначале с вопросами, относящимися к нескольким средам (рабочая станция, операционная система и т.д.), а затем с вопросами, относящимися к отдельным средам. Проблемы с кластерами рабочих станций собраны вместе.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Общие Up: В случае неудачи Previous: В случае неудачи   Contents

Проблемы компиляции или компоновки программ на Фортране



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Проблемы компоновки программ на Up: Проблемы компиляции или компоновки Previous: Проблемы компиляции или компоновки   Contents

Общие

  1. В: При компоновке тестовой программы генерируется следующее сообщение:
    f77 -g -o secondf secondf.o -L/usr/local/mpich/lib/sun4/ch_p4 -lmpich
    invalid option -L/usr/local/mpich/lib/sun4/ch_p4
    ld: -lmpich: No such file or directory
    О: Эта программа f77 не принимает команду -L для установки пути поиска библиотек. Некоторые системы предлагают скрипт shell для f77, очень ограниченный по своим возможностям. Чтобы обойти это, используйте полный путь к библиотекам вместо опции -L:
    f77 -g -o secondf secondf.o /usr/local/mpich/lib/sun4/ch_p4/libmpich.a
    Начиная с версии mpich 1.2.0, configure для mpich пытается определить корректную опцию для определения путей библиотек для компилятора Фортрана. Если Вы обнаружили, что configure для mpich делает ошибки, пожалуйста сообщите о них по адресу mpi-bugs@mcs.anl.gov.
  2. В: При компоновке программ на Фортране выводятся непонятные обозначения вида:
    f77 -c secondf.f
    secondf.f:
    MAIN main:
    f77 -o secondf secondf.o -L/home/mpich/lib/solaris/ch_shmem -lmpich
    Undefined first referenced
    symbol in file
    getdomainname /home/mpich/lib/solaris/ch_shmem/libmpi.a (shmempriv.o)
    ld: fatal: Symbol referencing errors. No output written to secondf
    С программами на С этого не происходит.

    О: Это означает, что Ваш компилятор С предоставляет Вам библиотеки, которые не может предоставить компилятор Фортрана. Найдите опции для компиляторов С и Фортрана, указывающие, какие из бибилотек используются (или же Вы можете обнаружить такие опции, как -dryrun, которая покажет команды, используемые компилятором). Создайте простую программу на С или Фортране и сравните использованные библиотеки (обычно в командной строке ld). Попробуйте те, которые представлены для компилятора С, но отсутствуют для компилятора Фортран.

  3. В: При попытке компиляции кода Фортрана компилятором Фортран 90 или Фортран 95 получены сообщения об ошибке
    Error: foo.f, line 30: Inconsistent datatype for argument 1 in MPI_SEND
    О: Фортран требует, чтобы в двух вызовах одной и той же процедуры типы аргументов совпадали. Т.е., если Вы вызываете MPI_SEND с буфером REAL в качестве первого аргумента, то вызов его с буфером INTEGER в качестве первого аргумента компилятор Фортрана воспринимает как ошибку. Некоторые компиляторы Фортрана 77 могут пропустить это; большинство компиляторов Фортран 90 или Фортран 95 проверяют это. Существует два решения. Одно из них - использование модуля MPI (в версии с ``аргументами по выбору'': используйте опцию -choicemod для mpif90); другим является указание опции компилятору Фортрана 90, допускающей несовпадение аргументов. Использование модуля MPI более предпочтительно. Пользователи Фортрана 77 могут иногда увидеть подобные сообщения, особенно в последних версиях g77. Опция -Wno-globals запрещает появление этих предупреждений.


Alex Otwagin 2002-12-16

next up previous contents
Next: Общие Up: В случае неудачи Previous: Общие   Contents

Проблемы компоновки программ на С



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Sun Solaris Up: Проблемы компоновки программ на Previous: Проблемы компоновки программ на   Contents

Общие

  1. В: При компоновке программ выводятся сообщения о неопределенных __builtin_saveregs.

    О: Возможно в Вашей системе процедуры С и Фортрана несовместимы (например, при использовании gcc и фирменного компилятора Фортрана). Если Вы не планируете использование Фортрана, простейший способ исправить это - перестроить все с опцией -nof77 для configure.

    Вы также должны попытаться сделать Ваш компилятор на С совместимым с компилятором Фортрана.

    Одной из простых, но неэлегантных возможностей является использование f2c для преобразования Фортрана в С с последующей компиляцией компилятором С. Если Вы выбрали этот способ, помните, что каждая процедура Фортрана должна компилироваться с помощью f2c и компилятора С.

    С другой стороны, Вы можете использовать различные опции (см. страницы man для Ваших компиляторов), чтобы увидеть, какие библиотеки они добавляют при компоновке. Добавьте эти библиотеки в строку компоновки другого компилятора. Если Вы обнаружили работающий набор библиотек, отредактируйте соответствующие скрипты (например, mpicc). mpich пытается найти все необходимые библиотеки, но это не всегда получается.



Alex Otwagin 2002-12-16

next up previous contents
Next: HPUX Up: Проблемы компоновки программ на Previous: Общие   Contents

Sun Solaris

  1. В: При компоновке на Solaris выводятся сообщения об ошибке:
    cc -g -o testtypes testtypes.o -L/usr/local/mpich/lib/solaris/ch_p4 -lmpich
    -lsocket -lnsl -lthread
    ld: warning: symbol `_defaultstkcache' has differing sizes:
    (file /usr/lib/libthread.so value=0x20; file /usr/lib/libaio.so
    value=0x8);
    /usr/lib/libthread.so definition taken
    О: Это ошибка в Solaris 2.3, исправленная в Solaris 2.4. Должна существовать заплатка для Solaris 2.3; свяжитесь с Sun для более полной информации.


Alex Otwagin 2002-12-16

next up previous contents
Next: LINUX Up: Проблемы компоновки программ на Previous: Sun Solaris   Contents

HPUX

  1. В: При компоновке на HPUX выводятся сообщения об ошибке:
    cc -o pgm pgm.o -L/usr/local/mpich/lib/hpux/ch_p4 -lmpich -lm
    /bin/ld: Unsatisfied symbols:
    sigrelse     (code)
    sigset     (code)
    sighold     (code)
    *** Error code 1
    О: Вам нужна опция компоновки -lV3. Устройство p4 на HP использует сигналы System V; они реализуются библиотекой `V3'.


Alex Otwagin 2002-12-16

next up previous contents
Next: Проблемы при запуске программ Up: Проблемы компоновки программ на Previous: HPUX   Contents

LINUX

  1. В: При компоновке программы на Фортране получается
    Linking:
    foo.o (.data+0x0): undefined reference to `pmpi_wtime_'
    О: Это ошибка в компиляторе pgf77 (вызванная ошибкой в команде ld для Linux). Вы можете исправить это либо добавлением -lpmpich к строке компоновки, либо изменением `mpif.h', чтобы удалить выражения external pmpi_wtime, pmpi_wtick.

configure для mpich пытается определить, могут ли pmpi_wtime и pmpi_wtick быть определены в `mpif.h' и удалает их, если возникает проблема. Если это произошло и Вы используете pmpi_wtime или pmpi_wtick в Вашей программе, Вы должны определить их как функции, возвращающие значения двойной точности.


Alex Otwagin 2002-12-16

next up previous contents
Next: Общие Up: В случае неудачи Previous: LINUX   Contents

Проблемы при запуске программ



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Сети рабочих станций Up: Проблемы при запуске программ Previous: Проблемы при запуске программ   Contents

Общие

  1. В: При попытке запуска программы с помощью
    mpirun -np 2 cpi
    появляется сообщение об ошибке или программа зависает.

    О: В некоторых системах, таких, как IBM SP, существует много взаимно исключающих способов запуска параллельных программ; каждая система выбирает способ, подходящий для нее. Скрипт mpirun пробует наиболее общие методы, но может сделать неправильный выбор. Используйте опции -v или -t для mpirun, чтобы увидеть, как он пытается запустить программу, а затем сравните это со специфическими инструкциями для Вашей системы. Вам может понадобиться адаптировать код mpirun для собственных нужд. См. также следующий вопрос.

  2. В: При попытке запуска программы с помощью, например, mpirun -np 4 cpi, появляется
    Используйте : mpirun опции<программа> <узлы выполнения>$-$$-$ <аргументы>
    или
    mpirun опции<схема>
    О: В Вашем пути поиска присутствует команда mpirun, не принадлежащая mpich. Выполните команду
    which mpirun
    чтобы увидеть, какая команда mpirun была действительно найдена. Решением будет либо смена порядка каталогов в пути поиска, чтобы поместить версию mpirun для mpich первой, лиоб определить псевдоним mpirun, использующий абсолютный путь. Например, в csh shell, Вы можете выполнить
    alias mpirun /usr/local/mpich/bin/mpirun
    чтобы установить mpirun на версию для mpich.
  3. В: При попытке запуска большого количества процессов в сети рабочих станций выводится сообщение
    p4_error: latest msg from perror: Слишком много открытых файлов
    О: Существует ограничение на количество открытых дескрипторов файла. На некоторых системах Вы можете увеличить это ограничение самостоятельно; на других Вам может помочь системный администратор. Вы можете экспериментировать с безопасным сервером, но это не полное решение. Сейчас мы работаем над более расширяемым механизмом запуска для новой реализации.
  4. В: При попытке запуска программы на более чем одном процессоре выводится сообщение об ошибке
    mpirun $-$np 2 cpi
    /home/me/cpi: ошибка загрузки разделяемых библиотек: libcxa.so.1: невозможно
    открыть разделяемый объектный файл : Файл или каталог не существует
    Проблем при запуске одного процесса нет.

    О: Это означает, что некоторые разделяемые библиотеки, используемые системой, не обнаруживаются удаленными процессорами. Существует две возможности:

    1. Разделяемые библиотеки не установлены на удаленном процессоре. Чтобы исправить это, попросите Вашего системного администратора установить библиотеки.
    2. Разделяемые библиотеки не упомянуты в пути поиска по умолчанию. Это может случиться, если путь содержится в переменной окружения, установленной в Вашем текущей shell, но который не входит в путь на удаленной системе. Исправления в этом случае тяжелее, поскольку Вы должны связать размещение разделяемых библиотек и исполняемых файлов (главным недостатком в большинстве разделяемых библиотек Unix является то, что исполняемые файлы по умолчанию не запоминают, где были найдены разделяемые библиотеки при компоновке). Простейшей поправкой будет попросить Вашего системного администратора поместить необходимые разделяемые библиотеки в один из каталогов, который просматривается по умолчанию. Если это невозможно, то Вы должны сами помочь компилятору и компоновщику.

      Многие компоновщики предоставляют способ определения пути поиска для разделяемых библиотек. Трудность состоит в (а) передаче этой команды программе-компоновщику и (b) определении всех необходимых библиотек.

      Например, в системах на Linux, команда компоновщика для определения пути поиска разделяемых библиотек - это -rpath path, т.е. -rpath /usr/lib:/usr/local/lib. Чтобы передать эту команду компоновщику посредством компилятора Intel С icc, используется команда -Qoption,link,-rpath,path. По умолчанию, компоновщик Linux проверяет каталог `/usr/lib' и каталоги, определенные в переменной окружения LD_LIBRARY_PATH. Поэтому, чтобы заставить компоновщик включить путь для разделяемых библиотек, Вы можете использовать

      mpicc -o cpi cpi -Qoption,link,-rpath,$LD_LIBRARY_PATH:/usr/lib
      Если это сработает, то попробуйте изменить значение LDFLAGS в скрипте mpicc, чтобы включить эту опцию.

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

  5. В: При попытке запуска cpilog получено следующее сообщение:
    ld.so.1: cpilog: fatal: libX11.so.4: невозможно открыть файл: errno 2
    О: Версия X11, обнаруженная configure, не установлена корректно. Это обычная проблема для систем Sun/Solaris. Возможно, что Ваши машины на Solaris выполняют слегка различающиеся версии. Вы можете попробовать статическую компоновку (-Bstatic на Solaris).

    С другой стороны, можно попробовать добавить следующие строки в Ваш `.login' (предполагая C shell):

    setenv OPENWINHOME /usr/openwin
    setenv LD_LIBRARY_PATH /opt/SUNWspro/lib:/usr/openwin/lib
    (Вы можете прежде проконсультироваться с Вашим системным администратором, чтобы убедиться, что пути в Вашей системе правильны). Убедитесь, что Вы добавили их перед строками вида
    if ($?USER == 0 || $?prompt == 0) exit
  6. В: Программа завершается с ошибкой при попытке записи в файл.

    О: Если Вы открыли файл перед вызовом MPI_INIT, поведение MPI (не только mpich-реализации MPI) неизвестно. На устройстве ch_p4 только нулевой процесс (в MPI_COMM_WORLD) может иметь открытые файлы; другие процессы не могут открывать файлы. Переместите операции, которые открывают файлы и взаимодействуют с внешним миром после MPI_INIT (и перед MPI_FINALIZE).

  7. В: Программа пытается стартовать бесконечно долго.

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

    В сетях рабочих станций долгие времена запуска могут быть из-за времени, используемого для запуска удаленных процессов; см. обсуждение безопасного сервера в разд. 3.2.3 для устройства ch_p4 или рассмотрите использование устройства ch_p4mpd.


next up previous contents
Next: Сети рабочих станций Up: Проблемы при запуске программ Previous: Проблемы при запуске программ   Contents
Alex Otwagin 2002-12-16

next up previous contents
Next: IBM RS6000 Up: Проблемы при запуске программ Previous: Общие   Contents

Сети рабочих станций

  1. В: При использовании mpirun выводится сообщение Permission denied.

    О: Если Вы видите что-нибудь подобное

    % mpirun -np 2 cpi
    Нет прав доступа.
    или
    % mpirun -np 2 cpi
    сокет: ошибка протокола при настройке линии
    при использовании устройства ch_p4, это возможно означает, что у Вас нет прав на использование rsh для запуска процессов. Для проверки можно использовать скрипт tstmachines. Попробуйте выполнить
    tstmachines
    Если это окончилось неудачей, Вам могут понадобиться либо файлы `.rhosts' или
    `/etc/hosts.equiv' (Вам нужно поговорить с системным администратором), либо использование сервера p4 (см. разд. 3.2.3). Другой возможной проблемой является выбор программы удаленной shell; в некоторых системах их несколько. Обсудите с Вашим системным администратором, какую версию rsh или remsh Вам нужно использовать. Если Вы должны использовать ssh, см. разд. об этом в руководстве по инсталляции.

    Если Ваши системные правила позволяют использовать файл `.rhosts', выполните следующее:

    1. Создайте файл `.rhosts' в Вашем домашнем каталоге
    2. Смените защиту в нем на права чтения/записи только для пользователя:
      chmod og-rwx .rhosts.
    3. Добавьте строки в файл `.rhosts' для каждого процессора, который Вы желаете использовать. Формат
      host username
      Например, если Ваше имя пользователя doe и Вы хотите использовать машины a.our.org и b.our.org, то Ваш файл `.rhosts' будет содержать
      a.our.org doe
      b.our.org doe
      Помните об использовании полных имен машин (некоторые системы этого требуют).

      В сетях, где использование файлов `.rhosts' не допускается, Вам нужно использовать безопасный сервер для запуска задачи на машинах, которые не являются доверенными к машине, с которой Вы инициируете задачу.

      Наконец, Вам может понадобиться использовать нестандартную команду rsh внутри mpich. mpich должен быть переконфигурирован с опцией -rsh=command_name, а также, возможно, с -rshnol, если команда удаленной shell не поддерживает аргумент -l. В системах, использующих Kerberos и/или AFS это может понадобиться. См. разд. в руководстве по инсталляции об использовании безопасной shell ssh.

      Другим источником сообщения ``Permission denied.'' является то, что Вы использовали команду su для смены Вашего идентификатора пользователя. На некоторых системах устройство ch_p4 не будет работать в такой ситуации. Зарегистрируйтесь обычным способом и попробуйте еще раз.

  2. В: При использовании mpirun выводится сообщение Try again.

    О: Если Вы видите что-либо подобное

    % mpirun -np 2 cpi
    Попробуйте еще раз.
    это означает, что Вы не можете запустить удаленную задачу командой удаленной shell на определенной машине, даже если Вы можете сделать это обычным способом. Это может означать, что назначенная машина занята, не имеет свободной памяти или не может создать новый процесс. Страница man для rshd даст Вам подробную информацию. Единственным способом исправить это является просьба к Вашему системному администратору проверить состояние машины, которая выдает это сообщение.
  3. В: При запуске устройства ch_p4 выводятся сообщения об ошибке вида
    stty: TCGETS: Операция не поддерживается сокетом
    или
    stty: tcgetattr: Нет прав доступа
    или
    stty: Невозможно присвоить требуемый адрес
    О: Это означает, что один из Ваших скриптов загрузки (т.е. `.login' или `.cshrc' или `.profile') имеет незащищенное использование программ stty или tset. Для пользователей C shell типичным исправлением является проверка инициализации переменных TERM или PROMPT. Например,
    if ($?TERM) then
            eval `tset -s -e^\? -k^U -Q -I $TERM`
    endif
    Другим решением будет добавление
    if ($?USER == 0 || $?prompt == 0) exit
    в начало Вашего файла `.cshrc' (но после любого кода, который настраивает среду выполнения, такую, как пути к библиотекам (т.е., LD_LIBRARY_PATH)).
  4. В: При запуске устройства ch_p4 и запуске либо скрипта tstmachines для проверки файла машин, либо тестов mpich, появляются сообщения о неожиданном выводе или различиях с ожидаемым выводом. Также появляется дополнительный вывод при запуске программ. Однако, программы MPI выглядят работающими.

    О: Это означает, что один из Ваших скриптов загрузки (т.е. `.login', или `.cshrc', или `.profile', или `.bashrc') имеет незащищенное использование некоторых программ, которые генерируют вывод, таких, как fortune или даже echo. Для пользователей C shell типичным исправлением является проверка инициализации переменных TERM или PROMPT. Например,

    if ($?TERM) then
            fortune
    endif
    Другим решением будет добавление
    if ($?USER == 0 || $?prompt == 0) exit
    в начало Вашего файла `.cshrc' (но после любого кода, который настраивает среду выполнения, такую, как пути к библиотекам (т.е., LD_LIBRARY_PATH)).
  5. В: Иногда программы завершаются с сообщением
    poll: ошибка протокола во время создания связи
    О: Вы можете увидеть это сообщение, если Вы пытаетесь запустить слишком много программ MPI за короткий период времени. Например, в Linux при использовании устройства ch_p4 (без безопасного сервера или ssh), mpich может использовать для запуска процессов MPI rsh. В зависимости от определенного дистрибутива Linux и его версии, может быть установлен лимит на минимум 40 процессов в минуту. При запуске набора тестов mpich или запуске коротких параллельных задач через скрипт возможно превышение этого лимита. Чтобы исправить это, Вы можете сделать следующее:
    1. Обождать несколько секунд между запусками параллельных задач. Вам может понадобиться ждать до минуты.
    2. Изменить `/etc/inetd.conf', чтобы разрешить большее количество процессов в минуту для rsh. Например, измените
      shell stream tcp nowait root /etc/tcpd2 in.rshd
      на
      shell stream tcp nowait.200 root /etc/tcpd2 in.rshd
    3. Использовать устройство ch_p4mpd или опцию безопасного сервера для устройства ch_p4. Ни одно из них не зависит от inetd.
  6. В: При использовании mpirun появляется странный вывод вида
    arch: Файл или каталог не существует
    О: Обычно это проблема в Вашем файле `.cshrc'. Попробуйте команду shell
    which hostname
    Если Вы видите тот же самый странный вывод, то Ваша проблема в Вашем файле `.cshrc'. У Вас имеется некоторый код в Вашем файле `.cshrc', который предполагает, что Ваша shell присоединена к терминалу.
  7. В: При попытке запуска программы выводится
    p0_4652: p4_error: ошибка открытия в файле procgroup (procgroup): 0
    О: Это указывает, что программа mpirun не может создать требуемый входной файл, необходимый для запуска. Наиболее возможной причиной является то, что команда mpirun пытается запустить программу, построенную на устройстве ch_p4 для устройства с разделяемой памятью (ch_shmem) или другого.

    Попробуйте следующее:

    Запустите программу с использованием mpirun и аргумента -t:

    mpirun -t -np 1 foo
    Это покажет, что mpirun должен сделать (-t - это тестирование). Вы также можете использовать аргумент -echo, чтобы точно знать, что выполняет mpirun:
    mpirun -echo -np 1 foo
    В зависимости от выбора, сделанного при инсталляции mpich, Вы должны выбрать версию mpirun для определенного устройства вместо ``общей'' версии. Мы рекомендуем, чтобы префикс инсталляции включал имя устройства, например, `/usr/local/mpich/solaris/ch_p4'.
  8. В: При попытке запуска программы выводится сообщение:
    icy% mpirun -np 2 cpi -mpiversion
    icy: icy: Файл или каталог не существует
    О: Ваша проблема в том, что программа удаленной shell - это не `/usr/lib/rsh'. Попробуйте следующее:
    which rsh
    ls /usr/*/rsh
    Возможно, в Вашем пути `/usr/lib' указан раньше `/usr/ucb' или `/usr/bin'. Это указывает на ``ограниченную'' shell вместо ``удаленной'' shell. Простейшим исправлением является удаление `/usr/lib' из Вашего пути (некоторым людям это нужно); иначе, Вы можете переместить его на место после каталога, содержащего ``удаленную'' shell rsh.

    Другим способом будет добавление ссылки на удаленную shell в каталог, более ранний в пути поиска. Например, у меня `/home/gropp/bin/solaris' стоит раньше в пути поиска, тогда я могу использовать здесь

    cd /home/gropp/bin/solaris
    ln -s /usr/bin/rsh rsh
    (предполагая, что удаленная shell - это `/usr/bin/rsh').
  9. В: При попытке запуска программы выводится сообщение:
    пробуем обычную rsh
    О: Вы используете версию удаленной shell, которая не поддерживает аргумент -l. Переконфигурируйте mpich с -rshnol и пересоберите. Вы можете почувствовать некоторые неудобства при попытке запуска на системах, где у Вас другое имя пользователя. Вы можете также попробовать использовать ssh.
  10. В: При запуске программы выводятся сообщения
    ld.so: warning: /usr/lib/libc.so.1.8 имеет более раннюю версию,
    хотя ожидалось 9
    О: Вы пытаетесь работать на машине с устаревшей версией базовой библиотеки С. К сожалению, некоторые производители не выпускают совместимых разделяемых библиотек между мелкими (или исправленными) версиями их программного обеспечения. Вы должны попросить системного администратора привести все машины к одному и тому же уровню установленного программного обеспечения.

    Временным исправлением, которое Вы можете использовать, является добавление опции времени компоновки, заменяющей динамическую компоновку системных библиотек статической. На некоторых рабочих станциях Sun это опция -Bstatic.

  11. В: Программа вообще не запускается. Зависает даже tstmachines.

    О: Вначале проверьте, работает ли rsh вообще. Например, если у Вас есть рабочие станции w1 и w2, и Вы работаете на w1, попробуйте

    rsh w2 true
    Это должно завершиться очень быстро. Если этого не происходит, попробуйте
    rsh w1 true
    (т.е. используйте rsh для запуска на той же системе, где Вы работаете). Если Вы получили
    Permission denied, см. соответствующую справку. Если Вы получили
    krcmd: No ticket file (tf_util)
    rsh: внимание, используется стандартная rsh: невозможно получить данные
    аутентификации Kerberos.
    то в Вашей системе неправильно установлена rsh. Эта проблема наблюдается в некоторых системах FreeBSD. Попросите системного администратора исправить проблему (часто неправильный набор программ rsh/rshd).
  12. В: При запуске устройства ch_p4 выводятся сообщения об ошибке
    больше пользователей, чем очередей сообщений
    О: Это означает, что Вы пробуете запустить mpich в одном режиме, а он сконфигурирован в для работы в другом. В частности, Вы определяете в Вашем файле p4 procgroup, что некоторые процессы будут находиться в разделяемой памяти на определенной машине, помещая либо число, большее 0, в первую строку (где оно означает число локальных процессов вместе с оригинальным), либо число, большее 1, в любую ииз следующих строк (где оно указывает общее число процессов, разделяющих память на этой машине). Вы должны либо изменить Ваш файл procgroup, чтобы указать только один процесс в строке, или переконфигурировать mpich с помощью
    configure $-$$-$with-device=ch_p4 -comm=shared
    что перенастроит устройство p4 так, чтобы несколько процессов могли разделять память на каждой машине. Причина здесь не только подразумевает то, что в такой конфигурации Вы увидите ожидание занятости на каждой станции, но и что устройство будет переключаться между выбором сокета и проверкой внутренних очередей разделяемой памяти.
  13. В: Программы зависают при выполнении MPI_Init. О: Существует ряд причин, вызывающих это:
    1. Одна из рабочих станций, выбранных Вами для запуска не работает (попробуйте
      `tstmachines', если Вы используете устройство ch_p4).
    2. Вы компонуете программу с использованием пакета потоков FSU; известно, что это вызывает проблемы, особенно в системных вызовах select, который является частью Unix и используется mpich.

      Другая причина может состоять в том, что Вы используете библиотеку `-ldxml' (расширенная математическая библиотека) в системе Compaq Alpha. Известно, что она вызывает зависание MPI_Init. На данный момент неизвестен способ обхода этой проблемы; свяжитесь с Compaq для получения исправлений, если Вам необходимо использовать совместно MPI and `-ldxml'.

      Причины этой проблемы в том, что устройство ch_p4 использует SIG_USR1, и любая библиотека, которая также использует этот сигнал может перекрываться с дейтсвиями mpich, когда используется устройство ch_p4. Вы можете перестроить mpich, чтобы использовать другой сигнал, с помощью аргумента $-$$-$with-device=ch_p4:-listener_sig=SIGNAL_NAME для configure и пересобрать mpich.

  14. В: Программа (использующая устройство ch_p4) завершается с ошибкой
    p0_2005: p4_error: fork_p4: fork failed: -1
            устройство ch_p4 p4_error: latest msg from perror: Error 0
    О: Размер исполняемого файла Вашей программы может быть слишком велик. Когда запускается программа для устройства ch_p4 или ch_tcp, она может создавать свою копию для обработки некоторых коммуникационных задач. Из-за способа организации кода, это (хотя и временно) полная копия Вашей оригинальной программы, занимающая то же место. Поэтому, если Ваша программа больше, чем половина всего доступного пространства, Вы получите эту ошибку. В системах SGI Вы можете использовать команду size, чтобы определить размер исполняемого файла и swap -l, чтобы узнать размер доступного пространства. Заметьте, что size возвращает размер в байтах, а swap -l возвращает размер в 512-байтовых блоках. Другие системы могут предложить подобные команды. Такая же проблема может возникнуть в IBM SP при использовании устройства ch_mpl; причина та же, но происходит из библиотеки IBM MPL.
  15. В: Иногда возникает ошибка
    Неверный формат exec. Неверная архитектура.
    О: Возможно, Вы используете NFS (Network File System). NFS может не поддерживать файлы, обновляемые временным способом; эта проблема может вызываться созданием исполняемого файла на одной машине и попыткой использования его с другой. Обычно NFS определяет существование нового файла в течение нескольких минут. Вы можете попробовать использовать команду sync. mpirun, как правило, пытается выполнить команду sync, но во многих системах sync лишь информативна и не гарантирует, что файловая система стала непротиворечивой.
  16. В: Похоже, что существует две копии моей программы, запущенные на каждом узле. Это удваивает потребность в памяти моего приложения. Нормально ли это?

    О: Да, это нормально. В реализации ch_p4 второй процесс используется для динамической установки связей с другими процессами. Начиная с mpich версии 1.1.1, эта возможность может помещаться в отдельный поток на многих архитектурах, и этот второй процесс будет невидимым. Чтобы разрешить это, используйте опцию -p4_opts=-threaded_listener в командной строке configure для mpich.

  17. В: MPI_Abort иногда не работает в устройстве ch_p4. Почему?

    О: Сейчас (в версии 1.2.2) процесс определяет, что другой процесс прерван, толко когда он пытается принимать или посылать сообщение, а прерванный процесс является тем, с которым он соединялся в прошлом. Поэтому, процесс, занятый вычислениями, может не заметить, что один из его коллег выполнил MPI_Abort, несмотря на то, что для многих общих примеров коммуникации это не представляет проблемы. Это будет исправлено в дальнейшей реализации.


next up previous contents
Next: IBM RS6000 Up: Проблемы при запуске программ Previous: Общие   Contents
Alex Otwagin 2002-12-16

next up previous contents
Next: IBM SP Up: Проблемы при запуске программ Previous: Сети рабочих станций   Contents

IBM RS6000

  1. В: При попытке запуска на IBM RS6000 с устройством ch_p4 получается
    % mpirun -np 2 cpi
    Невозможно загрузить программу /home/me/mpich/examples/basic/cpi
    Невозможно загрузить библиотеку libC.ashr.o
    Ошибка: Файл или каталог не найден
    О: Это означает, что mpich был создан компилятором xlC, но некоторые машины в Вашем файле `util/machines/machines.rs6000' не имеют установленного xlC. Либо инсталлируйте xlC, либо пересоберите mpich с использованием другого компилятора (xlc или gcc; преимущество gcc в отсутствии лицензионных ограничений).


Alex Otwagin 2002-12-16

next up previous contents
Next: Программы завершаются с ошибкой Up: Проблемы при запуске программ Previous: IBM RS6000   Contents

IBM SP

  1. В: При запуске программы на IBM SP выводится:
    $ mpirun -np 2 hello
    ERROR: 0031-124 Невозможно распределить узлы для параллельного исполнения.
    Выход ...
    ERROR: 0031-603 Распределение менеждера ресурсов для задач: 0, узел:
    me1.myuniv.edu, rc = JM_PARTIONCREATIONFAILURE
    ERROR: 0031-635 Возвращено ненулевое состояние -1 из pm_mgr_init
    О: Это значит, что либо mpirun пытается запустить задачи на Вашей SP отличным от поддерживаемого Вашей инсталляцией способом, или существует неисправность в программном обеспечении IBM, управляющем параллельными задачами (все эти сообщения об ошибках происходят от команды IBM poe, которую mpirun использует для запуска задачи MPI). Свяжитесь с Вашим системным администратором для помощи в исправлении этой ситуации. Ваш системный администратор может использовать
    dsh -av ``ps aux | egrep -i `poe|pmd|jmd'''
    с управляющей рабочей станции для поиска случайных задач IBM POE, что может вызывать такое поведение. Файлы /tmp/jmd_err на отдельных узлах могут также содержать полезную диагностическую информацию.
  2. В: При попытке запуска программы на IBM SP получено сообщение от mpirun:
    ERROR: 0031-214 pmd: chdir </a/user/gamma/home/mpich/examples/basic>
    ERROR: 0031-214 pmd: chdir </a/user/gamma/home/mpich/examples/basic>
    О: Это сообщения от системы IBM tbe, а не от mpirun. Они могут быть вызваны несовместимостью между POE, программой автомонтирования (особенно AMD) и shell, особенно если Вы используете не ksh. Не существует хорошего решения; IBM часто рекомендует сменить Вашу shell на ksh!
  3. В: При попытке запуска программы на IBM SP получено
    ERROR : Невозможно определить каталог сообщений (pepoe.cat) используя текущий
    NLSPATH
    INFO : Если NLSPATH установлен правильно и каталог существует, проверьте
    переменные LANG или LC_MESSAGES
    (C) Открытие каталога сообщений ``pepoe.cat'' невозможно
    (и другие вариации, упоминающие NLSPATH и ``каталог сообщений'').

    О: Это проблема в Вашей системе; свяжитесь с Вашей командой поддержки. Обратите внимание на (а) значение NLSPATH, (b) ссылки из `/usr/lib/nls/msg/prime' к соответствущему языковому каталогу. Сообщения происходят не от mpich; они от кода IBM POE/MPL, который использует реализация mpich.

  4. В: При запуске программы на IBM SP выводится:
    ERROR: 0031-124 Менее 2 узлов доступно из pool 0
    О: Это означает, что система IBM POE/MPL не может распределить запрошенные узлы, когда Вы пытаетесь запустить программу; вероятно, систему использует кто-то еще. Вы можете попытаться использовать переменные окружения MP_RETRY и MP_RETRYCOUNT, чтобы заставить задачу ожидать, пока узлы не станут доступны. Используйте man poe для дополнительной информации.
  5. В: При запуске программы на IBM SP задача генерирует сообщение
    Сообщение номер 0031$-$254 не найдено в каталоге сообщений.
    а затем завершается.

    О: Если Ваше имя пользователя состоит из 8 символов, Вы можете обнаружить ошибку в среде IBM POE. Единственным исправлением, описанным на данный момент, является испоьзование профиля, в котором имя пользователя состоит из 7 символов или менее. Спросите Вашего представителя IBM о PMR 4017X (poe с идентификаторами пользователя длиной 8 символов не работает) и связанным с ним APAR IX56566.



Alex Otwagin 2002-12-16

next up previous contents
Next: Общие Up: В случае неудачи Previous: IBM SP   Contents

Программы завершаются с ошибкой при старте



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Сети рабочих станций Up: Программы завершаются с ошибкой Previous: Программы завершаются с ошибкой   Contents

Общие

  1. В: В некоторых системах Вы можете увидеть
    /lib/dld.sl: Вызов по ссылке неудачен
    /lib/dld.sl: Неверный аргумент
    (Это пример из HP$-$UX), или
    ld.so: libc.so.2: не найдена
    (Это пример из SunOS 4.1; подобные вещи происходят и в других системах).

    О: Проблема в том, что Ваша программа использует разделяемые библиотеки, и библиотеки не доступны на некоторых машинах, с которыми Вы работаете. Чтобы исправить это, перекомпонуйте Вашу программу без разделяемых библиотек. Чтобы сделать это, добавьте соответствующие опции командной строки на этапе компоновки. Например, для системы HP и указанной выше ошибки, исправление состоит в использовании на этапе компоновки -Wl,-Bimmediate. Для Solaris соответствующей опцией будет -Bstatic.



Alex Otwagin 2002-12-16

next up previous contents
Next: Программы завершаются с ошибкой Up: Программы завершаются с ошибкой Previous: Общие   Contents

Сети рабочих станций

  1. В: Я могу запустить программу, используя небольшое число процессов, однако, когда я запрашиваю больше, чем 4-8 процессов, я не получаю ввод от всех моих процессов и программы никогда не завершаются.

    О: Мы наблюдали такую проблему при инсталляциях, использующих AFS. Программа удаленной shell rsh, поставляемая с некоторыми системами AFS, ограничивает количество задач, которые могут использовать стандартный вывод. Это предотвращает выход для некоторых процессов, вызывая зависание задачи. Существует четыре возможных пути решения:

    1. Использовать другую команду rsh. Вероятно, Вы можете сделать это, поместив каталог, содержащий не-AFS версию, раньше в Вашем PATH. Эта опция может быть недоступна для Вас, что зависит от Вашей системы. Версия не-AFS может находиться в том же месте в `/bin/rsh'.
    2. Использовать безопасный сервер (serv_p4). См. его обсуждение в руководстве пользователя.
    3. Перенаправить весь стандартный вывод в файл. Для этого может использоваться процедура MPE MPE_IO_Stdout_to_file.
    4. Использовать исправленную версию команды rsh. Возможным источкником проблемы является неправильное использование системного вызова select в команде rsh. Если код выполняет нечто вроде
      int mask;
      mask |= 1 « fd;
      select ( fd+1, &mask, ... );
      вместо
      fd_set mask;
      FD_SET (fd,&mask);
      select ( fd+1, &mask, ... );
      то этот код неправильный (вызов select изменился, чтобы разрешить более 32 десткипрторов файлов очень давно, а программа rsh (или программист!) не изменились со временем).
    Четвертой возможностью является использование AFS-версии rsh, которая исправляет эту ошибку. Поскольку мы сами на пользуемся AFS, нам неизвестно, есть ли где нибудь исправленная версия.
  2. В: Запускаются не все процессы.

    О: Это может произойти при использовании устройства ch_p4 и системы, имеющей исключительно малые ограничения на число удаленных shell, принадлежащих Вам. Некоторые системы используют ``Kerberos'' (пакет безопасности сети), позволяющий иметь только три или четыре удаленных shell; на этих системах размер MPI_COMM_WORLD будет ограничен этим же числом (плюс один, если Вы используете и локальную машину).

    Единственный способ обойти это - попытаться использовать безопасный сервер; это описано в руководстве по инсталляции mpich. Отметьте, что Вы должны запускать серверы ``вручную'', поскольку скрипт chp4_servs использует удаленную shell для запуска серверов.



Alex Otwagin 2002-12-16

next up previous contents
Next: Общие Up: В случае неудачи Previous: Сети рабочих станций   Contents

Программы завершаются с ошибкой после запуска



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: HPUX Up: Программы завершаются с ошибкой Previous: Программы завершаются с ошибкой   Contents

Общие

  1. В: Я использую MPI_Allreduce, и получаю различные результаты в зависимости от числа используемых процессов.

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

    MPI_Allreduce ( &in, &out, MPI_DOUBLE, 1, ... );
    может вычислять
    $( ( ( ( ( ( (a + b) + c) + d) + e) + f) + g) + h)$
    или может вычислять
    $( (a + b) + (c + d)) + ( (e + f) + (g + h))$
    где a, b, ... - значения in в каждом из восьми процессов. Эти выражения эквивалентны для целых, вещественных и других привычных объектов из математики, но не эквивалентны для типов данных, таких, как данные с плавающей точкой, используемых в компьютерах. Ассоциация, которую использует MPI, зависит от количества процессов, таким образом, Вы можете не получить тот же самый результат при использовании различного числа процессов. Отметьте, что Вы не получите неверный результат, а просто другой (большинство программ предполагают, что арифметические операции ассоциативны).
  2. В: Компилятор Фортрана завершается с ошибкой BUS.

    О: Компилятор С, с помощью которого был построен mpich и компилятор Фортрана, который Вы используете, имеют различные правила выравнивания для таких вещей, как DOUBLE PRECISION (двойная точность). Например, GNU C компилятор gcc может предположить, что все значения double выравниваются по 8-байтовой границе, а язык Фортран требует только такого выравнивания DOUBLE PRECISION для INTEGER, которое делается по 4-байтовой границе.

    Хорошего решения не существует. Рассмотрим перестроение mpich с компилятором С, который поддерживает слабые правила выравнивания данных. Некоторые компиляторы Фортрана позволяют Вам задать 8-байтовое выравнивание для DOUBLE PRECISION (например, опции -dalign в -f некоторых компиляторах Фортрана для Sun); заметьте, однако, что это может испортить некоторые корректные программы Фортрана, взломав правила ассоциации хранения в Фортране.

    Некоторые версии gcc могут поддерживать -munaligned-doubles; mpich должен быть перестроен с этой опцией, если Вы используете gcc версии 2.7 или выше. mpich пытается определить и использовать опцию, если она доступна.

  3. В: Я использую fork для создания нового процесса или создаю новый поток, а программа завершается с ошибкой.

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

    Реализация mpich поддерживает вызов MPI_Init_thread; посредством этого вызова, нового для MPI-2, Вы можете определить, какой уровень поддержки потоков позволяет реализация MPI. Начиная с mpich версии 1.2.0 поддерживается только MPI_THREAD_SINGLE. Мы уверены, что версия 1.2.0 и выше поддерживает MPI_THREAD_FUNNELED, и некоторые пользователи используют mpich в этом режиме (особенно вместе с OpenMP), но мы недостаточно протестировали mpich в этом режиме. Будущие версии mpich будут поддерживать MPI_THREAD_MULTIPLE.

  4. В: Программы C++ выполняют глобальне деструкторы (или конструкторы) больше раз, чем нужно. Например:
    class Z $\lbrace$
    public:
    Z () $\lbrace$ cerr « "*Z" « endl; $\rbrace$
     Z () $\lbrace$ cerr « "+Z" « endl; $\rbrace$
    $\rbrace$;

    Z z;

    int main (int argc, char **argv) $\lbrace$
    MPI_Init (&argc, &argv);
    MPI_Finalize ();
    $\rbrace$
    при запуске с устройством ch_p4 на два процесса выполняет деструктор дважды для каждого процесса.

    О: Ряд процессов, запущенных перед MPI_Init или после MPI_Finalize не определяются ; Вы не можете полагаться на определенное поведение. В случае ch_p4 порождается новый процесс для обработки запросов соединения; он прекращается после окончания программы.

    Вы можете использовать контролирующий процесс в потоке с устройством ch_p4 или использовать вместо этого устройство ch_p4mpd. Заметьте, однако, что этот код непереносим, поскольку он полагается на поведение, которое не определяет стандарт MPI.



Alex Otwagin 2002-12-16

next up previous contents
Next: Устройство ch_shmem Up: Программы завершаются с ошибкой Previous: Общие   Contents

HPUX

  1. В: Программы Фортрана завершаются с SIGSEGV при запуске на рабочих станциях HP.

    О: Попробуйте компилировать и компоновать программы Фортрана с опцией +T. Это может быть необходимым, чтобы среда Фортрана корректно обрабатывала прерывания, используемые mpich для создания соединений с другими процессами.



Alex Otwagin 2002-12-16

next up previous contents
Next: LINUX Up: Программы завершаются с ошибкой Previous: HPUX   Contents

Устройство ch_shmem

  1. В: Программы иногда зависают при использовании устройства ch_shmem.

    О: Убедитесь, что Вы компонуете программу со всеми корректными библиотеками. Если Вы не используете mpicc, попробуйте использовать mpicc для компоновки Вашего приложения. Причиной этого является то, что правильная работа версии с разделяемой памятью может зависеть от дополнительных библиотек, предоставляемых системой. Например, в Solaris, должна использоваться библиотека потоков, иначе критичные для корректного функционирования реализации MPI нефункциональные версии процедур mutex будут взяты из `libc'.



Alex Otwagin 2002-12-16

next up previous contents
Next: Сети рабочих станций Up: Программы завершаются с ошибкой Previous: Устройство ch_shmem   Contents

LINUX

  1. В: Процессы завершаются с сообщением об ошибке
    p0_1835: p4_error: Найдено неработающее соединение при ожидании сообщений: 1
    О: Дело в том, что реализация TCP на этой платформе решает, что соединение ``оборвалось'', когда его в действительности еще нет. Текущая реализация mpich предполагает, что реализация TCP не закрывает соединений и не имеет процедур для восстановления оборванных соединений. Будущие версии mpich будут обходить эту проблему.

    К тому же, некоторые пользователи обнаружили, что ядро Linux для одного процессора более стабильно, чем ядро SMP.



Alex Otwagin 2002-12-16

next up previous contents
Next: Проблемы ввода-вывода Up: Программы завершаются с ошибкой Previous: LINUX   Contents

Сети рабочих станций

  1. В: Задача работает до окончания, но завершается с сообщением
    Таймаут при ожидании завершения процессов. Это может вызываться дефектной
    программой rsh (Некоторые версии Kerberos rsh имеют эту проблему).

    Это не проблема P4 или mpich, а проблема операционной среды. Для многих
    приложений эта проблема замедляет прекращение процессов.
    Что это означает?

    О: Если что-либо вызывает завершение MPI_Finalize за время более, чем 5 минут, в этом подозревается реализация rsh. rsh, используемая в некоторых инсталляциях Kerberos предполагает, что sizeof (FD_SET) == sizeof (int). Это означает, что программа rsh предполагает, что наибольшее значение FD это 32. Если программа использует fork для создания процессов, которые запускают rsh с поддержкой stdin, stdout, и stderr порожденных процессов, это предположение неверно, поскольку FD, которые rsh создает для сокета, могут быть > 31, если запущено достаточно много процессов. При использовании такой неисправной реализации rsh симптомом является то, что задача никогда не завершается, поскольку задачи rsh ждут (благодаря select) закрытия сокета.

    Устройство ch_p4mpd исключает эту проблему.



Alex Otwagin 2002-12-16

next up previous contents
Next: Общие Up: В случае неудачи Previous: Сети рабочих станций   Contents

Проблемы ввода-вывода



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: IBM SP Up: Проблемы ввода-вывода Previous: Проблемы ввода-вывода   Contents

Общие

  1. В: Я хотел бы, чтобы вывод printf появлялся немедленно.

    О: Это зависит от возможностей Вашей системы выполнения С и/или Фортрана. Для С, попробуйте

    setbuf ( stdout, (char *)0 );
    или
    setvbuf ( stdout, NULL, _IONBF, 0 );


Alex Otwagin 2002-12-16

next up previous contents
Next: Сети рабочих станций Up: Проблемы ввода-вывода Previous: Общие   Contents

IBM SP

  1. В: У меня есть код, запрашивающий данные от пользователя и читающий из стандартного ввода. На системах IBM SP приглашение не появляется, пока пользователь не ответит на него!

    О: Это свойство системы IBM POE. Существует процедура POE, mpc_flush (1), которую Вы можете использовать для очистки вывода. Прочтите страницу man для этой процедуры; она синхронизирована во всей задаче и не может использоваться, пока все процессы в MPI_COMM_WORLD не вызовут ее. С другой стороны, Вы всегда можете оканчивать Вывод символом новой строки ($\backslash$n); это вызовет очистку вывода и также поместит ввод от пользователя на новую строку.



Alex Otwagin 2002-12-16

next up previous contents
Next: Upshot и Nupshot Up: Проблемы ввода-вывода Previous: IBM SP   Contents

Сети рабочих станций

  1. В: Я хотел бы, чтобы стандартный вывод (stdout) от каждого процесса выводился на разные строки.

    О: mpich не имеет для этого встроенного способа. Кстати, сам по себе он пытается собрать стандартный вывод для Вас. Вы можете сделать следующее:

    1. Использовать встроенные команды Unix для перенаправления stdout из Вашей программы (dup2, и т.д.). Процедура MPE_IO_Stdout_to_file в `mpe/src/mpe_io.c' указывает способ делать это. Помните, что в Фортране подход с использованием dup2 работает, только если в stdout выводит PRINT из Фортрана. Это обычный способ, но не универсальный.
    2. Выводите непосредственно в файлы вместо stdout (используйте fprintf вместо printf, и т.д.). Вы можете создать имя файла, используя ранг процесса. Это наиболее переносимый способ.


Alex Otwagin 2002-12-16

next up previous contents
Next: Общие Up: В случае неудачи Previous: Сети рабочих станций   Contents

Upshot и Nupshot

Программы upshot и nupshot требуют определенных версий языков tcl и tk. Этот раздел описывает только проблему, которые возникают, если эти инструменты успешно созданы.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: HP-UX Up: Upshot и Nupshot Previous: Upshot и Nupshot   Contents

Общие

  1. В: При попытке запуска upshot или nupshot выдается сообщение
    Нет имени дисплея и переменой окружения $DISPLAY
    О: Это проблема с Вашей средой X. Upshot - это программа для X. Если имя Вашей рабочей станции `foobar.kscg.gov.tw', то перед запуском программы X, Вы должны выполнить
    setenv DISPLAY foobar.kscg.gov.tw:0
    Если Вы работаете на какой-либо другой машине и выводите результат на foobar, Вам может понадобиться выполнить
    xhost +othermachine
    на foobar; это даст othermachine разрешение для записи на дисплей foobar.

    Если у Вас нет дисплея X (Вы входите в систему с машины под Windows без возможностей X), Вы не можете использовать upshot.

  2. В: При попытке запуска upshot выдается
    upshot: Команда не найдена.
    О: Вначале проверьте, находится ли upshot в Вашем пути. Вы можете использовать команду
    which upshot
    чтобы сделать это.

    Если он находится в Вашем пути, проблема может быть в том, что имя интерпретатора wish (используемого upshot) слишком длинное для Вашей системы Unix. Проверьте первую строку файла `upshot'. Она должна выглядеть примерно так

    #! /usr/local/bin/wish -f
    Если она выглядит как
    #! /usr/local/tcl7.4-tk4.2/bin/wish -f
    это может быть слишком длинным именем (некоторые системы Unix ограничивают первую строку 32 символами). Чтобы исправить это, Вам нужно поместить ссылку на `wish' где-нибудь еще, чтобы имя было достаточно коротким. Также, Вы можете запустить upshot через
    /usr/local/tcl7.4-tk4.2/bin/wish -f /usr/local/mpich/bin/upshot


Alex Otwagin 2002-12-16

next up previous contents
Next: Автоматическая генерация профилирующих библиотек Up: Upshot и Nupshot Previous: Общие   Contents

HP-UX

  1. В: При попытке запуска upshot в HP-UX выдаются сообщения об ошибке
    set: Имя переменной должно начинаться с буквы.
    или
    upshot: ощибка синтаксиса в строке 35: ' (' неопределена
    О: Ваша версия HP-UX ограничивает имена shell до очень коротких строк. upshot является программой, выполняемой wish shell, и по некоторым причинам HP-UX отказывает в исполнении в этой shell, а затем пытается выполнить программу upshot в Вашей текущей shell (т.е., `sh' или `csh'), вместо выдачи разумного сообщения об ошибке, что имя команды слишком велико. Существует два способа исправления:
    1. Добавьте ссылку с более коротким именем, например
      ln -s /usr/local/tk3.6/bin/wish /usr/local/bin/wish
      Затем отредактируйте скрипт upshot для использования этого имени. Это может потребовать прав доступа root, в зависимости от того, где Вы поместили ссылку.
    2. Создайте обычную программу shell, содержащую строки
      #! /bin/sh
      /usr/local/tk3.6/bin/wish -f /usr/local/mpi/bin/upshot
      (с соответствующими именами для исполняемых файлов `wish' и `upshot'). Поместите сообщение об ошибке HP в файл. В настоящее время, сообщение об ошибке здесь неверно; нет причины ограничивать выбор общей shell ( в противоположность shell загрузки).


Alex Otwagin 2002-12-16

next up previous contents
Next: Написание определения обрамления Up: Руководство пользователя mpich, переносимой Previous: HP-UX   Contents

Автоматическая генерация профилирующих библиотек

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

wrappergen использует три источника ввода:

  1. Список функций, для которых генерируются обрамления.
  2. Описания профилируемых функций. Для достижения скорости и простоты разбора используется специальный формат. См. файл `proto'. Функции MPI-1 находятся в `mpi_proto'. Функции ввода-вывода из MPI-2 находятся в `mpiio_proto'.
  3. Определение обрамления.

Список функций представляет собой просто файл имен функций, разделенных пробелами. Если он опущен, любые макросы forallfn или fnall будут расширены на каждую функцию в файле определений.

Если описания функций отсутствуют, используются те, которые находятся в `mpi_proto' (это множество с определением PROTO_FILE в `Makefile').

Опции wrappergen:

-w file
Добавить файл для использования в списке файлов обрамлений.
-f file
Файл содержит список имен функций для профилирования, разделенный пробелами.
-p file
Файл содержит определения прототипов специальных функций.
-o file
Направить вывод в файл.
Например, для оценки времени каждой операции ввода-вывода, используйте
cd mpe/profiling/lib
../wrappergen/wrappergen -p ../wrappergen/mpiio_proto $\backslash$
-w time_wrappers.w > time_io.c
Результирующий код требует только версию MPI_Finalize для вывода временных величин. Она может быть написана либо добавлением MPI_Finalize и MPI_Init к `mpiio_proto', либо через простое редактирование версии, полученной при использовании `mpi_proto' вместо `mpiio_proto'.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Опции mpirun Up: Автоматическая генерация профилирующих библиотек Previous: Автоматическая генерация профилирующих библиотек   Contents

Написание определения обрамления

Определения обрамления сами по себе состоят из кода на С со специальными макросами. Каждый макрос окружен последовательностью $\lbrace$$\lbrace$$\rbrace$$\rbrace$. Следующий макрос распознается wrappergen:
$\lbrace$$\lbrace$ fileno$\rbrace$$\rbrace$
Целочисленный индекс представляет, из какого файла обрамления происходит макрос. Это полезно при описании глобальных для файла переменных, чтобы избежать пересечения имен. Рекомендуется, чтобы все идентификаторы, описанные вне функций, оканчивались на _$\lbrace$$\lbrace$ fileno$\rbrace$$\rbrace$. Например:
static double overhead_time_$\lbrace$$\lbrace$ fileno$\rbrace$$\rbrace$;
может расширяться до:
static double overhead_time_0;
(конец примера).

$\lbrace$$\lbrace$ forallfn <function name escape> <функция A> <функция B> ... $\rbrace$$\rbrace$
...
$\lbrace$$\lbrace$endforallfn$\rbrace$$\rbrace$

Код между $\lbrace$$\lbrace$ forallfn$\rbrace$$\rbrace$ и $\lbrace$$\lbrace$endforallfn$\rbrace$$\rbrace$ копируется один раз для каждой профилируемой функции, исключая перечисленные функции, заменяя <function name escape> именем каждой из функций. Например:
$\lbrace$$\lbrace$forallfn fn_name$\rbrace$$\rbrace$ static int $\lbrace$$\lbrace$fn_name$\rbrace$$\rbrace$_ncalls_$\lbrace$$\lbrace$fileno$\rbrace$$\rbrace$;
$\lbrace$$\lbrace$endforallfn$\rbrace$$\rbrace$
может расширяться до:
static int MPI_Send_ncalls_1;
static int MPI_Recv_ncalls_1;
static int MPI_Bcast_ncalls_1;
(конец примера).

$\lbrace$$\lbrace$foreachfn <function name escape> <функция A> <функция B> ... $\rbrace$$\rbrace$
...
$\lbrace$$\lbrace$endforeachfn$\rbrace$$\rbrace$

$\lbrace$$\lbrace$foreachfn$\rbrace$$\rbrace$ - это то же самое, что и $\lbrace$$\lbrace$forallfn$\rbrace$$\rbrace$, за исключением того, что обрамления будут написаны только для точно названных функций. Например:
$\lbrace$$\lbrace$forallfn fn_name mpi_send mpi_recv$\rbrace$$\rbrace$static int $\lbrace$$\lbrace$fn_name$\rbrace$$\rbrace$_ncalls_$\lbrace$$\lbrace$fileno$\rbrace$$\rbrace$;
$\lbrace$$\lbrace$endforallfn$\rbrace$$\rbrace$
может расширяться до:
static int MPI_Send_ncalls_2;
static int MPI_Recv_ncalls_2;
(конец примера).

$\lbrace$$\lbrace$fnall <function name escape> <функция A> <функция B> ... $\rbrace$$\rbrace$
...
$\lbrace$$\lbrace$callfn$\rbrace$$\rbrace$ ...$\lbrace$$\lbrace$endfnall$\rbrace$$\rbrace$

$\lbrace$$\lbrace$fnall$\rbrace$$\rbrace$ определяет обрамление, используемое для всех функций, исключая названные.
wrappergen расширяет их в полное определение функции в традиционном формате С. Макрос $\lbrace$$\lbrace$callfn$\rbrace$$\rbrace$ сообщает wrappergen, где вставить вызов функции, которая будет профилироваться. Должен быть только один экземпляр макроса $\lbrace$$\lbrace$callfn$\rbrace$$\rbrace$ в каждом определении оболочки. Макрос, определенный <function name escape> заменяется именем каждой из функций.

Внутри определения обрамления распознаются другие макросы.

$\lbrace$$\lbrace$vardecl <type> <arg> <arg> ... $\rbrace$$\rbrace$
Используйте vardecl для объявления переменных внутри определения обрамления. Если вложенный макрос требует переменных, заданных посредством vardecl с теми же именами, wrappergen создаст уникальные имена добавлением последовательных целых в конец требуемого имени (var, var1, var2, ...), пока не будет создано уникальное имя. Неразумно объявлять переменные в определении обрамления вручную, поскольку имена переменных могут конфликтовать с другими обрамлениями, а определения переменных могут встретиться в коде позже, чем выражения из других обрамлений, что запрещено в классическом и ANSI C.
$\lbrace$$\lbrace$<varname>$\rbrace$$\rbrace$
Если переменная описана через vardecl, то требуемое имя для этой переменной (которое может отличаться от унифицированной формы, которая появится в финальном коде) становится временным макросом, который будет расширен в унифицированную форму. Например,
$\lbrace$$\lbrace$vardecl int id$\rbrace$$\rbrace$
может расширяться до:
int i, d3;
(конец примера)
$\lbrace$$\lbrace$<argname>$\rbrace$$\rbrace$
Рекомендуемый, но не необходимый макрос, состоящий из имени одного из аргументов профилируемой функции, расширяется до имени соответствующего аргумента. Этот макрос служит небольшой цели, иной чем вставка, чтобы профилируемая функция имела аргумент с заданным именем.
$\lbrace$$\lbrace$<argnum>$\rbrace$$\rbrace$
Аргументы профилируемой функции могут также адресоваться увеливающимся номером, начиная с 0.
$\lbrace$$\lbrace$returnVal$\rbrace$$\rbrace$
returnVal расширяется до переменной, используемой для хранения возвращаемого результата профилируемой функции.
$\lbrace$$\lbrace$callfn$\rbrace$$\rbrace$
callfn расширяется до вызова профилируемой функции. При вложенных определениях обрамления, это также представляет точку для вставки кода любой вложенной внутренней функции. Порядок вложенности определяется порядком, в котором встречаются обрамления программе wrappergen. Например, если два файла `prof1.w' и `prof2.w' каждый содержат два обрамления для MPI_Send, профилированный код, созданный с использованием обоих файлов, имеет вид:
int MPI_Send ( аргументы...)
объявление аргументов...
$\lbrace$
/*код перед вызовом функции из обрамления 1 из prof1.w */
/*код перед вызовом функции из обрамления 2 из prof1.w */
/*код перед вызовом функции из обрамления 1 из prof2.w */
/*код перед вызовом функции из обрамления 2 из prof2.w */
returnVal = MPI_Send ( аргументы... );
/*код после вызова функции из обрамления 2 из prof2.w */
/*код после вызова функции из обрамления 1 из prof2.w */
/*код после вызова функции из обрамления 2 из prof1.w */
/*код после вызова функции из обрамления 1 из prof1.w */
return returnVal;
$\rbrace$

$\lbrace$$\lbrace$fn <function name escape> <function A> <function B> ... $\rbrace$$\rbrace$
...
$\lbrace$$\lbrace$callfn$\rbrace$$\rbrace$
...
$\lbrace$$\lbrace$endfnall$\rbrace$$\rbrace$

fn идентично fnall, за исключением генерации обрамлений только для точно названных функций. Например:
$\lbrace$$\lbrace$fn this_fn MPI_Send$\rbrace$$\rbrace$
$\lbrace$$\lbrace$vardecl int i$\rbrace$$\rbrace$
$\lbrace$$\lbrace$callfn$\rbrace$$\rbrace$
printf ( ``Вызов $\lbrace$$\lbrace$this_fn$\rbrace$$\rbrace$.$\backslash$n'' );
printf ( ``$\lbrace$$\lbrace$i$\rbrace$$\rbrace$ не используется.$\backslash$n'' );
printf ( ``Первый аргумент для $\lbrace$$\lbrace$this_fn$\rbrace$$\rbrace$ это $\lbrace$$\lbrace$0$\rbrace$$\rbrace$$\backslash$n'' );
$\lbrace$$\lbrace$endfn$\rbrace$$\rbrace$
будет расширен до:
int MPI_Send (buf, count, datatype, dest, tag, comm )
void * buf;
int count;
MPI_Datatype datatype;
int dest;
int tag;
MPI_Comm comm;
$\lbrace$
int returnVal;
int i;
returnVal = PMPI_Send ( buf, count, datatype, dest, tag, comm );
printf ( "Вызов MPI_Send.$\backslash$n" );
printf ( "i не используется.$\backslash$n" );
printf ( "Первый аргумент для MPI_Send это buf$\backslash$n" );
return returnVal;
$\rbrace$

$\lbrace$$\lbrace$fn_num$\rbrace$$\rbrace$

Это номер, начинающийся с 0. Он наращивается при каждом использовании.
Простой файл обрамления находится в `sample.w', а соответствующий вывод в `sample.out'.
next up previous contents
Next: Опции mpirun Up: Автоматическая генерация профилирующих библиотек Previous: Автоматическая генерация профилирующих библиотек   Contents
Alex Otwagin 2002-12-16

next up previous contents
Next: mpirun и Globus Up: Руководство пользователя mpich, переносимой Previous: Написание определения обрамления   Contents

Опции mpirun

Опции mpirun можно увидеть при запуске mpirun -help (отметьте, что не все опции поддерживаются всеми устройствами). В зависимости от определенного устройства, вывод mpirun -help может различаться; следующая информация относится к устройству globus2.

mpirun опции mpirun ...<имя программы> опции...
опции mpirun:



    -arch <архитектура>

Определяет архитектуру (должен быть соответствующий
файл machines.<arch> в /usr/local/mpich/bin/machines)
если используется execer
-h Эта справка
-machine <имя машины>
Использовать стартовую процедуру для <имя машины>
В настоящее время поддерживаются:
paragon
p4
sp1
ibmspx
anlspx
sgi_mp
ipsc860
inteldelta
cray_t3d
execer
smp
symm_ptx
-machinefile <имя файла machine>
Брать список возможных машин для запуска из файла <machine-filename>.
Это список всех доступных машин; используйте -np <np> для
указания определенного числа машин.
-np <np>
Определить количество процессоров для запуска
-nodes <nodes>
Определить количество узлов для запуска (для систем SMP,
сейчас поддерживается только устройством ch_mpl)
-nolocal
не запускать на локальной машине (работает только для задач
ch_p4)
-all-cpus, -allcpus
Использовать все доступные CPU на всех узлах.
-all-local
Запускать все процессы на главном узле.
-exclude <list>
Исключить узлы из списка, разделенного двоеточием.
-map <list>
Использовать список, разделенный двоеточием для определения,
какой ранг работает на каком узле.
-stdin filename
Использовать filename как стандартный ввод программы. Это
необходимо для программ, запускаемых как пакетные задачи, как на
некоторых системах IBM SP и Intel Paragon с использованием NQS
(см. ниже -paragontype).
Используйте
-stdin /dev/null
если ввода нет и Вы предполагаете запустить программу в фоновом
режиме. Альтернативой является перенаправление стандарного ввода
из /dev/null, как в
mpirun -np 4 a.out < /dev/null
-t Тестирование - не запускать, а выводить, что должно было произойти
-v Выводить подробные комментарии
-dbg Опция `-dbg' сожет использоваться для выбора отладчика.
Например, -dbg=gdb вызывает скрипт mpirun_dbg.gdb, находящийся в
каталоге `mpich/bin'. Этот скрипт захватывает нужные аргументы вызывает
отладчик gdb, и запускает первый процесс под управлением gdb, если это
возможно. Существует 4 отладочных скрипта; gdb, xxgdb, ddd, totalview. Они
могут потребовать редактирования, что зависит от Вашей системы. Существует
еще скрипт для dbx, но он всегда должен редактироваться, поскольку команды
для dbx варьируются от версии к версии. Вы можете также использовать эту
опцию для вызова другого отладчика; например, -dbg=mydebug. Вам нужно
написать скрипт `mpirun_dbg.mydebug', который следует формату
встроенных скриптов отладки и поместить его в каталог mpich/bin.
-ksq Хранить очереди передачи. Это полезно, если Вы предполагаете
позже добавить totalview к запущенной (или блокированной) задаче, и хотите
просмотреть очереди сообщений. (Обычно они не поддерживают
просмотр отладчиком).
Опции для устройства globus2: За исключением -h, устройством globus поддерживаются только опции mpirun.



    -machinefile <machine-file name>

Взять список возможных машин для запуска из
файла <machine-file name>
-np <np>
Определить количество процессоров для запуска
-dumprsl
Показывает строку RSL, используемую для отсылки задачи.
Использование этой опции не запускает задачу.
-globusrsl <globus-rsl-file name>
SPMgt;<globus-rsl-file name> содержит строку Globus RSL.
При использовании этой опции все другие опции mpirun игнорируются.
Специальные опции пакетных сред:



    -mvhome    

Перемещает исполняемые файлы в домашний каталог. Это необходимо,
если все файловые системы не кросс-монтированы. Сейчас используется только anlspx.
-mvback files
Перемещает указанные файлы обратно в текущий каталог. Нужно
только при использовании -mvhome; в ином случае не имеет эффекта.
-maxtime min
Максимальное время выполнения задачи в минутах. Сейчас используется только
anlspx. Значение по умолчанию $max_time минут.
-nopoll
Не использовать коммуникацию в режиме опроса. Доступны только для IBM SP.
Специальные опции для IBM SP2:



    -cac name 

CAC для планировщика ANL. Сейчас используется только anlspx.
Если не указано, используется любой приемлемый CAC.
При выходе mpirun возвращает состояние 0, если не обнаружена проблема, иначе возвращается ненулевое состояние.

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

mpirun -arch sun4 -np 2 -arch rs6000 -np 3 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.
next up previous contents
Next: mpirun и Globus Up: Руководство пользователя mpich, переносимой Previous: Написание определения обрамления   Contents
Alex Otwagin 2002-12-16

next up previous contents
Next: Использование mpirun для создания Up: Руководство пользователя mpich, переносимой Previous: Опции mpirun   Contents

mpirun и Globus

В этом разделе мы описываем, как запускать программы MPI, используя устройство globus2 в распределенной среде вычислений, ориентированной на Globus. Это предполагает, что (а) Globus установлен и на машинах, где Вы хотите запустить Ваше приложение MPI, запущены соответствующие демоны Globus; (b) Вы уже получили свой идентификатор Globus и сертификаты безопасности; (c) Ваш идентификатор Globus зарегистрирован на всех машинах; (d) у Вас действующий (с лицензией) прокси-сервер Globus. См. для более подробной информации http://www.globus.org.

Каждая команда mpirun для устройства globus2 передает на сеть компьютеров, ориентированную на Globus, скрипт на языке определения ресурсов Globus, или RSL скрипт. Каждый скрипт RSL состоит из одной или нескольких подзадач RSL, обычно по одной на каждую машину в вычислениях. Вы можете создать Ваш собственный скрипт RSL6 точно для mpirun (используя опцию -globusrsl <rslfilename>), в случае чего Вы не должны определять больше никаких опций mpirun, или Вы можете заставить mpirun создать скрипт RSL для Вас, основанный на аргументах, которые Вы передаете mpirun, и на содержимом Вашего файла machines (обсуждается ниже). В этом случае важно помнить, что коммуникация между узлами в различных подзадачах всегда производится по TCP/IP, а более эффективный фирменный MPI поставщика используется только среди узлов одной и той же подзадачи.


Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Использование mpirun для поддержки Up: mpirun и Globus Previous: mpirun и Globus   Contents

Использование mpirun для создания скрипта RSL для Вас

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

Использование mpirun для создания скрипта RSL для Вас требует наличия файла machines. Команда mpirun определяет, какой из файлов machines будет использоваться, следующим образом:

  1. Если определен аргумент -machinefile <имя файла machines> для mpirun, именно он и используется, иначе
  2. mpirun ищет файл `machines' в каталоге, в котором Вы ввели mpirun, и наконец
  3. он проверяет `/usr/local/mpich/bin/machines', где `/usr/local/mpich' является каталогом инсталляции mpich.
Если файл machines не найден ни в одном из этих мест, mpirun завершается с ошибкой.

Файл machines используется для указания компьютеров, на которых Вы можете пожелать запустить свое приложение. Компьютеры перечисляются указанием ``сервиса'' Globus на данной машине. Для большинства приложений используется сервис по умолчанию, требующий только указания полного доменного имени. Проконсультируйтесь с Вашим администратором Globus или веб-сайтом Globus www.globus.org для дополнительной информации относительно специальных сервисов Globus. Например, рассмотрим следующую пару двоично-совместимых машин $\lbrace$m1,m2$\rbrace$.utech.edu, имеющих доступ к единой файловой системе. Здесь приведен файл machines, использующий сервисы Globus по умолчанию.

``m1.utech.edu'' 10
``m2.utech.edu'' 5
Число, появляющееся на конце каждой строки необязательно (по умолчанию 1). Оно определяет максимальное число узлов, которые могут быть созданы в одной подзадаче RSL на каждой машине. mpirun использует определение -np для ``обхода'' файла 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 узлами на m2.utech.edu, и заканчивая третьей подзадачей с 2 узлами снова на m1.utech.edu. Заметьте, что меж-подзадачные сообщения всегда передаются через TCP, даже если две отдельные подзадачи находятся на той же машине.

Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Устаревшие возможности Up: Использование mpirun для создания Previous: Использование mpirun для создания   Contents

Использование mpirun для поддержки Вашего собственного скрипта RSL

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

Простейший способ научиться писать свои собственные запросы RSL - изучить запросы, созданные для Вас mpirun. Рассмотрим пример, в котором мы хотим запустить приложение на кластере рабочих станций. Вспомним, что наш файл machines выглядит так:

``m1.utech.edu'' 10
``m2.utech.edu'' 5
Чтобы увидеть запрос RSL, сгенерированный в этом случае, без запуска программы, мы набираем следующую команду mpirun:
% mpirun -dumprsl -np 12 myapp 123 456
что приведет к выводу:


+        

( &(resourceManagerContact=``m1.utech.edu'')
(количество=10)
(тип задачи=mpi)
(метка=``subjob 0'')
(среда=(GLOBUS_DUROC_SUBJOB_INDEX 0))
(аргументы=`` 123 456'')
(каталог=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus)
(исполняемый файл=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus/myapp)
)
( &(resourceManagerContact=``m2.utech.edu'')
(количество=2)
(тип задачи=mpi)
(метка=``subjob 1'')
(среда= (GLOBUS_DUROC_SUBJOB_INDEX 1))
(аргументы=`` 123 456'')
(каталог=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus)
(исполняемый файл=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus/myapp)
)
Отметьте, что (тип задачи=mpi) может встретиться только в тех подзадачах, машины которых имеют фирменные реализации MPI. Дополнительные переменные окружения могут быть добавлены так, как в примере ниже:


+                    

( &(resourceManagerContact=``m1.utech.edu'')
(количество=10)
(тип задачи=mpi)
(метка=``subjob 0'')
(среда=(GLOBUS_DUROC_SUBJOB_INDEX 0))
(MY_ENV 246)
(аргументы=`` 123 456'')
(каталог=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus)
(исполняемый файл=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus/myapp)
)
( &(resourceManagerContact=``m2.utech.edu'')
(количество=2)
(тип задачи=mpi)
(метка=``subjob 1'')
(среда= (GLOBUS_DUROC_SUBJOB_INDEX 1))
(аргументы=`` 123 456'')
(каталог=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus)
(исполняемый файл=/homes/karonis/MPI/mpich.yukon/mpich/lib/IRIX64/globus/myapp)
)
После редактирования Вашего собственного файла RSL Вы можете передать его непосредственно mpirun следующим образом:
% mpirun -globusrsl <ваш файл запроса RSL>
Отметьте, что при поддержке Вашего собственного файла RSL он должен быть единственным аргументом, определяемым для mpirun.

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




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

Выполнению работы, описанной в этом документе, способствовало много людей. Мы также благодарны тем, кто помогал в реализации mpich, особенно Patrick Bridges и Edward Karrels. Особенная благодарность Nathan Doss и Anthony Skjellum за ценную помощь в реализации и разработке mpich. Debbie Swider, работавшая в группе по mpich несколько лет помогала в поддержке и улучшении реализации mpich. David Ashton, разрабатывал версию mpich для Windows NT, поддержаваемую грантом корпорации Microsoft. Устройство globus2 разработано Nick Karonis из Northern Illinois University и Brian Toonen из Argonne National Laboratory. Привязки к C++ были выполнены Andrew Lumsdaine и Jeff Squyres из Notre Dame. Параллельная система ввода-вывода ROMIO MPI-2 была разработана Rajeev Thakur из Argonne.


next up previous contents
Next: Устаревшие возможности Up: Использование mpirun для создания Previous: Использование mpirun для создания   Contents
Alex Otwagin 2002-12-16

next up previous contents
Next: Более детальный контроль за Up: Руководство пользователя mpich, переносимой Previous: Использование mpirun для поддержки   Contents

Устаревшие возможности

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



Subsections

Alex Otwagin 2002-12-16

next up previous contents
Next: Bibliography Up: Устаревшие возможности Previous: Устаревшие возможности   Contents

Более детальный контроль за компиляцией и компоновкой

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


Alex Otwagin 2002-12-16

next up previous contents
Next: About this document ... Up: Руководство пользователя mpich, переносимой Previous: Более детальный контроль за   Contents

Bibliography

1
TotalView Multiprocess Debugger/Analyzer, 2000. http://www.etnus.com/Products/TotalView.

2
Ralph Butler and Ewing Lusk. User's guide to the p4 parallel programming system. Technical Report ANL-92/17, Argonne National Laboratory, Argonne, IL, 1992.

3
James Cownie and William Gropp. A standard interface for debugger access to message queue information in MPI. In Jack Dongarra, Emilio Luque, and Tomas Margalef, editors, Recent Advances in Parallel Virtual Machine and Message Passing Interface, volume 1697 of Lecture Notes in Computer Science, pages 51-58. Springer Verlag, 1999. 6th European PVM/MPI Users' Group Meeting, Barcelona, Spain, September 1999.

4
Message Passing Interface Forum. MPI: A message-passing interface standard. Computer Science Dept. Technical Report CS-94-230, University of Tennessee, Knoxville, TN, 1994.

5
William Gropp, Steven Huss-Lederman, Andrew Lumsdaine, Ewing Lusk, Bill Nitzberg, William Saphir, and Marc Snir. MPI-The Complete Reference: Volume 2, The MPI-2 Extensions. MIT Press, Cambridge, MA, 1998.

6
William Gropp and Ewing Lusk. Installation guide for mpich, a portable implementation of MPI. Technical Report ANL-96/5, Argonne National Laboratory, 1996.

7
William Gropp and Ewing Lusk. A high-performance MPI implementation on a shared-memory vector supercomputer. Parallel Computing, 22 (11):1513-1526, January 1997.

8
William Gropp and Ewing Lusk. Sowing mpich: A case study in the dissemination of a portable environment for parallel scienti computing. IJSA, 11 (2):103-114, Summer 1997.

9
William Gropp, Ewing Lusk, Nathan Doss, and Anthony Skjellum. A high-performance, portable implementation of the MPI Message-Passing Interface standard. Parallel Computing, 22 (6):789-828, 1996.

10
William Gropp, Ewing Lusk, and Anthony Skjellum. Using MPI: Portable Parallel Programming with the Message Passing Interface, 2nd edition. MIT Press, Cambridge, MA, 1999.

11
William Gropp, Ewing Lusk, and Rajeev Thakur. Using MPI-2: Advanced Features of the Message-Passing Interface. MIT Press, Cambridge, MA, 1999.

12
M. T. Heath. Recent developments and case studies in performance visualization using 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. Studying parallel program behavior with upshot. Technical Report ANL-91/15, Argonne National Laboratory, 1991.

14
Message Passing Interface Forum. MPI: A Message-Passing Interface standard. International Journal of Supercomputer Applications, 8 (3/4):165-414, 1994.

15
Peter S. Pacheco. Parallel Programming with MPI. Morgan Kaufman, 1997.

16
Marc Snir, Steve W. Otto, Steven Huss-Lederman, David W. Walker, and Jack Dongarra.MPI-The Complete Reference: Volume 1, The MPI Core, 2nd edition. MIT Press, Cambridge, MA, 1998.

17
Omer Zaki, Ewing Lusk, William Gropp, and Deborah Swider. Toward scalable performance visualization with Jumpshot. High Performance Computing Applications, 13 (2):277-288, Fall 1999.


Alex Otwagin 2002-12-16

next up previous contents
Up: Руководство пользователя mpich, переносимой Previous: Bibliography   Contents

About this document ...

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

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html mpich_userguide.tex

The translation was initiated by Alex Otwagin on 2002-12-16


Alex Otwagin 2002-12-16

next up previous contents
Next: Contents   Contents

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

William Gropp

Ewing Lusk 1





Alex Otwagin 2002-12-16

next up previous contents
Next: Contents   Contents

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

William Gropp

Ewing Lusk 1





Alex Otwagin 2002-12-16