我在仅使用两个节点运行 OpenMPI 程序时遇到问题(其中一个节点是执行 mpiexec 命令的同一台机器,另一个节点是单独的机器)。
我将运行 mpiexec 的机器称为master,并将另一个节点称为slave。
在 master 和 slave 上,我都在我的主目录 ~/mpi 下安装了 OpemMPI
我在 master 上有一个名为 ~/machines.txt 的文件。
理想情况下,~/machines.txt 应该包含:
master
slave
但是,当我在 master 上运行以下命令时:
mpiexec -n 2 --hostfile ~/machines.txt hostname
输出,我收到以下错误:
bash: orted: command not found
但是如果 ~/maschines.txt 只包含运行命令的节点的名称,它就可以工作。 ~/机器.txt:
master
命令:
mpiexec -n 2 --hostfile ~/machines.txt hostname
输出:
master
master
我尝试在 slave 上运行相同的命令,并将 machines.txt 文件更改为仅包含 slave,它也有效。我已确保我的 .bashrc 文件包含 OpenMPI 的正确路径。
我做错了什么?简而言之,只有当我尝试在远程机器上执行程序时才会出现问题,但我可以在执行命令的机器上完美地运行 mpiexec。这让我相信这不是路径问题。我错过了连接两台机器的步骤吗?我有从主机到从机的无密码 ssh 登录功能。
最佳答案
此错误消息意味着您没有在远程计算机上安装 Open MPI,或者您没有在远程计算机上为非交互式登录正确设置 PATH(即,它无法找到在远程机器上安装 Open MPI)。 “orted”是 Open MPI 用于在远程节点上启动进程的辅助可执行文件之一——因此,如果未找到“orted”,那么它甚至不会尝试在远程节点上启动“hostname”节点。
请注意,在您的 shell 启动文件(例如,在您的 .bashrc 中)中的交互式和非交互式登录之间可能存在差异。
另请注意,将 Open MPI 安装在所有节点的相同路径位置要简单得多——这样,上述前缀方法将在远程节点上执行时自动添加正确的 PATH 和 LD_LIBRARY_PATH,并且您不必处理 shell 启动文件。
请注意,在 Open MPI 主网站上有大量关于此类主题的常见问题解答。
关于parallel-processing - OpenMPI:简单的 2 节点设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22925515/