4. Конфигурирование mpich
В начало страницы
Следующий шаг состоит в конфигурации mpich специально для Вашего вычислительного окружения. Mpich может быть организована для различных параллельных компьютеров и для сетей рабочих станций. В поддерживаемые параллельные компьютеры входят и IBM SP (использующие различные варианты коммуникаций), Intel Paragon и IPSC860, HP Exemplar, NEC SX-4, и мультипроцессоры IBM, SGI, HP и Sun. Поддерживаются рабочие станции семейства Sun4 (и SunOS и Solaris), Hewlett-Packard, DEC 3000 и Alpha, семейство IBM RS/6000 и SGI. Также поддерживаются клоны, основанные на Intel x86 PC под операционными системами LINUX или BSD. Прежние версии mpich поддерживали Kendall Square KSR-1 и KSR-2, Meiko CS-2, Thinking Machines CM-5 и nCube. Ожидаются и новые варианты.
Конфигурация mpich производится конфигурационным сценарием, находящимся в каталоге верхнего уровня. Этот сценарий автоматически генерируется программой Gnu autoconf (version 1.6, но не version 2) из файла configure.in, но Вам не нужно иметь саму autoconf.
Сценарий конфигурации документирует себя следующим образом. Если Вы напечатаете
configure –usage
Вы получите полный список аргументов и их назначений. Так что простейший путь описать параметры конфигурации состоит в том, чтобы привести здесь этот список:
1 Команда mpiman создается конфигурационным процессом, описанным позднее.
=ARCH.TYPE -comm=COMM.TYPE
-with-device=DEVICE -with-mpe -without-mpe -disable-f77 -disable-f90 -with-f90nag -with-f95nag -disable-f90modules -enable-c++ -disable-c++ -enable-mpedbg -disable-mpedbg
-enable-devdebug -disable-devdebug -enable-debug -disable-debug -enable-long-long -disable-long-long -enable-long-double -disable-long-double -prefix=INSTALL.DIR
-c++ =C++.COMPILER noc++ -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
-usesysv -cross -pkt.size=LENGTH -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 = параметры для передачи к конфигурации mpe P4.OPTS = параметры для передачи к конфигурации P4 (device=ch.p4) C++.COMPILER = по умолчанию используется xlC, g++, or CC (выборочно) OPTFLAGS = флажки оптимизации для компилятора (например –g) CFLAGS = флажки для передачи Си– компилятору FFLAGS = флажки для передачи компилятору с Фортрана
MAKEPGM = используемая версия make LENGTH = длина сообщения, при которой ADI переключается с короткого на длинный протокол сообщений AUTOMOUNTFIX = команда для фиксации автомонтировок RSHCOMMAND = команда для использования отдаленной оболочки MPILIBNAME = имя, используемое вместо mpich в названии библиотеки MPI. Если
установлено, то libMPILIBNAME будет употребляться вместо 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-I/O вместо 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 для Fortran (предварительная версия, предназначенная для употребления *вместо* компилятора Fortran 77) –with-f95nag – Выбирает компилятор NAG f95 для Fortran. Можно воспользоваться –without-!featurename? для выключения характеристики, (но не характеристики устройства).
Характеристики (features), которые можно включать в MPICH
-enable-c++ – Строить C++-интерфейсы в подпрограммах MPI-1
(умолчание) –enable-f77 – Строить интерфейсы Fortran 77 к подпрограммам MPI
-enable-weak-symbols – Использовать слабые символы для подпрограмм MPI/PMPI.
Они используются, если существуют, для профилирования интерфейса (умолчание) This uses
-enable-debug – обеспечить поддержку очередей сообщений от программ-отладчиков. –enable-mpedbg – задействовать аргумент командной строки –mpedbg
(например, ошибка может вызвать запуск х-терминала отладчика). Работает
только с некоторыми системами рабочих станций. –enable-sharedlib – Попытка строить совместно используемые библиотеки. –enable-sharedlib=dir Библиотеки всегда строятся. Если указан каталог, совместные библиотеки будут помещаться в этот каталог. Этим можно воспользоваться для помещения совместных библиотек в стандартное место локального диска в кластере. –enable-f90modules – Строить поддержку для модулей Fortran 90 (по умолчанию, если обнаружены компиляторы Fortran 90 или 95). Если не построен ROMIO, то модули Fortran 90 не будут строиться.
Следующее предназначено для реализаторов MPI и отладки конфигурации.
-enable-strict – проверять и строить MPICH, используя параметры strict в Gnu gcc. –enable-echo – Побуждает конфигурацию выдавать в echo свои действия. –enable-devdebug – Вставлять отладочный код в ADI. Для выключения этой характеристики можно воспользоваться –disable-!featurename?.
Замечания по конфигурации
Рекомендация использовать GNU при конфигурации предполагают, что конфигурация не будет использована для построения разных инструментов, а только для управления некоторыми из возможных базисных характеристик или включаемыми пакетами. Мы используем конфигурацию не по этим правилам, потому что она очень полезна и мы нуждаемся в гибкости, которая позволяет пользователю вырабатывать вариации MPICH.
Несколько замечаний о параметрах командной строки.
Можно выбирать компиляторы Си и Fortran, указывая ключи '-cc' и 'fc'. Переменные окружения 'CC' и 'FC' могут также придавать им значения, но они могут перекрываться сценарием конфигурации. Используя '-cc=$CC –fc=$FC' мы принуждаем конфигурацию использовать указанные компиляторы.
Если в '-with-cross=file' указан файл, он используется для кросс-компиляции. Файл должен содержать присваивания вида CROSS.SIZEOF.INT=4 для каждой переменной кросс-компиляции. Команда
egrep 'CROSS. A-Z.*=' configure – sed 's/=.*//g'
перечислит все переменные.
Параметр '-opt' позволяет указывать оптимизирующие параметры компиляторов (как Cи, так и Fortran).
Например, '-opt=-O' вызывает генерацию оптимизированного кода на многих системах. '-optcc' и '-optf77' позволяют Вам указывать параметры для компиляторов Cи или Fortran. Использование флажков –cflags и –fflags в параметрах не связано с оптимизацией.
Заметим, что параметры '-opt' не передаются к сценариям 'mpicc', 'mpif77', 'mpiCC', и 'mpif90'. Параметры '-opt' используются только при построении MPICH.
Параметр '-lib' позволяет указывать место для библиотеки, которая может потребоваться некоторому устройству. Большинство устройств НЕ нуждаются в этом параметре; найдите в инструкциях по установке, для каких он нужен.
Параметр '-make' можно использовать для выбора из альтернативных make-программ. Например, на системах FreeBSD может потребоваться –make=gnumake, так как make-программы, полученные BSD 4.4, не поддерживают операции include, используя вместо них форму .include, что отличает их от других make); это используется в утилите wrappergen.
Параметр '-disable-short-longs' можно использовать для подавления поддержки типов языка Cи 'long long' (обычное расширение) и 'long double' (ANSI/ISO C), когда они того же размера как соответственно 'long' и 'double'. Некоторые системы допускают эти длинные типы Cи, но генерируют диагностики при их использовании; этот параметр можно употреблять для подавления этих диагностик (и поддержки соответствующих типов). '-disable-long-long'подавляет только 'long long'; '-disable-long-double' подавляет только 'long double'.
Параметр '-ar.nolocal' не позволяет команде библиотечного архива использовать локальный каталог для временного размещения. Этот параметр должен использоваться когда (a) нет достаточного пространства (не менее 20 MB) в части, починенной MPICH, (b) имеется достаточно места в /tmp (или там, где по умолчанию помещаются временные файлы).
Параметр '-noranlib' побуждает пропустить шаг 'ranlib' (нужный на некоторых системах для построения объектной библиотеки). В частности, это полезно в системах, где 'ranlib' выборочен (допустим, но не необходим; потому что, если он допустим, система выбирает его), но может привести к краху (некоторые 'ranlib' реализуются как сценарии, использующие 'ar'; если они не используют локальный каталог, они могут разрушить обрабатываемые библиотеки), если временные каталоги (обычно это '/tmp') не имеют достаточного пространства. Так случалось в некоторых системах OSF.
Параметр '-memdebug' задействует отладочный код экстенсивной внутренней памяти. Используется только если Вы стараетесь выяснить проблемы с памятью (можно использовать и в пользовательских программах). Выполнение программ с параметром '-mpidb memdump' выдаст картину всей не освобожденной при работе MPI памяти, если вызвать 'MPI.Finalize'.
Например, будет сообщение о созданных пользователем данных, если занятая память для них не будет своевременно освобождена.
Параметр '-tracing' организует трассировку внутренних вызовов. Это должно использоваться только при отладке реализации самой MPICH.
Параметр '-dlast' запускает трассировку самых последних операций, выполненных устройством. Выдача может быть по сигналу (подобному SIGINT), при ошибке или при вызове специальной подпрограммы. Употребление параметра приводит к потере производительности, но может быть очень полезным средством отладки для реализаторов.
Параметр '-rsh' позволяет Вам выбирать альтернативы в командах отдаленной Оболочки, (по умолчанию конфигурация использует 'rsh' или 'remsh' из Вашей 'PATH'). Если команда Вашей отдаленной оболочки не имеет параметра '-l' (некоторые версии AFS versions of 'rsh' имеют этот дефект), выбирайте параметер '-rshnol'. Эти параметры полезны только при построении сетевой версии MPICH (например, '-with-device=ch.p4').
Специальные параметры настройки
Это несколько параметров для настройки поведения ADI (Abstract Device Interface), служащего средством нижнего уровня для передачи сообщений. Их НЕ следует использовать, если Вы не представляете хорошо, что делаете.
Параметр '-pkt.size=LENGTH' позволяет выбирать длину сообщения, при которой ADI переключается с короткого на длинный формат сообщения. LENGTH должна быть положительной.
Параметр '-adi.collective' позволяет ADI обеспечивать некоторые коллективные операции в добавок к базисным операциям типа «от точки к точке». В настоящее время в большинстве систем этот параметр не поддерживается (игнорируется), а на остальных хорошо не проверен.
Пример конфигурации для исполнения на sun4 под SunOS устройства ch.p4 с установкой каталога, равного текущему:
./configure –with-device=ch.p4 –with-arch=sun4
make
Известные устройства: ch.nx (собственные вызовы Intel NX ), ch.mpl (собственные вызовы IBM EUI или MPL calls), ch.p4 (p4) globus2 (Globus: globus.io/vMPI)
ch.meiko (для Meiko CS2, используют совместные библиотеки NX), ch.shmem (для систем совместного использования памяти, таких как SMPs), ch.lfshmem (для систем с совместной памятью, таких как SMP; использует свободные от блокировок (lock-free) буфера сообщений), 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 на платформах Intel ) hpux (HP UX) sppux (SPP UX) rs6000 (AIX для IBM RS6000) sgi (Silicon Graphics IRIX 4.x, 5.x or 6.x) sgi5 (Silicon Graphics IRIX 5.x on R4400's, для MESHINE) IRIX (синоним для sgi) IRIX32 (IRIX с 32bit объектами –32) IRIXN32 (IRIX with –n32) IRIX64 (IRIX с 64bit объектами) 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) ksr (Kendall Square KSR1 и KSR2) EWS.UX.V (NEC EWS4800/360AD Series workstation. Не проверены.) UXPM (UXP/M. Untested.) uxpv (uxp/v. Не проверены.) SX.4.float0
(NEC SX-4; Формат с плав. запятой float0
Соответствующие стандарту IEEE 754. C: sizeof (int) = 4; sizeof (float) = 4 FORTRAN: sizeof (INTEGER) = 4; sizeof (REAL) = 4)
SX.4.float1 (NEC SX-4; Формат с плав. запятой float1 IBM floating point format. C: sizeof (int) = 4; sizeof (float) = 4 FORTRAN: sizeof (INTEGER) = 4; sizeof (REAL) = 4) SX.4.float2 (NEC SX-4; Формат с плав. запятой float2 CRAY формат с плав. запятой. C: sizeof (int) = 4; sizeof (float) = 8 FORTRAN: sizeof (INTEGER) = 8; sizeof (REAL) = 8) !!! ПРЕДУПРЕЖДЕНИЕ !!! Эта версия не будет работать вместе с подпрограммами FORTRAN. sizeof (INTEGER) != sizeof (int) SX.4.float2.int64 (NEC SX-4; Floating point format float2 and 64-bit int's) C: 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, чтобы задействовать такие устройства. По умолчанию они задействованы. Остальные могут быть опознаны. Параметры, допустимые в '-mpe.opts=' :
****** Параметры, доступные в in mpe/configure –enable-echo – Включает сильное эхо. По умолчанию enable=no. –enable-strict – Включает строгое тестирование компиляции при использовании gcc –enable-mpe.graphics – строит часть X11 для графических подпрограмм MPE. Если не задействован, то такие подпрограммы НЕ будут строиться; это предназначается для систем, которые либо не имеют X11 include файлов, либо не поддерживают графики X11. По умолчанию enable=yes.» –enable-mpedbg – Задействует аргумент –mpedbg в командных строках (например, ошибки могут запустить x-терминал отладчика). Работает только в некоторых системах раб. станций, используемых с MPICH. По умолчанию enable=yes –enable-g – Включает и выключает флажки диагностических отладочных сообщений в SLOG-API коде МРЕ. По умолчанию enable=no. –enable-f77 – Компилировать подпрограммы, требующие компилятор Fortran. При конфигурации MPICH, конфигурация выберет в каталоге MPICH верхнего уровня нужные значения. По умолчанию enable=yes. –enable-f2cmpilib – Указывает, будет ли этот MPE-строитель делать свою собственную охватывающую библиотеку от Fortran до C MPI.
Эта библиотека нужна для профилирования кода Fortran на Non-MPICH платформе. По умолчанию enable=yes –enable-mpich – Указывает, будет ли эта MPE построена как часть построения MPICH. По умолчанию enable=no. –enable-checkMPI – Включить/выключить связывающий тест для файлов MPI include, библиотек MPI и компилятора MPI.CC. По умолчанию enable=yes. –enable-checkMPIwtime – Включить/выключить связывающий test для MPI.Wtime(). По умолчанию enable=no. –with-mpelibname=MPE.LIBNAME – Подставить имя библиотеки MPE вместо используемого по умолчанию 'mpe'. Например, если MPE.LIBNAME='mpe.new', то генерируемые библиотеки будут libmpe.new.a, liblmpe.new.a, libtmpe.new.a и libampe.new.a. –with-flib.path.leader=FLIB.PATH.LEADER – Этот параметр показывает, как специфицировать путь к библиотеке Fortran. –with-cflags=MPE.CFLAGS – дает дополнительные MPE CFLAGS компилятору CC. –with-fflags=MPE.FFLAGS – дает дополнительные MPE FFLAGS компилятору Fortran. –enable-broken-procnull – Обрабатывает реализацию MPI с помощью обработчика дефектов для MPI.PROC.NULL. –enable-build.include – Включает/выключает создание файлов include. По умолчанию enable=yes. Выключение этого параметра приведет Make-файлы в contrib/* в состояние not usable. –with-mpicc=MPI.CC – Cи-компилятор для компиляции программ MPI и создания параллельно исполнимых, например, mpcc для IBM MPI. –with-mpif77=MPI.F77 – Компилятор F77 используется для параллельно исполнимых, mpxlf для IBM MPI. –with-mpiinc=MPI.INC – флажок include компилятора с префиксом –I, используется в реализации MPI обычно для указания, где помещаются mpi.h и mpif.h, например, –I/pkgs/MPI/include. –with-mpilibs=MPI.LIBS – компиляторные флажки полной библиотеки с префиксом –L для пути к библиотеке и префиксом –l для имени библиотек в реализации MPI, обычно указывают, где расположены библиотеки MPI. Например,
-L/pkgs/MPI/lib –lpmpich –lmpich –with-f2cmpilibs=F2CMPI.LIBS – компиляторные библиотечные флажки для Fortran to C MPI охватывающей библиотеки. Употребление этого параметра исключает построение Fortran to C MPI внутренней библиотеки MPEl. –disable-f2cmpilib. Эта библиотека требуется для профилирования MPI Fortran программ. Например, –lfmpich, когда MPE строится с MPICH. –with-x использовать систему X Window. –enable-viewers – Задействовать построение всех регистрационных вьюеров. По умолчанию enable=yes.
****** Параметры, доступные при mpe/slog.api/configure –enable-strict – Включает строгое тестирование компиляции при использовании gcc. –with-cc=SLOG.CC – указывает предпочтительный компилятор CC compiler, например, –with-cc=xlc. Это подавит переменную окружения CC. –with-cflags=SLOG.CFLAGS – передает дополнительные CFLAGS компилятору CC, такие как флажки оптимизации или специальные, зависящие от машины. Например,
-64 для платформ IRIX64. –enable-g – включить/выключить отладочные и диагностические коды, по умолчанию disabled. –enable-build.include – включает/выключает построение файлов include.
-enable-build.man – включает/выключает построение файлов man files. –enable-build.html – вкл/выкл построение файлов html.
****** Параметры, доступные при mpe/viewers/configure –enable-upshot – Строить upshot, который представляет вьюер ALOG, если он имеется. По умолчанию enable=yes. –enable-nupshot – Строить nupshot, который представляет вьюер ALOG, если он имеется. По умолчанию enable=yes. –enable-jumpshot2 – Строить jumpshot-2, который есть вьюер CLOG, если он существует. По умолчанию enable=yes. –enable-jumpshot3 – Строить jumpshot-3 – SLOG, если он имеется. По умолчанию enable=yes.
****** Параметры, доступные при mpe/viewers/jumpshot-2/configure –enable-echo – Включить сильное эхо. По умолчанию enable=no. –enable-softerror – Включить мягкую ошибку, т.е. вместо выдачи MSG.ERROR использовать MSG.WARN + exit 0. По умолчанию enable=no. –enable-g – Включить отладочные флажки, –g и использовать jdb для исполнения GUI. По умолчанию enable=no. –enable-checkversion – Включить проверочный код версии Java. Исключение этого параметра означает, что пользователю необходимо вручную устанавливать JAVA.LIBS и SWING.LIBS. По умолчанию enable=yes. –with-java=JAVA.HOME – Путь к каталогу верхнего уровня установки Java. Если этот параметр отсутствует, конфигурация будет пытаться найти Java для Вас. –with-jflags=JFLAGS – задает флажки компилятору java. Например, оптимизационные, –O, для компилятора Java.
****** Параметры, доступные в mpe/viewers/jumpshot-3/configure –enable-echo – Включить сильное эхо. По умолчанию enable=no. –enable-softerror – Включить мягкую ошибку, т.е. вместо MSG.ERROR выдавать MSG.WARN + exit 0. По умолчанию enable=no. –enable-g – Включить отладочные флажки, –g и использовать jdb для выполнения GUI. По умолчанию enable=no. –enable-checkversion – задействовать версию отладочного кода Java. Отключение этого параметра означает, что пользователю нужно устанавливать JAVA.LIBS и SWING.LIBS вручную. По умолчанию enable=yes. –with-java=JAVA.HOME – Путь к каталогу верхнего уровня установки Java. Если этот параметр не задан, конфигурация будет пытаться найти Java для Вас. –with-jflags=JFLAGS – устанавливает флажки компилятора Java, например, оптимизационные флажки, –O, для компилятора Java.
****** Параметры, доступные в mpe/viewers/upshot/configure –enable-echo – включить сильное эхо. По умолчанию enable=no.
-enable-softerror – Включить мягкую ошибку, т.е. вместо MSG.ERROR выдавать MSG.WARN + exit 0. По умолчанию enable=no. –with-tcldir=tcldir –Путь к каталогу tcl. Предполагается, что желаемая оболочка находится в «$tcldir/bin/wish. –with-tkdir=tkdir – Путь к каталогу tk. Желаемая оболочка предполагается в «$tkdir/bin/wish. –with-wish=wishloc – Путь к желаемой выполнимой tcl/tk. Если параметр не задан, конфигурация будет пытаться найти для Вас wish.
Нормально Вам следует употреблять конфигурацию с как можно меньшим числом
аргументов.
Например, устанавливая Cи-компилятор с –cc=xxx, можете
потребовать также установку –cflags=yyy; конфигурация будет (обычно) выбирать
и компилятор и флажки нужным образом. Если вы опустите оба аргумента,
конфигурация обычно догадывается о правильной архитектуре (arch), если Вы не
находитесь в кросс компиляционном состоянии, и обычно сама избирает также нужные
устройства (device). Там, где TCP/IP служит подходящим механизмом для
коммуникаций, по умолчанию выбирается устройство TCP (ch.p4).
mpich реализуется с помощью ADI (спецификации абстрактных устройств), описанной в 7. В некоторых окружениях такое абстрактное устройство конфигурируется в одно из устройств родной коммуникационной системы машины. Это делается с помощью аргумента конфигурации device. Для остального окружения родовое устройство коммуникации конструируется использованием p4 1, 2 и оно используется для конкретизации ADI. Используйте в таких случаях в качестве устройства ch.p4.
ARCH.TYPE определяет род процессора, который будет использован для компиляции. Возможные типы перечислены выше. Для IBM SP архитектурный тип есть rs6000. Если тип не указан, конфигурация будет пытаться определить его.
Некоторые машины имеют кратные коммуникационные параметры, указываемые как аргумент в сомм. В настоящее время эту роль играет ch.p4. При выборе –comm=shared строится версия с устройством ch.p4, допускающим использование и совместной памяти и IP/TCP. Это в частности полезно в кластерах с симметричными мультипроцессорами.
Сейчас доступно новое устройство Globus2 4, 6, основанное на Globusrun-time system 5. Подобно ch.p4, устройство Globus2 может использовать
метод мультикоммуникации на некоторых платформах. Например, двоичный IBM SP
может передавать по протоколу IBM's MPI или TCP в зависимости от того, с
каким узлом он связывается. См. детали в http://www.globus.org.
Некоторые примеры заказа конфигураций показаны ниже. В большинстве случаев строятся также библиотеки mpe (см. Руководство пользователя). Чтобы строить без библиотек mpe, конфигурируют с –without-mpe. Во многих случаях подробные вызовы, приведенные ниже, определяются по умолчанию и происходят при конфигурации без аргументов вообще. То-есть, хорошая общая стратегия состоит в том, чтобы попробовать сначала ./configure. Для massively parallel processors (MPPs) и мультипроцессоров: мультипроцессор Cray (не CRAY T3D но, например, 4 processor Cray YMP или
C90) конфигурируйте –with-device=ch.p4 –arch=CRAY HP Exemplar Для HP Exemplar укажите официальную версию HP (ранее Convex). Это основывается на MPICH, но для лучшей производительности используется Exemplar. Если по какой-то причине Вы хотите использовать на НР версию MPICH с совместной памятью, используйте configure –with-device=ch.shmem –arch=hpux Intel Paragon configure –with-device=ch.nx –arch=paragon IBM SP (использует для коммуникаций высоко производительные переключатели) configure –with-device=ch.mpl –arch=rs6000 для мультипроцессоров SGI, таких как Power Challenge and Origin 2000. Собственные МPI для SGI специально приспособлены для этих машин. Если Вы хотите использовать MPICH, то configure –with-device=ch.shmem
Конфигурация пытается определить количество процессоров, которые доступны; Вы можете подавить это, установив переменную PROCESSOR.COUNT перед запуском конфигурации. Альтернативно Вы можете отредактировать файл `mpich/mpid/ch.shmem/shdef.h', указав максимальное количество процессоров и память, которую можно использовать для коммуникационных сообщений через совместную память. Если нужно сгенерировать некоторую версию, которая соответствует –32, –n32, или –64 compiler/linker параметрам на SGI, то используйте архитектуры IRIX32, IRIXN32 или IRIX64 соответственно вместо SGI. Специально для R10000 или R12000 SGI используйте :
./configure –arch=IRIX32
./configure –arch=IRIXN32
./configure –arch=IRIX64
Если нужно указать специальные параметры компилятора, они должны фигурировать в значениях параметров –cc и –fc:
configure –arch=IRIX32
-cc="cc –32" –fc="f77 –32" –opt=»-O2» –with-device=ch.shmem configure –arch=IRIXN32 –cc="cc –n32 –mips4 –r10000" –fc="f77 –n32 –mips4 –r10000» –opt=»-O2" –with-device=ch.shmem
configure –arch=IRIX64 «
-cc="cc –64 –mips4 –r10000» « –fc="f77 –64 –mips4 –r10000» « –opt=»-O2" » –with-device=ch.shmem
(Уровень оптимизации устанавливается по выбору; –O2 используется некоторыми пользователями. Опасайтесь агрессивной оптимизации, в частности в коде `mpid/ch.shmem'.) См. комментарии в SGI рабочих станций для различных 32 и 64-битовых вариантов.
В начало страницы
Хотя параметры, установленные по умолчанию, обычно являются адекватными,
рекомендации этого раздела могут помочь приготовить mpich, которая будет лучше
использовать особенности упомянутых систем.
Compaq/DEC Alpha. Если все ваши рабочие станции – из Compaq/DEC, Вы можете захотеть использовать собственную MPI системы Compaq/DEC. Если Вы используете mpich, то для полного использования преимуществ ANSI C Вы можете добавить –cflags=»-std». Для строгих ANSI C используйте –cflags=»-std1».
FreeBSD. Для сетей PC с версией FreeBSD Unix конфигурируйте: –with-device=ch.p4 –arch=freebsd.
Fujitsu. Для сетей Fujitsu M780s, использующих UXP/M, подходят следующие параметры: setenv FC frt configure –arch=UXPM –with-device=ch.p4 –fflags=»-Oe, –Uep –Eml –Aabe» « –mpe –mpedbg –prefix=/usr/local/mpi « –tcldir=/usr/local –tkdir=/usr/local –wish=/usr/local/bin/wish
Устройства Globus2. Перед конфигурированием для устройства globus2 следует предварительно установить версию Globus. Необходимо знать каталог, где установлен Globus (например, /usr/local/globus). Укажите его в переменной окружения GLOBUS.INSTALL.PATH, например, setenv GLOBUS.INSTALL.PATH /usr/local/globus. При конфигурировании для устройства Globus2 можно указать одну из разновидностей (flavors) для Globus, (например, mpi, debug или nodebug, threads, 32– или 64-bit, и т.д.). Чтобы увидеть полный список всех разновидностей Globus ( не все из них могут быть установлены на Вашей машине) (not all may be installed on your machine), воспользуйтесь $GLOBUS.INSTALL.PATH/bin/globus-development-path –help Разновидности, доступные Вам (т.е. установленные на Вашем экземпляре машины)
перечислены как каталоги в $GLOBUS.INSTALL.PATH/development. Например,
установка Globus на раб. станции Solaris может иметь следующие разновидности: the following flavors:
(см. http://www.globus.org с инструкциями по приобретению и установке Globus)
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 –device=globus2:-dir=$GLOBUS.INSTALL.PATH/development/
sparc-sun-solaris2.7.nothreads.standard.debug
Можно указать каталог и неявно:
configure –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 не многопоточно). Нужно выбирать прошитую (threaded) разновидность только если Вы собираетесь связывать ваше применение MPI с другими модулями, требующими прошитую версию Globus (например, вы записали библиотеку, которая использует Nexus, который требует прошитых обработчиков). Не нужно выбирать прошитую версию Globus только потому, что применение MPI многопоточно (multithreaded).
Когда Globus разрабатывался, автоматически генерировался специальный Make-файл как раз для mpich. Конфигурация mpich использует этот файл, когда конфигурирует для устройства globus2. Этот файл виртуально содержит всю информацию, нужную при конфигурации (включая пути к каталогам, специальные библиотеки, имена компиляторов с Cи и Fortran, редакторов связей, и т.д.).
HP HPUX. Для сетей HP, включающих библиотеки mpe, которые не содержат графические подпрограммы для MPE X, конфигурируйте
-with-device=ch.p4 –arch=hpux –mpe –no.mpegraphics IBM RS6000
Чтобы получить все преимущества от ANSI C, Вы можете добавить –cflags=»-qlanglvl=ansi». В настоящее время mpich еще не проверен с 64 bit-режимом на рабочих станциях RS6000; предыдущие версии mpich, при использовании устройств ch mpl или ch p4, имели проблемы с 64-bit AIX (mpich работает с другими 64-bit операционными системами.)
LINUX. Устройство ch p4 выбирается по умолчанию. Поддерживается совместное использование памяти при –comm=shared, как и в mpich version 1.2.0 под Unix System V IPC's. Употребление mmap не поддерживается, поскольку LINUX не поддерживает употребление MAP.SHARED вместе с MAP.ANONYMOUS, потому что система V IPC's не может быть (по своей природе) надежно освобожденной. Это будет учтено в следующем выпуске mpich,
и тогда можно будет пользоваться командой cleanipcs.
NEC SX-4. Для векторного мультипроцессора NEC SX-4 с совместной памятью используйте конфигурацию с –with-device=ch.lfshmem для получения с устройства с свободной от блокировок совместной памятью. описанного в 10. Отметим, что это устройство требует специального кода на ассемблере и/или специальных параметров компилятора для надежной работы.
Для SGI конфигурации нужно –with-device=ch.p4. Некоторые системы SGI поддерживают как 32 так и 64-bit указатели (адреса). Mpich использует архитектуру IRIX для обращения к 32-bit системам и IRIX64 для 64-bit систем. Mpich будет пытаться определить нужную архитектуру автоматически, но Вы можете форсировать выбор, указав архитектуру параметром конфигурации –arch=IRIX, –arch=IRIXN32, –arch=IRIX32, или –arch=IRIX64. Три последние из них соответствуют параметрам компилятора SGI –n32, –32 и –64. Не забудьте указать следующие флажки компилятору и редактору связей: –cc ='cc –64' –fc='f77 –64' …. Для мультипроцессора SGI (такого как Onyx, Challenge, или Power Challenge), использующего совместную память для быстрой передачи сообщений, указывайте –with-device=ch.p4 –comm=shared. Используйте –arch=IRIX для форсирования 32-bit указателей и –arch=IRIX64 для 64-bit указателей.
SGI Origin. На машинах SGI лучше дать конфигурации самой выбирать архитектуру. Не забудьте установить флажки для компилятора и компоновщика так: –cc='cc –64' –fc='f77 –64' ….
Sun SunOS. Конфигурируйте –with-device=ch.p4 –arch=sun4 Mpich теперь требует компилятор поддерживает прототипы ANSI C. Старый Си-компилятор для SunOS не поддерживает прототипы. Если Вам нужен компилятор, который поддерживает прототипы, рекомендуем компилятор GNU C (gcc).
Sun Solaris конфигурируйте –with-device=ch.p4 –arch=solaris DEC Alpha конфигурируйте –with-device=ch.p4 –arch=alpha
Mpich можно исполнять на однородных сетях раб. станций различных родов. Для простых наборов станций можно употреблять команду mpirun; более сложные наборы однородных машин требуют p4 «procgroup file» (для устройств ch.p4) или «RSL file» (для устройств globus2). Формат «procgroup»-файла описан в разделе 6.1. Формат «RSL files» можно найти в документации к Globus по http://www.globus.org на языке Resource Specification Language.
Устройство ch.p4 легче всего использовать, когда все раб. станции используют общую файловую систему. Исполнимые программы MPI должны быть помещены в совместную файловую систему. Но совместная файловая системы не является необходимой. Используя файл «procgroup» file, можно указать для каждой раб. станции отдельное расположение.
В начало страницы
By default, конфигурация определяет mpich для компиляции без оптимизации и с дополнительным кодом, помогающим в идентификации проблем и поведения реализации mpich. Если mpich прошел тесты (см. раздел 8), Вы можете пожелать перестроить mpich без отладочного кода. Это приведет к значительному сокращению библиотек и немного более быстро работающему коду. Чтобы сделать это, добавьте параметр –opt=-O –disable-devdebug к строке конфигурации и повторите конфигурацию и make. Вы можете также включить много оптимизирующих параметров, заключая из в кавычки:
-opt=»-O –qarch=pwr2». Будьте очень осторожны при употреблении компиляторной оптимизации при компиляции устройств ch.shmem, ch.lfshmem, или ch.p4 (когда используется совместная память)
В начало страницы
Для того, чтобы проверять очереди сообщений от TotalView, Вы должны конфигурировать mpich с флажком `-enable-debug'. И только если Вы отлаживаете саму mpich, обязательно конфигурируйте также с флажком `-opt=-g'. (Это не нужно для отладки пользовательского кода с помощью TotalView и просмотра очередей MPI). Ни то, ни другое не определяется по умолчанию. Конечно, ваши прикладные программы должны компилироваться компоноваться с `-g'.
В начало страницы
Mpich поддерживает как Fortran 77, так и Fortran 90. Так как mpich реализована
на Cи, использование mpich из Fortran может иногда требовать специальных
параметров. В этом разделе рассматриваются некоторые связанные с этим
вопросы.
В начало страницы
Программа конфигурации должна обнаружить, что этого компилятора нет.
Вы можете принудить конфигурацию не строить написанные на Fortran части
кода параметром –disable-f77. В этом случае только Си-программы будут
строиться и проверяться.
В начало страницы
Во время конфигурации может быть указано несколько специальных аргументов
для F90. См. выход конфигурации –help. В частности используя компилятор
NAG Fortran 90, Вы должны указать –f90nag.
В начало страницы
Выбор Fortran 90 с Fortran 77 можно делать только в том случае, когда оба
компилятора совместимы, поддерживают одинаковые типы данных и соглашения о
вызовах. В частности, если компилятор Fortran 90 поддерживает 8-битовый
целый тип, компилятор Fortran 77 должен поддерживать integer*8 (это
необходимо для MPI-IO подпрограмм для значений MPI.OFFSET.KIND). Кроме
того, оба компилятора должны поддерживать те же самые функции доступа к
командной строке и коды этих команд должны располагаться в одной и той же
библиотеке. Если компиляторы не совместимы, Вы должны выбрать компилятор
Fortran 90 как Fortran 77 и Fortran 90 (рассчитывая на совместимость вверх)
или построить две разных конфигурации mpich.
Например:
configure –fc=f90 –f90=f90 означает использование f90 как для Fortran 77,
так и Fortran 90 программ. Во многих системах это будет работать хорошо.
Если имеются причины для отдельных построений для Fortran 90 и Fortran 77,
выполните следующие команды (where mpich должен быть установлен в
каталоге `/usr/local'):
configure –fc=f77 –disable-f90 –prefix=/usr/local/mpich-1.2/f77-nof90
make
make install
configure –fc=f90 –f90=f90 –prefix=/usr/local/mpich-1.2/f90 make make install Эти цепочки команд построят и установят две версии mpich.
В начало страницы
Если конфигурация найдет компилятор Fortran 90 compiler, по умолчанию mpich
будет пытаться создать модуль Fortran 90. Фактически будут созданы две
версии одного модуля mpi: один будет содержать только подпрограммы MPI,
которые не принимают «альтернативные» аргументы, и другой, который, их
принимает. Альтернативный аргумент есть аргумент, который может иметь
данные любого типа; обычно это буфера в подпрограммах коммуникации MPI,
таких как MPI.Send и MPI.Recv.
Эти разные модули доступны по параметрам –nochoice и –choice соответственно для mpif90. Альтернативная версия модуля допускает небольшое количество типов данных (числовые скаляры и числовые одно– и двумерные массивы). Это – экспериментальное свойство; сообщите в mpi-bugs@mcs.anl.gov, если столкнетесь с проблемами.
Резон для приготовления двух версий модуля MPI состоит в том, что очень
трудно создать полностью корректный модуль, который содержит все функции с
альтернативными аргументами. На многих системах размер модулей Fortran 90,
использующих подпрограммы с альтернативными аргументами, больше чем полная
Си-версия библиотеки MPI. Если Вы не заинтересованы в модуле Fortran 90 MPI,
или хотите держать установленную версию маленькой mpich, Вы можете исключить
создание модуля Fortran 90 MPI конфигурацией с –disable-f90modules.
В начало страницы
Про компилятор Absoft можно сказать, что он генерирует внешние имена, которые
указаны большими, маленькими и маленькими подчеркнутыми буквами (обычное
дело для других компиляторов Fortran в Unix), или использует смешанные
регистры (расширение Fortran с одним регистром). Каждая из этих альтернатив
требует отдельной конфигурации mpich и шага построения (make). Mpich был
проверен в режиме, когда имена генерировались в одном регистре; этот случай
и поддерживается, так как только он предусматривает common и необходимые
для mpich расширения, такие как getarg и iargc. По умолчанию mpich насилует
компилятор Absoft, в соответствии с большинством компиляторов Fortran для
Unix. Mpich находит подходящие версии getarg и iargc для этого случая.
Так как примеры и наборы тестов для компилятора с Фортрана безразличны к
буквенному регистру, то библиотеки Фортраны, приготовленные mpich, работают
только с исходным кодом, в котором используется только один регистр (или
верхний или нижний) для всех обращений к MPI. Кроме того, вам может оказаться
необходимым пользоваться конвенцией –N90, если употребляете буквенные данные,
потому что интерфейс Фортрана ожидает это почти во всех системах Unix Fortran
(кроме Cray UNICOS). Если Вы строите совместные библиотеки, Вы должны очистить
переменную обстановки FC.SHARED.OPT.
Ранние версии компилятора Absoft не могли обрабатывать кратные параметры –I. Если у вас будут с ним неприятности, возьмите новую версию Absoft.
В начало страницы
В некоторых установках используются несколько различных компиляторов с Fortran,
использующих один и тот же тип данных Fortran, и которые могут использоваться
с одинаковыми библиотеками Cи.
Эти компиляторы могут избирать разные отображения фортрановских имен (например,
внешний формат имен, передаваемых компоновщику) и употреблять различные способы
доступа к командной строке. В этом разделе говорится, как конфигурировать
mpich для поддержки кратных компиляторов с Фортрана. Если это не удается,
лучше всего построить отдельные установки mpich для каждого компилятора.
Первый шаг состоит в конфигурации mpich с опцией –with-flibname. Например, если один из компиляторов есть g77, используйте
./configure –fc=g77 –with-flibname=mpich-g77 … другие опции …
После выстраивания, тестирования и установки этой версии mpich Вы можете конфигурировать поддержку для дополнительных компиляторов с Фортрана следующим образом:
1. Заменить каталог на `src/fortran' 2. Выполнить
setenv F77 pgf77 ./configure –with-mpichconfig –with-flibname=mpich-pgf77 make make install-alt
Для установки конкретного Фортран-компилятора или укажите его в командной строке на mpif77 в виде –config=name option (например, –config=pgf77) или выбором соответствующей команды mpif77 (например, mpif77-pgf77).
В начало страницы
При построении mpich для однородного набора рабочих станций можно производить
конфигурацию с опцией –no.short.longs. Это указывает MPICH, что не нужно
поддерживать тип Си long double. Это может улучшить производительность систем,
которые имеют одну и ту же длину для всех остальных (некоторые Intel x86
имеют 12 байтов (80 битов) для long doublе; многие другие машины используют
или 8 или 16 байтов для long double).
В начало страницы
Если Вы используете rsh с устройствами ch.p4, Вам может потребоваться
настройка Вашей машины для использования rsh. Вы можете это сделать только
если Вы являетесь системным администратором и знаете, что Вы делаете, или если
Вы используете изолированную сеть. Например, если вы используете LINUX
на группе компьютеров дома или на работе и эти машины не связаны с широкой
сетью. Если же какая-то машина привязана к другой сети, сговоритесь с
администратором этой сети о политике использования rsh. Как альтернативу,
рассмотрите использование ssh (раздел 4.7) или безопасный сервер (раздел 6.1.2).
Дальше поясняется, как установить одну машин так, что она может использовать rsh для себя для запуска процессов. Чтобы установить rsh, обязательно нужно иметь файл `/etc/hosts.equiv', который содержит по крайней мере localhost your.machine.name, где your.machine.name есть имя, которое Вы дали вашей машине в `/etc/hosts'. Вы должны также проверить, что файлы `/etc/hosts.allow' и `/etc/hosts.deny' пусты.
Если Вы используете машину, не привязанную к сети (например, laptop во время путешествия), может потребоваться изменение сетевых установок (network settings). В некоторыз версиях Linux можно использовать netcfg и установить Hostname в localhost и Domain в localdomain.
В начало страницы
Нормальный механизм запуска процессов для устройства ch p4 в сети есь rsh.
Использование rsh требует установки некоторых допусков на участвующих
машинах. В некоторых сетях нежелательно устанавливать такие допуски.
Простейшей альтернативой для использования rsh служит ssh (secure shell,
т.е. безопасная оболочка). Она может использоваться для безопасности
распределенных вычислений. Она требует описанной ниже установки, но
пользоваться ею очень просто. Вот шаги, которые нужно проделать, чтобы ssh
правильно работала под mpich.
1. Проверьте, что ssh установлена в вашей сети. Если это не так, ее можно получить из `http://www.ssh.fi/sshprotocols2/index.html'.
2. Создайте Ваш authentication key (код аутентификации) посредством ssh-keygen Это создаст пару частный/общий код. Частный код поступит в ~/.ssh/identity, а общий в ~/.ssh/identity.pub
3. Авторизованный доступ. Поместите Ваш общий код ( ключ) в ваш ~/.ssh/authorized файл. Все ключи, перечисленные в этом файле, разрешают доступ. (пусть это ~/.ssh/identity.pub и ~/.ssh/authorized.keys)
Если машина, с которой Вы связываетесь, не использует общую файловую систему, тогда ~/.ssh/identity.pub должен быть скопирован в ~/.ssh/authorized – ключевой файл машины, с которой Вы будете связаны. ssh будет настаивать, чтобы общие ключи имели установку доступа, не разрешающего групповую запись. Поэтому выполните
chmod go-rwx ~/.ssh/authorized.keys
Этот шаг позволит избежать необходимость вводить Ваш пароль каждый раз, когда нужно выполнить команду безопасной оболочки.
4. Для того, чтобы не печатать каждый раз в фразе-пароле, что ssh задействован, необходимо создать ssh-агента и добавить его фразе-паролю:
ssh-agent $SHELL ssh-add
5. Конфигурируйте с –rsh=ssh, так что устройство ch p4 будет использовать
ssh вместо rsh:
configure –rsh=ssh
В случае неприятностей проверьте, что хосты, перечисленные в вашем util/machines/machine.xxxx также перечислены в файле /etc/ssh.known.hosts в вашей сети или в вашем файле ~/.ssh/known.hosts file в основном каталоге. Важно, чтобы /tmp имело установленный допуск 377, с корнем как владельцем, а группа ssh имела флажок –v, который очень полезен для обратного прослеживания неполадок соединений.
В начало страницы
Реализация MPI в настоящее время не является поточно-безопасной. Тем не менее
возможно использовать mpich в поточных приложениях в той степени, в какой все
вызовы производятся по одной жиле. Но могут быть неприятности с сигналами.
Многие поточные пакеты используют такие сигналы как SIGUSR1 и/или SIGUSR2.
По умолчанию устройство ch.p4 использует SIGUSR1. Если Вы используете mpich с
поточным пакетом, который употребляет SIGUSR1, вам необходима реконфигурация
с добавлением аргумента –listenersig=SIGNAL NAME (например, –listenersig=
SIGUSR2, и перестроить mpich.