Анаконда испортила мои переменные отображения - PullRequest
0 голосов
/ 19 февраля 2019

У меня проблемы с пересылкой x11 при использовании anaconda.

У меня есть скрипт на Python, который выполняет определенные вычисления.Он работает на компьютерном кластере с CentOS Linux 7. Алгоритм смущающе параллелен, и мне просто нужно создать как можно больше экземпляров одного и того же скрипта, чтобы ускорить мои вычисления.Я использовал для непосредственного вызова mpi:

> mpiexec -n 10 python MyScript.py

Следует отметить, что MyScript.py вообще не использует MPI.Не нужно общаться друг с другом.Я использую MPI только для создания процессов на разных узлах.MyScript.py также создает всплывающие окна, в которых отображается его ход, и он закрывается после завершения вычислений.

Если я выполню команду, появятся 10 окон, по 1 из каждого узла.Это ожидаемо, и какое-то время все работает нормально.

Затем мы попытались повторить тот же процесс, но в среде anaconda, и это становится проблематичным, потому что anaconda, похоже, испортила $ DISPLAY на других узлах.Всплывающее окно из MyScript.py не появится.

Чтобы показать, что $ DISPLAY испорчен, я попытался запустить следующий скрипт (show_display.sh):

#!/bin/bash
echo $DISPLAY

с MPI, и результат должен быть похож на следующее:

> mpiexec -n 2 ./show_display.sh
localhost:61.0
localhost:47.0

Когда я активирую любое окружение conda, результат меняется:

> source activate myPy
> mpiexec -n 2 ./show_display.sh
localhost:61.0
localhost:61.0

Если я запускаю MyScript.py, я будуполучать жалобы от других узлов о «невозможности подключения к x серверу».Появляются только всплывающие окна с рангом 0.$ DISPLAY возвращается в нормальное состояние после деактивации среды:

> source deactivate
> mpiexec -n 2 ./show_display.sh
localhost:61.0
localhost:47.0

Если после деактивации я запускаю MyScript.py, я могу вернуть все всплывающие окна со всех узлов.

Пожалуйста, посмотрите, не допустил ли я ошибок на этом пути.У меня нет доступа к другим многоузловым машинам, поэтому я не могу сказать, происходит ли это только на этой конкретной машине.Заранее большое спасибо за помощь.

Редактировать:

Хорошо, я нашел виновника.Я использовал conda для установки mpi4py один раз, и после этого, когда я экспортирую путь Anaconda, mpiexec по умолчанию в моей системе заменяется на аналогичный в anaconda2 / envs / myPy / bin / mpiexec, и по некоторым причинам mpiexec портит мои переменные дисплея.

Теперь я удалил mpiexec и mpi4py от Anaconda, вместо этого используйте pip для установки mpi4py, и проблема решена.

...