我只使用两个节点运行OpenMPI程序时遇到问题(其中一个节点是执行 mpiexec 命令的同一台机器,而另一个节点是一台单独的机器)。
我将调用运行mpiexec, master 的机器,另一个节点 slave 。
在主和从属上,我已在我的主目录中安装了OpemMPI 〜/ mpi
我在 master 上有一个名为〜/ machines.txt的文件。
理想情况下,〜/ machines.txt应包含:
主
从属
但是,当我在主:
上运行以下内容时mpiexec -n 2 --hostfile~ / machines.txt hostname
输出,我收到以下错误:
bash:orted:找不到命令
但是如果〜/ maschines.txt只包含运行该命令的节点的名称,那么它可以工作。 〜/ machines.txt:
主
命令:
mpiexec -n 2 --hostfile~ / machines.txt hostname
输出:
主
主
我尝试在 slave 上运行相同的命令,并将machines.txt文件更改为仅包含 slave ,并且它也有效。我确保我的 .bashrc 文件包含OpenMPI的正确路径。
我做错了什么?简而言之,当我尝试在远程计算机上执行程序时只会出现问题,但我可以在执行命令的计算机上完全运行mpiexec。这让我相信这不是一个路径问题。我错过了连接两台机器的一步吗?我有从主服务器到服务器的无密码ssh登录功能。
答案 0 :(得分:2)
此错误消息表示您没有在远程计算机上安装Open MPI,或者您没有在远程计算机上正确设置PATH以进行非交互式登录(即,它无法找到在远程计算机上安装Open MPI)。 “orted”是Open MPI用于在远程节点上启动进程的辅助可执行文件之一 - 所以如果找不到“orted”,那么它甚至没有尝试在远程节点上启动“hostname”节点
请注意,shell启动文件中的交互式登录和非交互式登录之间可能存在差异(例如,在.bashrc中)。
另请注意,在所有节点上的相同路径位置安装Open MPI要简单得多 - 这样,上述前缀方法将在远程节点上执行时自动添加正确的PATH和LD_LIBRARY_PATH,并且您不必使用shell启动文件。
请注意,Open MPI主网站上有很多关于这类主题的常见问题项目。
答案 1 :(得分:1)
使用--prefix
选项显式设置绝对OpenMPI前缀:
prompt> mpiexec --prefix=$HOME/mpi ...
或使用绝对路径调用mpiexec
:
prompt> $HOME/mpi/bin/mpiexec ...
后一个选项自动设置前缀。然后使用该前缀在远程计算机上设置PATH
和LD_LIBRARY_PATH
。
答案 2 :(得分:0)
这个答案来的很晚,但是对于linux用户来说,在~/.bashrc文件末尾添加环境变量是一个坏习惯,因为仔细看顶部,你会发现if函数退出if in非交互模式,这正是您通过 ssh 主机编译程序的方式。因此,将您的环境变量放在文件的顶部,然后退出 if
答案 3 :(得分:-1)
PATH =“的/ usr / local / sbin中:在/ usr / local / bin中:/ usr / sbin目录:在/ usr / bin中:/ sbin目录:/ bin中:在/ usr /游戏:在/ usr /本地/游戏:/家/ Hadoop的/ openmpi_install / BIN” LD_LIBRARY_PATH = /家庭/ hadoop的/ openmpi_install / lib中