python mpi4py_mpi4py实践

MPI4Py是Python中的一个非官方库,基于MPI实现进程间通信。本文介绍了MPI的基本概念如rank和Communicator,展示了如何使用mpi4py进行点对点和群体通信,包括发送Python内置对象和Numpy数组,以及广播、散播和收集操作。
摘要由CSDN通过智能技术生成

版权声明:本文为博主原创文章,未经博主允许不得转载。

1.概述

MPI(Message Passing Interface),消息传递接口,是一个标准化和轻便的能够运行在各种各样并行计算机上的消息传递系统。消息传递指的是并行执行的各个进程拥有自己独立的堆栈和代码段,作为互不相关的多个程序独立执行,进程之间的信息交互完全通过显示地调用通信函数来完成。

mpi4py是构建在MPI之上的Python非官方库,使得Python的数据可以在进程之间进行传递。

2.MPI执行模型

并行程序是指一组独立、同一的处理过程;

所有的进程包含相同的代码;

进程可以在不同的节点或者不同的计算机;

当使用Python,使用n个Python解释器;

mpirun -np 32 python parallel_script.py

并行执行模型如下所示,

2.1 MPI基本概念

rank:给予每个进程的id;

可通过rank进行查询;

根据rank,进程可以执行不同的任务;

Communicator:包含进程的群组;

mpi4py中基本的对象,通过它来调用方法;

MPI_COMM_WORLD,包含所有的进程(mpi4py中是MPI.COMM_WORLD);

2.2 数据模型

所有的变量和数据结构都是进程的局部值;

进程之间通过发送和接收消息来交换数据;

2.3 使用mpi4py

from mpi4py import MPI

comm = MPI.COMM_WORLD #Communicator对象包含所有进程

size = comm.Get_size()

rank = comm.Get_rank()

print "rank = %d,size = %d"%(rank,size)

2.4 安装mpi4py

3.工作方式

工作方式主要有点对点和群体通信两种;点对点通信就是一对一,群体通信是一对多;

3.1 点对点

example 1

点对点发送Python内置dict对象;

#Broadcasting a Python dict

from mpi4py im

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值