版权声明:本文为博主原创文章,未经博主允许不得转载。
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