next up previous contents
Next: Программы завершаются с ошибкой Up: Программы завершаются с ошибкой Previous: Общие   Contents

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

  1. В: Я могу запустить программу, используя небольшое число процессов, однако, когда я запрашиваю больше, чем 4-8 процессов, я не получаю ввод от всех моих процессов и программы никогда не завершаются.

    О: Мы наблюдали такую проблему при инсталляциях, использующих AFS. Программа удаленной shell rsh, поставляемая с некоторыми системами AFS, ограничивает количество задач, которые могут использовать стандартный вывод. Это предотвращает выход для некоторых процессов, вызывая зависание задачи. Существует четыре возможных пути решения:

    1. Использовать другую команду rsh. Вероятно, Вы можете сделать это, поместив каталог, содержащий не-AFS версию, раньше в Вашем PATH. Эта опция может быть недоступна для Вас, что зависит от Вашей системы. Версия не-AFS может находиться в том же месте в `/bin/rsh'.
    2. Использовать безопасный сервер (serv_p4). См. его обсуждение в руководстве пользователя.
    3. Перенаправить весь стандартный вывод в файл. Для этого может использоваться процедура MPE MPE_IO_Stdout_to_file.
    4. Использовать исправленную версию команды rsh. Возможным источкником проблемы является неправильное использование системного вызова select в команде rsh. Если код выполняет нечто вроде
      int mask;
      mask |= 1 « fd;
      select ( fd+1, &mask, ... );
      вместо
      fd_set mask;
      FD_SET (fd,&mask);
      select ( fd+1, &mask, ... );
      то этот код неправильный (вызов select изменился, чтобы разрешить более 32 десткипрторов файлов очень давно, а программа rsh (или программист!) не изменились со временем).
    Четвертой возможностью является использование AFS-версии rsh, которая исправляет эту ошибку. Поскольку мы сами на пользуемся AFS, нам неизвестно, есть ли где нибудь исправленная версия.
  2. В: Запускаются не все процессы.

    О: Это может произойти при использовании устройства ch_p4 и системы, имеющей исключительно малые ограничения на число удаленных shell, принадлежащих Вам. Некоторые системы используют ``Kerberos'' (пакет безопасности сети), позволяющий иметь только три или четыре удаленных shell; на этих системах размер MPI_COMM_WORLD будет ограничен этим же числом (плюс один, если Вы используете и локальную машину).

    Единственный способ обойти это - попытаться использовать безопасный сервер; это описано в руководстве по инсталляции mpich. Отметьте, что Вы должны запускать серверы ``вручную'', поскольку скрипт chp4_servs использует удаленную shell для запуска серверов.



Alex Otwagin 2002-12-16