parallel-processing - OpenMPI:简单的 2 节点设置

标签 parallel-processing mpi cluster-computing openmpi

我在仅使用两个节点运行 OpenMPI 程序时遇到问题(其中一个节点是执行 mpiexec 命令的同一台机器,另一个节点是单独的机器)。

我将运行 mpiexec 的机器称为ma​​ster,并将另一个节点称为slave

ma​​sterslave 上,我都在我的主目录 ~/mpi 下安装了 OpemMPI

我在 ma​​ster 上有一个名为 ~/machines.txt 的文件。

理想情况下,~/machines.txt 应该包含:

master
slave

但是,当我在 ma​​ster 上运行以下命令时:

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/

相关文章:

docker - Infinispan 的 JGroups 没有加入 Docker 服务中的同一个集群

c# - 运行数据库查询而不是等待结果

java - 如何使用Spring Batch实现步骤的分布式处理

c++ - MPI 和集群

mpi - 为 Windows 安装 MPI

java - JGroups、Terracotta 和 Hazelcast

r - Windows 集群上的并行 R

php - 并行运行 PHP foreach?

c# - .NET Parallel.ForEach、StreamWriter 输出 + 线程安全

c - 使用具有自定义操作功能的 MPI reduceAll