如何指定 OpenMPI 使用的端口范围?
Posted
技术标签:
【中文标题】如何指定 OpenMPI 使用的端口范围?【英文标题】:How can I specify the port range for OpenMPI to use? 【发布时间】:2016-05-28 22:04:11 【问题描述】:我正在使用 Open MPI 1.6.5 在 3 个节点上并行运行 OpenFOAM。出于安全原因,我只允许打开几个 TCP 端口。所以我为 Open MPI 打开了 49990-50009 端口,并在 openmpi-mca-params.conf 中设置了如下值:
btl_tcp_port_min_v4=49990
btl_tcp_port_range_v4=10
oob_tcp_static_ports=50000-50009
当我运行 mpirun 时,我收到一条消息:
mca_oob_tcp_init: unable to create IPv4 listen socket: Unable to open a TCP socket for out-of-band communications.
我错过了什么吗?如何设置 MPI 以运行一系列端口?
【问题讨论】:
【参考方案1】:oob_tcp_static_ports
的值应该是要使用的特定端口的逗号分隔列表,而不是端口范围。要为 tcp
OOB 设置端口范围,请将其分配给 oob_tcp_dynamic_ports
。
请注意,所有这些端口号(也适用于 tcp
BTL)会影响 侦听 套接字,即传入连接。连接发起方使用操作系统将套接字绑定到的任何端口号。
参考 - the Open MPI user's mailing list。
【讨论】:
嗨 Hristo,我将端口范围分配给了 oob_tcp_dynamic_ports=50000-50009。当我尝试使用以下命令开始模拟时:mpirun -np 4 --hostfile machines simpleFoam -parallel。模拟挂起,没有错误信息。似乎节点之间的通信仍然被阻止。我还应该设置什么? 将--mca btl_base_verbose 20 --mca oob_base_verbose 10
添加到mpiexec
命令行,以便从两个框架中获取大量调试信息,包括库正在使用的地址和端口。此外,请确保防火墙根据目标端口而不是源端口过滤连接。顺便说一句,如果集群使用 InfiniBand 等高速网络,您不必为 tcp
BTL 分配任何端口,因为它根本不会被使用,您可以将整个端口范围分配给tcp
OOB。
您好 Hristo,感谢您的回复。如何设置防火墙以根据目标端口过滤连接?我正在使用 ubuntu 14.04。
这取决于使用的防火墙。与iptables
类似:iptables -A INPUT --match multiport --dports 49990:50009 -j ACCEPT
以上是关于如何指定 OpenMPI 使用的端口范围?的主要内容,如果未能解决你的问题,请参考以下文章