next up previous contents
Next: Сети рабочих станций Up: Проблемы при запуске программ Previous: Проблемы при запуске программ   Contents

Общие

  1. В: При попытке запуска программы с помощью
    mpirun -np 2 cpi
    появляется сообщение об ошибке или программа зависает.

    О: В некоторых системах, таких, как IBM SP, существует много взаимно исключающих способов запуска параллельных программ; каждая система выбирает способ, подходящий для нее. Скрипт mpirun пробует наиболее общие методы, но может сделать неправильный выбор. Используйте опции -v или -t для mpirun, чтобы увидеть, как он пытается запустить программу, а затем сравните это со специфическими инструкциями для Вашей системы. Вам может понадобиться адаптировать код mpirun для собственных нужд. См. также следующий вопрос.

  2. В: При попытке запуска программы с помощью, например, mpirun -np 4 cpi, появляется
    Используйте : mpirun опции<программа> <узлы выполнения>$-$$-$ <аргументы>
    или
    mpirun опции<схема>
    О: В Вашем пути поиска присутствует команда mpirun, не принадлежащая mpich. Выполните команду
    which mpirun
    чтобы увидеть, какая команда mpirun была действительно найдена. Решением будет либо смена порядка каталогов в пути поиска, чтобы поместить версию mpirun для mpich первой, лиоб определить псевдоним mpirun, использующий абсолютный путь. Например, в csh shell, Вы можете выполнить
    alias mpirun /usr/local/mpich/bin/mpirun
    чтобы установить mpirun на версию для mpich.
  3. В: При попытке запуска большого количества процессов в сети рабочих станций выводится сообщение
    p4_error: latest msg from perror: Слишком много открытых файлов
    О: Существует ограничение на количество открытых дескрипторов файла. На некоторых системах Вы можете увеличить это ограничение самостоятельно; на других Вам может помочь системный администратор. Вы можете экспериментировать с безопасным сервером, но это не полное решение. Сейчас мы работаем над более расширяемым механизмом запуска для новой реализации.
  4. В: При попытке запуска программы на более чем одном процессоре выводится сообщение об ошибке
    mpirun $-$np 2 cpi
    /home/me/cpi: ошибка загрузки разделяемых библиотек: libcxa.so.1: невозможно
    открыть разделяемый объектный файл : Файл или каталог не существует
    Проблем при запуске одного процесса нет.

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

    1. Разделяемые библиотеки не установлены на удаленном процессоре. Чтобы исправить это, попросите Вашего системного администратора установить библиотеки.
    2. Разделяемые библиотеки не упомянуты в пути поиска по умолчанию. Это может случиться, если путь содержится в переменной окружения, установленной в Вашем текущей shell, но который не входит в путь на удаленной системе. Исправления в этом случае тяжелее, поскольку Вы должны связать размещение разделяемых библиотек и исполняемых файлов (главным недостатком в большинстве разделяемых библиотек Unix является то, что исполняемые файлы по умолчанию не запоминают, где были найдены разделяемые библиотеки при компоновке). Простейшей поправкой будет попросить Вашего системного администратора поместить необходимые разделяемые библиотеки в один из каталогов, который просматривается по умолчанию. Если это невозможно, то Вы должны сами помочь компилятору и компоновщику.

      Многие компоновщики предоставляют способ определения пути поиска для разделяемых библиотек. Трудность состоит в (а) передаче этой команды программе-компоновщику и (b) определении всех необходимых библиотек.

      Например, в системах на Linux, команда компоновщика для определения пути поиска разделяемых библиотек - это -rpath path, т.е. -rpath /usr/lib:/usr/local/lib. Чтобы передать эту команду компоновщику посредством компилятора Intel С icc, используется команда -Qoption,link,-rpath,path. По умолчанию, компоновщик Linux проверяет каталог `/usr/lib' и каталоги, определенные в переменной окружения LD_LIBRARY_PATH. Поэтому, чтобы заставить компоновщик включить путь для разделяемых библиотек, Вы можете использовать

      mpicc -o cpi cpi -Qoption,link,-rpath,$LD_LIBRARY_PATH:/usr/lib
      Если это сработает, то попробуйте изменить значение LDFLAGS в скрипте mpicc, чтобы включить эту опцию.

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

  5. В: При попытке запуска cpilog получено следующее сообщение:
    ld.so.1: cpilog: fatal: libX11.so.4: невозможно открыть файл: errno 2
    О: Версия X11, обнаруженная configure, не установлена корректно. Это обычная проблема для систем Sun/Solaris. Возможно, что Ваши машины на Solaris выполняют слегка различающиеся версии. Вы можете попробовать статическую компоновку (-Bstatic на Solaris).

    С другой стороны, можно попробовать добавить следующие строки в Ваш `.login' (предполагая C shell):

    setenv OPENWINHOME /usr/openwin
    setenv LD_LIBRARY_PATH /opt/SUNWspro/lib:/usr/openwin/lib
    (Вы можете прежде проконсультироваться с Вашим системным администратором, чтобы убедиться, что пути в Вашей системе правильны). Убедитесь, что Вы добавили их перед строками вида
    if ($?USER == 0 || $?prompt == 0) exit
  6. В: Программа завершается с ошибкой при попытке записи в файл.

    О: Если Вы открыли файл перед вызовом MPI_INIT, поведение MPI (не только mpich-реализации MPI) неизвестно. На устройстве ch_p4 только нулевой процесс (в MPI_COMM_WORLD) может иметь открытые файлы; другие процессы не могут открывать файлы. Переместите операции, которые открывают файлы и взаимодействуют с внешним миром после MPI_INIT (и перед MPI_FINALIZE).

  7. В: Программа пытается стартовать бесконечно долго.

    О: Это может быть вызвано несколькими проблемами. На системах с динамически компонуемыми исполняемыми файлами это может быть вызвано проблемами файловой системы, одновременно получившей запросы от многих процессоров о динамически компонуемых частях исполняемых файлов (это отмечено как проблема с некоторыми реализациями DFS). Вы можете попробовать использовать статическую компоновку Вашего приложения.

    В сетях рабочих станций долгие времена запуска могут быть из-за времени, используемого для запуска удаленных процессов; см. обсуждение безопасного сервера в разд. 3.2.3 для устройства ch_p4 или рассмотрите использование устройства ch_p4mpd.


next up previous contents
Next: Сети рабочих станций Up: Проблемы при запуске программ Previous: Проблемы при запуске программ   Contents
Alex Otwagin 2002-12-16