如何指定 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 分配任何端口,因为它根本不会被使用,您可以将整个端口范围分配给tcpOOB。 您好 Hristo,感谢您的回复。如何设置防火墙以根据目标端口过滤连接?我正在使用 ubuntu 14.04。 这取决于使用的防火墙。与iptables 类似:iptables -A INPUT --match multiport --dports 49990:50009 -j ACCEPT

以上是关于如何指定 OpenMPI 使用的端口范围?的主要内容,如果未能解决你的问题,请参考以下文章

opemmpi安装

安装 openmpi 4.0 用与 horovod 编译

OpenMPI安装

Ubuntu 安装openmpi

如何指定Spark2作业中Driver和Executor使用指定范围内端口

OpenMPI的下载和安装