我在群集上运行mpi程序时遇到问题。
我的主机文件如下:
10.0.9.1 slots=2
10.0.12.1 slots=2
10.0.11.1 slots=2
10.0.10.1 slots=2
10.0.6.1 slots=2
10.0.5.1 slots=2
10.0.4.1 slots=2
10.0.2.1 slots=2
10.0.1.1 slots=2
如你所见,我有8个节点。运行后,某些进程结束工作但其他返回错误:
node02][[62903,1],7][btl_tcp_endpoint.c:796:mca_btl_tcp_endpoint_complete_connect] connect() to 10.1.4.1 failed: No route to host (113)
[node04][[62903,1],15][btl_tcp_endpoint.c:796:mca_btl_tcp_endpoint_complete_connect] connect() to 10.1.5.1 failed: No route to host (113)
我很惊讶node02正在尝试与10.1.4.1主机连接(我在主机中没有这个地址等等)。 第二个错误与之前的意思是node4试图与10.1.5.1连接。我的地址是10.0.x.1而不是10.1.x.1为什么会这样,我在哪里可以找到它?
modprobe: ERROR: could not insert 'ip_tables': Operation not permitted
iptables v1.4.21: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
编辑:
我已经测试了很多配置,我发现我只能运行任意节点的10个程序副本(-np 10)。任何更大的值,例如-np 12都会出现上述错误。
例如,节点配置正常:
10.0.11.1 slots=1
10.0.10.1 slots=1
10.0.9.1 slots=1
10.0.6.1 slots=2
10.0.5.1 slots=1
10.0.4.1 slots=2
10.0.2.1 slots=2
你遇到过这样的问题吗?
答案 0 :(得分:0)
在Open MPI中,主机文件中的IP在内部用于启动作业。
如果您未在受支持的资源管理器下运行,则plm/rsh
组件将使用这些IP到ssh
(或rsh
)远程节点上的orted
守护程序。 / p>
对于通信,btl/tcp
组件将检测所有可用接口,并尝试全部使用它们。
在您的情况下,您可能必须将10.1.0.0/16
网络列入黑名单,或限制为10.0.0.0/16
网络。这可以通过命令行实现:
mpirun --mca btl_tcp_if_exclude 10.1.0.0/16 ...
或
mpirun --mca btl_tcp_if_include 10.0.0.0/16 ...
请注意,您可能还需要重新构建用于连接作业的oob/tcp
组件。与btl/tcp
不同,此组件使用第一个工作IP,因此可能不需要。
mpirun --mca btl_tcp_if_inlclude 10.0.0.0/16 --mca oob_tcp_if_include 10.0.0.0/16 ...