Python MPI多核编程入门

1. 下载并安装MPIwindows下:mpich下载地址:https://msdn.microsoft.com/en-us/library/bb524831(v=vs.85).aspx?f=255&MSPPError=-2147217396点进download之后包含两个文件:msmpisdk.msi和MSMpiSetup.exe分别下载并安装添加BIN目录到系统路经...
摘要由CSDN通过智能技术生成

1. 下载并安装MPI

windows下:

  1. mpich下载地址:https://msdn.microsoft.com/en-us/library/bb524831(v=vs.85).aspx?f=255&MSPPError=-2147217396
    在这里插入图片描述
    在这里插入图片描述
  2. 点进download之后包含两个文件:msmpisdk.msi和MSMpiSetup.exe
    在这里插入图片描述
  3. 分别下载并安装
  4. 添加BIN目录到系统路经
  5. 命令行安装mpi4py:pip install mpi4py

2. MPI与mpi4py

MPI是Message Passing Interface的简称,也就是消息传递。消息传递指的是并行执行的各个进程具有自己独立的堆栈和代码段,作为互不相关的多个程序独立执行,进程之间的信息交互完全通过显示地调用通信函数来完成。
Mpi4py是构建在mpi之上的python库,使得python的数据结构可以在进程(或者多个cpu)之间进行传递。

2.1.简单的工作方式

很简单,就是你启动了一组MPI进程,每个进程都是执行同样的代码!然后每个进程都有一个ID,也就是rank来标记我是谁。

from mpi4py import MPI
print("my rank is: %d" %MPI.COMM_WORLD.Get_rank())

注意:
在IDE中运行是一个进程,如果要实现多个进程的效果,可以将代码保存为py文件,然后在命令行中运行
如果使用的pycharm,直接在terminal里运行
在这里插入图片描述
-n 4 指定启动4个mpi进程来执行后面的程序。相当于对脚本拷贝了4份,每个进程运行一份,互不干扰。在运行的时候代码里面唯一的不同,就是各自的rank也就是ID不一样。

2.2.点对点的通信

点对点通信(Point-to-PointCommunication)的能力是信息传递系统最基本的要求。意思就是让两个进程直接可以传输数据,也就是一个发送数据,另一个接收数据。接口就两个,send和recv,来个例子:

from mpi4py import MPI

comm = MPI.COMM_WORLD # 表示进程所在的通信组
comm_rank = comm.Get_rank()
comm_size = comm.Get_size() # mpi的进程个数
# 点对点通信
data_send = comm_rank
comm.send(data_send, dest=(comm_rank + 1) % comm_size)
# 如果comm_rank-1<0,会自动加comm_size变为正数再求余
data_recv = comm.recv(source=(comm_rank - 1) % comm_size)
  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值