О: Если Вы видите что-нибудь подобное
% mpirun -np 2 cpiили
Нет прав доступа.
% mpirun -np 2 cpiпри использовании устройства ch_p4, это возможно означает, что у Вас нет прав на использование rsh для запуска процессов. Для проверки можно использовать скрипт tstmachines. Попробуйте выполнить
сокет: ошибка протокола при настройке линии
tstmachinesЕсли это окончилось неудачей, Вам могут понадобиться либо файлы `.rhosts' или
Если Ваши системные правила позволяют использовать файл `.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 не будет работать в такой ситуации. Зарегистрируйтесь обычным способом и попробуйте еще раз.
О: Если Вы видите что-либо подобное
% mpirun -np 2 cpiэто означает, что Вы не можете запустить удаленную задачу командой удаленной shell на определенной машине, даже если Вы можете сделать это обычным способом. Это может означать, что назначенная машина занята, не имеет свободной памяти или не может создать новый процесс. Страница man для rshd даст Вам подробную информацию. Единственным способом исправить это является просьба к Вашему системному администратору проверить состояние машины, которая выдает это сообщение.
Попробуйте еще раз.
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)).
О: Это означает, что один из Ваших скриптов загрузки (т.е. `.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)).
poll: ошибка протокола во время создания связиО: Вы можете увидеть это сообщение, если Вы пытаетесь запустить слишком много программ MPI за короткий период времени. Например, в Linux при использовании устройства ch_p4 (без безопасного сервера или ssh), mpich может использовать для запуска процессов MPI rsh. В зависимости от определенного дистрибутива Linux и его версии, может быть установлен лимит на минимум 40 процессов в минуту. При запуске набора тестов mpich или запуске коротких параллельных задач через скрипт возможно превышение этого лимита. Чтобы исправить это, Вы можете сделать следующее:
shell stream tcp nowait root /etc/tcpd2 in.rshdна
shell stream tcp nowait.200 root /etc/tcpd2 in.rshd
arch: Файл или каталог не существуетО: Обычно это проблема в Вашем файле `.cshrc'. Попробуйте команду shell
which hostnameЕсли Вы видите тот же самый странный вывод, то Ваша проблема в Вашем файле `.cshrc'. У Вас имеется некоторый код в Вашем файле `.cshrc', который предполагает, что Ваша shell присоединена к терминалу.
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'.
icy% mpirun -np 2 cpi -mpiversionО: Ваша проблема в том, что программа удаленной shell - это не `/usr/lib/rsh'. Попробуйте следующее:
icy: icy: Файл или каталог не существует
which rshВозможно, в Вашем пути `/usr/lib' указан раньше `/usr/ucb' или `/usr/bin'. Это указывает на ``ограниченную'' shell вместо ``удаленной'' shell. Простейшим исправлением является удаление `/usr/lib' из Вашего пути (некоторым людям это нужно); иначе, Вы можете переместить его на место после каталога, содержащего ``удаленную'' shell rsh.
ls /usr/*/rsh
Другим способом будет добавление ссылки на удаленную shell в каталог, более ранний в пути поиска. Например, у меня `/home/gropp/bin/solaris' стоит раньше в пути поиска, тогда я могу использовать здесь
cd /home/gropp/bin/solaris(предполагая, что удаленная shell - это `/usr/bin/rsh').
ln -s /usr/bin/rsh rsh
пробуем обычную rshО: Вы используете версию удаленной shell, которая не поддерживает аргумент -l. Переконфигурируйте mpich с -rshnol и пересоберите. Вы можете почувствовать некоторые неудобства при попытке запуска на системах, где у Вас другое имя пользователя. Вы можете также попробовать использовать ssh.
ld.so: warning: /usr/lib/libc.so.1.8 имеет более раннюю версию,О: Вы пытаетесь работать на машине с устаревшей версией базовой библиотеки С. К сожалению, некоторые производители не выпускают совместимых разделяемых библиотек между мелкими (или исправленными) версиями их программного обеспечения. Вы должны попросить системного администратора привести все машины к одному и тому же уровню установленного программного обеспечения.
хотя ожидалось 9
Временным исправлением, которое Вы можете использовать, является добавление опции времени компоновки, заменяющей динамическую компоновку системных библиотек статической. На некоторых рабочих станциях Sun это опция -Bstatic.
О: Вначале проверьте, работает ли rsh вообще. Например, если у Вас есть рабочие станции w1 и w2, и Вы работаете на w1, попробуйте
rsh w2 trueЭто должно завершиться очень быстро. Если этого не происходит, попробуйте
rsh w1 true(т.е. используйте rsh для запуска на той же системе, где Вы работаете). Если Вы получили
krcmd: No ticket file (tf_util)то в Вашей системе неправильно установлена rsh. Эта проблема наблюдается в некоторых системах FreeBSD. Попросите системного администратора исправить проблему (часто неправильный набор программ rsh/rshd).
rsh: внимание, используется стандартная rsh: невозможно получить данные
аутентификации Kerberos.
больше пользователей, чем очередей сообщенийО: Это означает, что Вы пробуете запустить mpich в одном режиме, а он сконфигурирован в для работы в другом. В частности, Вы определяете в Вашем файле p4 procgroup, что некоторые процессы будут находиться в разделяемой памяти на определенной машине, помещая либо число, большее 0, в первую строку (где оно означает число локальных процессов вместе с оригинальным), либо число, большее 1, в любую ииз следующих строк (где оно указывает общее число процессов, разделяющих память на этой машине). Вы должны либо изменить Ваш файл procgroup, чтобы указать только один процесс в строке, или переконфигурировать mpich с помощью
configure with-device=ch_p4 -comm=sharedчто перенастроит устройство p4 так, чтобы несколько процессов могли разделять память на каждой машине. Причина здесь не только подразумевает то, что в такой конфигурации Вы увидите ожидание занятости на каждой станции, но и что устройство будет переключаться между выбором сокета и проверкой внутренних очередей разделяемой памяти.
Другая причина может состоять в том, что Вы используете библиотеку `-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.
p0_2005: p4_error: fork_p4: fork failed: -1О: Размер исполняемого файла Вашей программы может быть слишком велик. Когда запускается программа для устройства ch_p4 или ch_tcp, она может создавать свою копию для обработки некоторых коммуникационных задач. Из-за способа организации кода, это (хотя и временно) полная копия Вашей оригинальной программы, занимающая то же место. Поэтому, если Ваша программа больше, чем половина всего доступного пространства, Вы получите эту ошибку. В системах SGI Вы можете использовать команду size, чтобы определить размер исполняемого файла и swap -l, чтобы узнать размер доступного пространства. Заметьте, что size возвращает размер в байтах, а swap -l возвращает размер в 512-байтовых блоках. Другие системы могут предложить подобные команды. Такая же проблема может возникнуть в IBM SP при использовании устройства ch_mpl; причина та же, но происходит из библиотеки IBM MPL.
устройство ch_p4 p4_error: latest msg from perror: Error 0
Неверный формат exec. Неверная архитектура.О: Возможно, Вы используете NFS (Network File System). NFS может не поддерживать файлы, обновляемые временным способом; эта проблема может вызываться созданием исполняемого файла на одной машине и попыткой использования его с другой. Обычно NFS определяет существование нового файла в течение нескольких минут. Вы можете попробовать использовать команду sync. mpirun, как правило, пытается выполнить команду sync, но во многих системах sync лишь информативна и не гарантирует, что файловая система стала непротиворечивой.
О: Да, это нормально. В реализации ch_p4 второй процесс используется для динамической установки связей с другими процессами. Начиная с mpich версии 1.1.1, эта возможность может помещаться в отдельный поток на многих архитектурах, и этот второй процесс будет невидимым. Чтобы разрешить это, используйте опцию -p4_opts=-threaded_listener в командной строке configure для mpich.
О: Сейчас (в версии 1.2.2) процесс определяет, что другой процесс прерван, толко когда он пытается принимать или посылать сообщение, а прерванный процесс является тем, с которым он соединялся в прошлом. Поэтому, процесс, занятый вычислениями, может не заметить, что один из его коллег выполнил MPI_Abort, несмотря на то, что для многих общих примеров коммуникации это не представляет проблемы. Это будет исправлено в дальнейшей реализации.