我正在Arch Linux ARM(更具体地说,是在Raspberry Pi集群上)中使用mpi4py(1.3.1)和openmpi(1.8.6-1)构建MPI应用程序。我已经成功地在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个进程时才会发生)。
这可能是库中的某个bug吗?
这是我的主机文件
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
提前感谢!
我在运行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配置(系统级),以限制除我以外的任何人从我的启动节点登录。