【发布时间】:2019-09-23 05:09:21
【问题描述】:
我一直在尝试解决问题,以便能够在多个节点上运行 openmpi。
最初我遇到了$PATH 和$LD_LIBRARY_PATH 变量没有通过openmpi 会话从.bashrc 文件更新的问题,因此我手动添加了--prefix /path/to/openmpi 来解决此问题。
事实证明,即使是 anaconda 路径变量也没有被加载。所以最终我需要从我的主目录获取~/.bashrc 文件。我怎样才能做到这一点?谁能帮帮我?
更新 01:
我写了一个简单的shell脚本来检查python的版本
python --version
并尝试在本地和远程机器上使用 openmpi 运行它,如下所示:
mpirun --prefix /home/usama/.openmpi --hostfile hosts -np 4 bash script
然后它返回
Python 2.7.12
Python 3.6.8 :: Anaconda, Inc.
Python 3.6.8 :: Anaconda, Inc.
Python 2.7.12
证实了我的怀疑,即无论 openmpi 正在做什么来运行远程进程,都不会从 ~/.bashrc 文件中调用/设置正确的环境变量。使用过多节点 openmpi 的人有什么帮助吗?
更新 02:
一个简单的 ssh 环境 grep 告诉我我的环境变量没有更新,这可能是问题的原因。 (我什至尝试在 ~/.ssh/environment 文件中进行设置)
$ ssh remote-node env | grep -i path
它似乎只加载了只有基本路径设置的 /etc/environment 文件。我该如何纠正这个问题?
【问题讨论】:
-
您究竟是如何尝试运行某些东西的?你确定正在调用 Bash 吗?
-
好吧,openmpi 常见问题解答说与远程服务器建立了 ssh 连接以启动新进程。我假设这涉及bash?我得到的错误是关于 python 库在使用 conda 安装时没有安装在远程机器上,并且在 .bashrc 中设置了环境变量
-
再次,请edit 您的问题准确说明您的运作方式。非交互式 SSH 将在目的地读取
$HOME/.ssh/environment,但我们确实需要在提出具体建议之前查看全貌。 -
我认为“不要”是唯一合适的答案。用户通常维护
.bashrc,假设它只影响他们的交互式shell,因此他们可以定义随意覆盖内置命令的函数,设置不寻常的DEBUG陷阱或command_not_found钩子,或者做一些可以使脚本正常运行的事情出乎意料。 -
我没有说没有办法,我说你要求的方式是不明智的。最好使用单独的 dotfile,而不是共享一个也用于交互式配置的文件,或者 - 更好 - 生成明确设置所需值的命令。