使用anaconda时,x11转发存在问题。
我有一个执行某些计算的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弄乱了我的显示变量。
现在,我删除了anaconda的mpiexec和mpi4py,改用pip安装mpi4py,问题已解决。