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