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

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

Оглавление

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

15. Задачи.

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

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

15.1 Рассмотрение отчетов об ошибках.

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

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

Версию MPICH (e.g., 1.2.1). Результаты исполнения вашей программы с аргументом –mpiversion (e.g., mpirun –np 1 a.out –mpiversion). Результат uname –a для вашей системы. Если работаете на системе SGI, то также и hinv.

Если возникли проблемы со сценарием конфигурации или mpirun, выполните сценарий с аргументом –echo (например, mpirun –echo –np 4 a.out ) Если используете сеть или рабочую станцию, пришлите также выход от bin/tstmachines. Программа tstmachines описана в Руководстве пользователя.

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

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

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

15.2.1 Общее

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

1. Q: пытаясь выполнить конфигурацию, я получил сообщение об ошибке такого типа:

./configure: syntax error at line 20:

`(' unexpected

A: Вы имеете устаревшую версию оболочки Bourne (sh). MPICH требует, чтобы sh-оболочка поддерживала процедуры оболочки; уже много лет это было стандартом для большинства оболочек Bourne. Чтобы исправить это, вы можете (a) получить у своего поставщика обновленную версию или (b) установить одну из менее доступных замен для sh-shell.

2. Q: Конфигурация сообщает, что компилятор неисправен, но с ним нет никаких проблем (проходит без помехи тест, на котором якобы обнаружена ошибка).

A: Может быть, вы используете Bash shell (`/bin/bash') как замену Bourne shell (`/bin/sh'). Нам сообщали, что, по крайней мере под LINUX, Bash неправильно обрабатывает коды возврата в выражениях. Попробуйте пользоваться другой оболочкой, такой как `/bin/ash', на тех системах. Это не поможет на некоторых системах LINUX (все оболочки с дефектами). Нам писали, что следующее будет работать: (a) при конфигурации замените trap 'rm –f confdefs*' 0 на trap 'rm –f confdefs*' 1 (b) после конца конфигурации уберите файл `confdefs.h' вручную.

3. Q: конфигурация выдает ошибку вида checking gnumake… 1: Bad file number

A: Некоторые версии оболочки bash shell неправильно обрабатывают перенаправление выхода. Или исправьте вашу версию bash, или проведите конфигурацию в другой оболочке (такой как /bin/sh). Проверьте, что версия используемой вами sh не служит алиасом для bash. Конфигурация обнаруживает такую ситуацию и выдает ошибку.

4. Q: Конфигурация сообщает, что плавающая запятая не коммутативна! Что мне с этим делать?

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

15.2.2 LINUX

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

1. Q: Шаг конфигурации выдал сообщение: проверяю, работает ли компилятор f77 … никакой Fortran-компилятор не дает ненулевой код возврата.

Выход из теста был

f2ctmp.conftest.f:

MAIN main:

A: Вероятная причина – проблемы с Fortran-компилятором в LINUX. Команда f77 в LINUX часто служит сценарием оболочки, который использует программу f2c для преобразования программ на Fortran в программу на Си, а затем компилирует ее на компиляторе Cи. Во многих версиях LINUX этот сценарий содержит ошибку, которая приводит к ненулевому коду возврата при успешной компиляции. Для решения проблемы нужно исправить сценарий f77. Если вы можете сами отредактировать сценарий, измените последние 3 строки из

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. Q: Тест link отказывает в LINUX с сообщением:

overtake.o(.text+0x59): undefined reference to `MPI.COMM.WORLD'

overtake.o(.text+0x81):undefined reference to `MPI.COMM.WORLD'

...

A: Вероятно, причина в проблемах с Fortran-компилятором в LINUX. В некоторых ранних версиях LINUX команда f77 в LINUX часто служит сценарием оболочки, который использует программу f2c для преобразования Fortran-программ в C и затем компилирует их на компиляторе C. Во многих версиях LINUX этот сценарий содержит ошибку, которая приводит к ненулевому коду возврата даже при успешной компиляции. Для решения проблемы нужно исправить сценарий f77 script. Если вы можете самостоятельно отредактировать сценарий, замените последние 3 строки из

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

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

15.3.1 Общее

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

1. Q: Выполняя make для mpich, я столкнулся с ошибкой:

ar: write error: No such file or directory *** Error code 1

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

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

2. Q: Выполняя make для mpich, я получил ошибки при выполнении ranlib.

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

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

3. Q: При прогоне теста на компоновку он не прошел, по-видимому не были найдены подпрограммы MPI:

/homes/them/burgess/mpich/IRIX32/ch.p4/bin/mpicc «

-o overtake overtake.o test.o ld: WARNING 126: The archive «

/homes/them/burgess/mpich/IRIX32/ch.p4/lib/libmpi.a «

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» – « 1st referenced by overtake.o. ld: ERROR 33: Unresolved text symbol «MPI.Send» – « 1st referenced by overtake.o. …

A: Проверьте, что программы ar и ranlib совместимы. Один из узлов установил Gnu ranlib так, что она не может быт использована программой ar, с которой несовместима. Если это так, попробуйте конфигурировать с параметром –noranlib. option to configure if this

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

1. Q: При постройке mpiche, 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». И т.д.

A: Проверьте, имеет ли cc алиасы (в оболочке C сделайте алиас cc). Если это так, или уберите алиасы или установите переменную окружения CC на полный путь к компилятору. Чтобы получить полный путь, выполните:

unalias cc setenv CC `which cc`

а потом переконфигурируйте.

2. Q: При построении устройства 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.

A: Это связано с описаниями обработчика сигналов. Не обращайте на это внимания.

15.3.3 Cray T3D

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

1. Q: При компоновке я получил:

mppldr-133 cf77: CAUTION

Unsatisfied external references have been encountered.

Unsatisfied external references Entry name Modules referencing entry

GETARG (equivalenced to $USX1)

MPIR.GETARG

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

В случае систем HP-UX версии 10 вы можете попробовать конфигурацию с –fflags=+U77 и перестроить MPICH. Теперь это делается по умолчанию. Mpich теперь старается определить правильные имена подпрограмм доступа к командной строке. Если вы увидите, что mpich ошибается в определении имен, пошлите сообщение о дефекте в mpi-bugs@mcs.anl.gov.

15.3.4 Intel i860

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

1. Q: Тест компоновки на Intel i860 отказал с сообщением

icc –o overtake overtake.o test.o –L/mpich/lib/intelnx/ –lmpi –lnode /usr/ipsc/XDEV/i860/bin/ld860: Error: undefined symbol '.MPI.Keyval.create' /usr/ipsc/XDEV/i860/bin/ld860: Fatal: no output file created

A: Вероятно, вы строили MPICH на старом 386, использующем вариант System V. Эта версия Unix имеет очень жесткие ограничения на длину файловых имен (более жесткие, чем мы можем согласиться). Проблема в том, что имя файла `mpich/src/context/keyval.create.c' слишком длинно для этой системы и не было нужным образом архивировано. Вам лучше всего строить MPICH на другой, более современной системе (например, Sun с SunOS или Solaris).

15.3.5 Intel Paragon

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

1. Q: Когда я пытался строить на Paragon, я получил следующие сообщения:

PGC-W-0115-Duplicate standard type (init.c: 576)

PGC/Paragon Paragon Rel R5.0: compilation completed with warnings

PGC-W-0115-Duplicate standard type (init.c: 576)

PGC/Paragon Paragon Rel R5.0: compilation completed with warnings

A: Это происходит потому, что компилятор не обрабатывает данные типа long long, но и не отбрасывает их. От этого нет никакого вреда.

2. Q: Я получаю ошибки при компиляции или исполнении программ на Fortran.

A: Fortran программы требуют абсолютного пути для include-файла `mpif.h', благодаря дефекту в компиляторе if77 (он ищет include-каталоги в ошибочном порядке).

15.3.6 SGI

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

1. Q: Постройка на 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)

A: Нас информировали, что установка переменной окружения SGI.CC на –ansi устранит эту проблему.

2. Q: Постройка на SGI с архитектурой IRIXN32 отказывает с

cc: Warning: –c should not be used with ucode –O3 –o32 «

on a single file; use –j instead to get inter-module optimization.

A: Забавно, но стандартный параметр –c не действует для компиляторов SGI, когда специфицируются –O3 и –n32. Это – «свойство» компилятора SGI, и MPICH никак не может это обойти (иначе чем длинно и с невозможностью переноса переписав все `Makefile'). Единственная возможность для вас – не пользоваться параметром –O3.

15.3.7 LINUX

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

1. Q: Тест компоновки отказывает на LINUX 3.0 с

...

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'

...

A: Нас информировали, что имеется ошибка в сценарии f77 в некоторых версиях LINUX, которая и создает эту проблему. Попробуйте получить или заплатку для сценария f77, или переконфигурируйте с –nof77.

2. Q: Построение ломается для устройства ch.p4 при использовании компилятора Compaq C.

A: Имеется несовместимость с системными файлами include (не MPICH include). Если вы можете изменить `/usr/include/rpc/xdr.h', добавьте следующее около вершины этого файла:

#if defined(..DECC) – defined(..DECCXX)

typedef long int int64.t;

#endif

15.3.8 IBM SP

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

1. Q: Пытаясь компоновать на IBM SP, я получил от mpirun сообщение:

mpCC –o overtake overtake.o test.o \
-L/usr/local/src/Mpi/1.2.0/lib/rs6000/ch.eui –lmpich

ld: 0711-317 ERROR: Undefined symbol: .mp.main

ld: 0711-317 ERROR: Undefined symbol: .mp.environ

ld: 0711-317 ERROR: Undefined symbol: .mpc.bsend …

A: По-видимому ваша реализация IBM не содержит рутин MPL, которые MPICH использует для реализации MPI. Ваша система должна содержать IBM-версию MPI; ее и нужно использовать взамен.

15.3.9 DEC ULTRIX

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

1. Q: При попытке строить, make ломается в самом начале фазы очистки:

amon:MPICH/mpich?make clean

/bin/rm –f *.o *~ nupshot

*** Error code 1

A: Это дефект в оболочке на некоторых системах DEC ULTRIX. Вы в состоянии обойти это с помощью

setenv PROG.ENV SYSTEM.FIVE

Конфигурирование с –make=s5make также может сработать.

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

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

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

15.4.1 Общее

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

1. Q: Тест `pt2pt/structf' не проходит с сообщением

0 – Error in MPI.ADDRESS : Invalid argument: Address of location given to MPI. ADDRESS does not fit in Fortran integer 0 Aborting program!

A: Это не ошибка; это недостаток в определении MPI-1, устраненный в MPI-2. Это показывает, что целые числа в Fortran недостаточны для хранения адреса. Программы MPI, написанные на Fortran, не должны использоваться как адресные функции MPI в этой системе.

2. Q: Тест `env/timers' отказывает с

Timer around sleep(1) did not give 1 second; gave 0.399949

A: Программное обеспечение нижнего уровня, которым пользуется MPICH, по-видимому, пользуется сигналом SIGALRM, отказывая в нем программе пользователя. Это не ошибка (стандарт разрешает системе пользоваться любыми сигналами), хотя и нехорошо.

Одна из систем, использующих SIGALRM, есть программа IBM MPL/POE (устройство ch.mpl) для использования High Performance Switch в параллельных компьютерах IBM SP.

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

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

Работа, описанная в этом отчете, обязана беседам и участию многих лиц. Мы также благодарны тем, кто помогал нам в реализации MPICH, особенно Патрику Bridges и Эдварду Karrels. Приносим благодарности также Натану Doss и Антону Skjellum за ценную помощь в реализации и развитии MPICH. Самые последние значительные добавления сделали Дебби Swider и (для Jumpshot) Омер Zaki. Антони Chan помог с SLOG и Jumpshot-3. Давид Ashton, кто разработал версию Windows NT для mpich, также внес свою долю в mpich. Привязка к C++ принадлежит Andrew Lumsdaine и Jeff Squyres из Notre Dame. Rajeev Thakur из Argonne ответствен за реализацию ROMIO в функциях MPI-2 I/O. Устройство Globus2 принадлежит Nick Karonis из Northern Illinois University и Brian Toonen из Argonne National Laboratory.

Литература

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

 1 Ralph Butler and Ewing Lusk. Руководство пользователя по системе p4

параллельного программирования. Technical Report ANL-92/17, Argonne National Laboratory, October 1992.

 2 Ralph Butler и Ewing Lusk. Мониторы, сообщения и кластеры: система p4параллельного программирования. Parallel Computing, 20:547-564, April 1994.

(А также Argonne National Laboratory Mathematics и Computer Science Division, препринт P362-0493).

 3 IMPI Steering Committee. IMPI – межоперационный интерфейс передачисообщений, 1998. http://impi.nist.gov/IMPI/.

 4 I. Foster, J. Geisler, W. Gropp, N. Karonis, E. Lusk, G. Thiruvathukal,and S. Tuecke. Широкомасштабная реализация Интерфейса Передачи Сообщений.

Parallel Computing, 24(11), 1998.

 5 I. Foster and C. Kesselman. Globus: Метавычислительный инфраструктурныйинструментарий. International Journal of Supercomputing Applications, 11(2):115-128, 1997.

 6 Ian Foster and Nicholas T. Karonis. MPI, приспособленный для сети:передача сообщений в однородных распределенных вычислительных системах.

В Proceedings of SC98. IEEE, November 1999. http://www.supercomp.org/sc98.

 7 William Gropp и Ewing Lusk. Определение абстрактного устройствадля поддержки реализации интерфейса передачи сообщений высокого уровня.

Technical Report MCS-P342-1193, Argonne National Laboratory, 1993.

 8 William Gropp и Ewing Lusk. Расширяемые инструменты Unix напараллельных процессорах. В Proceedings of the Scalable High Performance

Computing Conference, pages 56-62. IEEE, 1994.

 9 William Gropp и Ewing Lusk. Руководства пользователя по mpich,переносимой реализации MPI. Technical Report ANL-96/6, Argonne National

Laboratory, 1996. Обновленная версия в ftp://ftp.mcs.anl.gov/pub/mpi/userguide.ps.

 10 William Gropp и Ewing Lusk. Высокопроизводительная реализация MPI навекторном суперкомпьютере с общей памятью. Parallel Computing,

22(11):1513-1526, January 1997.

 11 William Gropp и Ewing Lusk. Воспроизводимые измерения производительныххарактеристик MPI. Technical Report ANL/MCS-P755-0699, Mathematics and

Computer Science Division, Argonne National Laboratory, June 1999.

 12 William Gropp, Ewing Lusk, Nathan Doss и Anthony Skjellum.Высокопроизводительная переносимая реализация стандарта передающего сообщения

интерфейса MPI. Parallel Computing, 22:789-828, 1996.

 13 Virginia Herrarte и Ewing Lusk. Изучение свойств параллельных программс помощью upshot. Technical Report ANL-91/15, Argonne National Laboratory,

Argonne, IL 60439, 1991.

 14 Edward Karrels и Ewing Lusk. Анализ производительности программ MPI.В Jack. Издатели Dongarra and Bernard Tourancheau, Proceedings of the Workshop on

Environments and Tools For Parallel Scientific Computing. SIAM Publications, 1994.

 15 Omer Zaki, Ewing Lusk, William Gropp и Deborah Swider.К масштабируемой визуализации производительности с помощью Jumpshot.

High Performance Computing Applications, 13(2):277-288, осень 1999.

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