2_MPI

MPI

Message Passing Interface

目标

  1. 较高的通信性能;
  2. 较好的程序可移植性;
  3. 强大的功能

2.1 MPI进程

MPI进程

MPI程序中一个独立参与通信的个体

MPI进程组

MPI程序中由部分或全部进程构成的有序集合,每个进程都被赋予一个所在进程组中唯一的序号(rank),用于在该组中标识该进程,称为进程号,取值从0开始,0,1,2......

2.2 MPI Communicator

MPI Communicator

MPI通信子,(MPI通信域,MPI通信器,)包括进程组(Progress Group)和通信上下文(Communication Context),同于描述通信进程之间的通信关系

MPI程序启动时自动建立通信器MPI_COMM_WORLD,包含程序中所有MPI进程 ,之后用户可以根据自己的需要,建立其它的进程组

进程间通信必须通过通信器进行

Communication Context

通信上下文:安全地区别不同的通信以免相互干扰,通信上下文不是显式的对象,只是作为通信域的一部分出现

2.3 MPI消息

一个消息指进程之间的一次数据交换

消息构成

2.4 MPI编程特征

2.5 MPI数据类型

2.7 编译运行

MPI常用接口

初始化和结束

通信子

发送数据

接收数据

其他

通信

阻塞型检测

非阻塞型检测

群集通信

  1. 通信域中的所有进程必须调用群集通信函数。
  2. 每个群集通信函数使用类似于点对点通信中的标准、阻塞的通信模式。
  3. 一个群集通信操作是不是同步操作取决于实现。MPI要求用户负责保证他的代码无论实现是否同步都必须是正确的。
  4. 所有参与群集操作的进程中,Count和Datatype必须是兼容的。
  5. 消息信封由通信域和源/目标定义。

同步功能

int MPI_Barrier(MPI_Comm comm)

通信

广播

散发

收集

聚集

  1. 首先是通信的功能,即消息根据要求发送到目标进程,目标进程也已经收到了各自需要的消息;
  2. 然后是对消息的处理,即执行计算功能;
  3. 最后把处理结果放入指定的接收缓冲区。

规约Reduce

扫描Scan