0

我正在 Arch Linux ARM 中使用 mpi4py (1.3.1) 和 openmpi (1.8.6-1) 构建一个 MPI 应用程序(更具体地说,在 Raspberry Pi 集群上)。我已经在 3 个节点(4 个进程)上成功运行了我的程序,当尝试添加一个新节点时,会发生以下情况:

Host key verification failed.
--------------------------------------------------------------------------
ORTE was unable to reliably start one or more daemons.
This usually is caused by:

* not finding the required libraries and/or binaries on
  one or more nodes. Please check your PATH and LD_LIBRARY_PATH
  settings, or configure OMPI with --enable-orterun-prefix-by-default

* lack of authority to execute on one or more specified nodes.
  Please verify your allocation and authorities.

* the inability to write startup files into /tmp (--tmpdir/orte_tmpdir_base).
Please check with your sys admin to determine the correct location to use.

*  compilation of the orted with dynamic libraries when static are required
  (e.g., on Cray). Please check your configure cmd line and consider using
  one of the contrib/platform definitions for your system type.

* an inability to create a connection back to mpirun due to a
  lack of common network interfaces and/or no route found between
  them. Please check network connectivity (including firewalls
  and network routing requirements).

有趣的是,ssh 密钥很好,因为我使用的是相同的节点(我可以删除主机文件的任何条目,添加新节点,它会工作,所以我很确定问题不是配置错误的 ssh 设置。仅当我使用 5 个进程时才会发生这种情况)。

这可能是某种库中的错误吗?

这是我的主机文件

192.168.1.26 slots=2
192.168.1.188 slots=1
#192.168.1.202 slots=1 If uncommented and run with -np 5, it will raise the error
192.168.1.100 slots=1

提前致谢!

4

1 回答 1

5

我在运行 Fedora 22 和 OpenMPI 1.8 的 Linux x86_64 迷你集群上遇到了同样的问题。我可以从我的启动机器通过 SSH 连接到我的 5 台机器中的任何一台,但是当我尝试使用 3 个或更多节点启动 MPI 时,它会给我一个身份验证错误。和你一样,3 似乎是一个神奇的数字,事实证明它是。OpenMPI 使用基于树的启动,因此当您有两个以上的节点时,一个或多个中间节点正在执行 ssh。就我而言,我没有使用无密码设置。我在已添加到密钥链中的启动机器上有一个 SSH 身份。它能够启动前两个节点,因为我的钥匙链中有经过身份验证的身份。然后这些节点中的每一个都尝试启动更多并且这些节点没有验证该密钥(我需要在每个节点上添加它)。

因此,该解决方案似乎正在转向无密码 SSH 身份设置,但您显然必须小心如何执行此操作。我在启动机器上创建了一个特定的身份(密钥对)。我将密钥添加到我想要使用的节点上的授权密钥中(这很容易,因为它们都使用 NFS,但如果需要,您可以手动分发一次密钥)。然后我修改了我的 SSH 配置以在尝试访问我的节点机器时使用该无密码身份。我的 ~/.ssh/config 看起来像:

Host node0
    HostName node0
    IdentityFile ~/.ssh/passwordless_rsa
Host node1
    HostName node1
    IdentityFile ~/.ssh/passwordless_rsa
...

我确信有一些方法可以使用通配符对 N 个节点进行扩展。或者您可以考虑在系统 ssh 配置文件中更改系统级别的默认身份文件(我敢打赌那里有类似的选项)。

这就是诀窍。现在我可以启动所有 5 个节点,而不会出现任何身份验证问题。我认为的缺陷是启动节点会启动所有其他节点,但是这种基于树的启动意味着您需要链接登录,而您无法使用密码验证身份来做到这一点,因为您永远没有机会对其进行身份验证。

拥有无密码密钥仍然让我感到害怕,所以为了让这些连接到开放网络的节点更加安全,我更改了 sshd 配置(系统级别),以限制除了我之外的任何人从我的启动节点登录。

于 2015-08-03T21:37:47.900 回答