Как экспортировать путь к вычислительным узлам, параллельное программирование - PullRequest
0 голосов
/ 13 января 2012

У меня проблема с использованием ifort.Я скомпилировал код с помощью ifort / mpich1, но всякий раз, когда я пытаюсь запустить его на нескольких узлах, код попадает в определенную точку и зависает с ошибкой:

symbol lookup error ... undefined symbol __svml_round2

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

Как лучше обойти эту проблему?Кажется, мой файл ".bashrc" не выполняется при запуске через mpirun, так как у меня есть команда "source ..." в файле .bashrc.Я также попытался добавить строку в файл /etc/bash.bashrc, но безуспешно.В качестве альтернативы я подумал, что, возможно, статическое связывание при компиляции решит проблему, поэтому я включил

-i-static
-static

при компиляции с помощью ifort, но безрезультатно, я все еще получаю ошибку.

Кто-нибудь знает, как обойти эту проблему, по сути, либо как скомпилировать с помощью ifort, чтобы не нужно было «создавать ifortvars» при запуске скомпилированной программы (более желательное решение), либо как вытолкнуть либомой путь, или как получить переменные через вызов MPI?Благодарю.

1 Ответ

0 голосов
/ 13 января 2012

Вы можете задать переменные окружения как часть команды mpirun / mpirun_rsh.

например,

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib;mpirun_rsh -ssh -host -np 2 -hostfile hostlist /home/usr1/app.exe -x /home/usr1/config/appconfig.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...