Python中MPI消息传递接口

本文介绍了Python中基于MPI的消息传递接口,包括安装配置、点对点传输、消息同步异步性、send的多种模式、多点传输、广播与散播操作、收集与规约函数,以及进程间的同步与通信注意事项。通过实例代码展示了MPI在并行计算中的应用,强调了数据量大小对同步性的影响,并提供了优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MPI(Message-Passing-Interface)消息传递接口

1.MPI安装

python mpi安装mpi4py的python库
pip install mpi4py
下载MicrosoftWindowsMPI安装包网址:https://github.com/icepoint666/MPI中的MSMpiSetup.rar
安装后得到Bin文件夹:

这里写图片描述

将MicrosoftMPI/Bin文件夹路径添加到环境变量:

这里写图片描述

命令行输入mpiexec运行,出现帮助表示安装成功

这里写图片描述
2.试验代码

from mpi4py import MPI

comm = MPI.COMM_WORLD
comm_rank = comm.Get_rank()
comm_size = comm.Get_size()

print 'I'm the %d process of %d processes" % (comm_rank, comm_size)

这里写图片描述

2.点对点传输

点对点通信.其实就是最简单的进程A向进程B发送信息,而进程B向进程A接收信息.这是关于两个进程之间的通信.
示例代码:
#mpip2p.py
from mpi4py import MPI

comm = MPI.COMM_WORLD
comm_rank = comm.Get_rank()
comm_size = comm.Get_size()

data = [comm_rank]*5
comm.send(data,dest=(comm_rank+1)%comm_size)
data_recv =comm.recv(source=(comm_rank-1)%comm_size)
print "my rank is %d, and Ireceived:" %comm_rank
print data_recv
在命令行中输入命令
mpiexec -n 5 python mpip2p.py
执行结果:
my rank is 4, and Ireceived:
[3, 3, 3, 3, 3]
my rank is 3, and Ireceived:
[2, 2, 2, 2, 2]
my rank is 2, and Ireceived:
[1, 1, 1, 1, 1]
my rank is 0, and Ireceived:
[4, 4, 4, 4, 4]
my rank is 1, and Ireceived:
[0, 0, 0, 0, 0]
指定启动5个mpi进程来执行后面的程序。相当于对脚本拷贝了5份,每个进程运行一份,互不干扰。在运行的时候代码里面唯一的不同,就是各自的rank也就是ID不一样。
Get_rank()函数:获取当前进程rank值
Get_size()函数:获取总共的进程数
send()函数:将数据送给rank为dest的值的进程
rec
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值