初次调试MPI程序,调用Send&Recv函数报错的解决方案

在调试MPI程序时遇到Send和Recv函数报错,问题根源是客户端防火墙未关闭,导致节点间无法通信。关闭所有节点的防火墙(使用`systemctlstopfirewalld.service`和`systemctldisablefirewalld.service`命令)以及临时或永久禁用selinux(通过`setenforce0`和编辑`/etc/selinux/config`文件),之后程序可以正常运行。确保这些操作在所有节点上执行。
摘要由CSDN通过智能技术生成

在初次调试MPI程序,调用Send&Recv函数时,出现报错:

$ mpirun -n 4 -f /home/mpi_config_file ./mpi_SendRecv
Abort(702667023) on node 2 (rank 2 in comm 0): Fatal error in PMPI_Send: Other MPI error, error stack:
PMPI_Send(157).......: MPI_Send(buf=0x7fff9fa6ac84, count=1, MPI_INT, dest=3, tag=0, MPI_COMM_WORLD) failed
MPID_Send(467).......: 
MPIDI_send_unsafe(39): 
(unknown)(): Other MPI error

原因是客户端的防火墙没有关,需要把所有节点的防火墙都进行关闭操作,方可保证各节点进行通信。

1.关闭防火墙

[root@centos7 ~]# systemctl stop firewalld.service
[root@centos7 ~]# systemctl disable firewalld.service
[root@centos7 ~]# firewall-cmd --state
not running

2.关闭selinux

临时关闭

[root@centos7 ~]# setenforce 0

永久关闭

[root@centos7 ~]# sed -i 's/^ *SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

重启后配置生效

[root@centos7 ~]# sestatus 
SELinux status:                 disabled

切记,以上命令一定要在所有节点上都操作一遍!!!

再次运行程序,就能够正常跑通了!

[centos@node1 mpi_share]$ mpirun -n 4 -f /home/mpi_config_file ./mpi_SendRecv
Process 1 received number -1 from process 0
Process 3 received number 100 from process 2

参考资料

Centos7下NFS服务器搭建及客户端连接配置-腾讯云开发者社区-腾讯云

(73条消息) MPI集群环境搭建_mpi server_威成天下的博客-CSDN博客

(73条消息) MPI安装+CentOs6.5多机环境下MPI并行编程+MPI矩阵并行计算(超详细)_mpi环境配置_灬小柒灬s的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值