MPI介绍与实践——理论介绍

来源:互联网 发布:软件测试教学视频 编辑:程序博客网 时间:2024/06/11 11:27

MPI介绍与实践——理论介绍

一、MPI介绍

1、什么是MPI

Message Passing Interface Specification(消息传递接口规范)
MPI是由一组来自学术界和工业界的研究人员建立在各种并行计算体系结构设计的一个标准化的和便携式的消息传递系统。该标准定义的语法和语义的一个核心库例程给广大用户编写可移植的消息传递程序在C,C++和 Fortran。

2、MPI定义了消息传递的标准API

  • What’s in the standard:The syntax and semantics of a core set of functions
  • What’s not in the standard :Implementation details 、Runtime details (how many processes the code with etc.)

3、为什么使用MPI

标准化:并行编程的事实标准。
可移植性:几乎所有平台都可以使用MPI实现。
可伸缩性:在某种意义上,它不受可以访问相同内存空间的处理器数量的限制。
流行广泛性:许多库是基于MPI,如PETSc,MPE,ScaLAPACK,PLAPACK等

4、标准包含什么

点对点通信;集群操作;进程组、通信上下文和进程拓扑;环境管理和调查;过程创建和管理;其他功能

二、MPI点对点通信

Point-to-point communication is the most basic form of communication in MPI, allowing a program to send a message from one process to another over a given communicator.
主要的概念:
- “Completion” means that memory locations used in the message transfer can be safely accessed
sender: variable sent can be reused after completion
receiver: variable received can now be used
- 通信模式可以阻塞或非阻塞:
阻塞:函数调用的返回意味着完成
非阻塞:返回而不等待任务完成

1、阻塞通信模式

这里写图片描述

1)标准模式:由MPI来决定传出消息是否会被缓冲。

MPI可以缓冲区发送消息。在调用匹配的接收之前,发送调用可以完成。
MPI不能缓冲区发送消息。直到匹配的接收被发送,数据已被移动到接收方时,发送调用才会完成。标准模式发送是非本地的:发送操作的成功完成可能取决于匹配接收的发生。

这里写图片描述

这里写图片描述

2)缓冲模式:发送操作都可以启动无论是否已匹配接收。

发送可以完成在匹配接收之前。
它是本地的:完成并不取决于匹配接收的发生。
如果有缓冲空间不足会出现错误。
可用的缓冲区空间的数量是由用户控制。缓冲区分配的用户可能需要的缓冲模式是有效的。

这里写图片描述

3)同步模式:Send can start whether or not a matching receive was posted。

这里写图片描述

4)准备模式

只有当匹配接收端已经发布时,才可以开始发送。
发送不取决于匹配接收的状态,而仅仅表明发送缓冲区可以重复使用

这里写图片描述

2、非阻塞通信模式

非阻塞发送(接收)开始调用启动发送(接收)的操作,但不完成它。因此,在缓冲区可以安全地重新使用之前,发送/接收将返回。
单独发送/接收呼叫完成需要完成通信,确认数据已经转移。
非阻塞接收的使用也可避免系统缓存和内存到内存复制。
把非阻塞通信分为三个部分:
①初始化非阻塞传输
②做一些不涉及传输中的数据的其他工作。
③等待非阻塞通信完成

三、集群通信

1、集群计算简介

Collective communications involves all processes in a communicator
(One to all, all to one and all to all)
Three types of collective communications
(• Data movement • Collective computation • Synchronization )
All collective communications are blocking

2、集群和点对点通信

a.更简洁的程序:一个集体的操作可以代替多个点对点的操作
b.优化集体通信通常比对应的点对点通信速度更快

3、编程

Data Movement: Broadcast
Data Movement: Gather
Data Movement: Scatter
Data Movement: Gather-to-all
Data Movement:All-to-all
Collective computation: Reduce
Collective computation:Allreduce
Collective computation: Scan

四、并行程序设计

这里写图片描述

1、分解

partitioning。将要执行的计算和由该计算操作的数据被分解成小任务。

2、通信

确定了协调任务执行所需的通信,并定义了适当的通信结构和算法

3、聚集

在设计的前两个阶段中定义的任务和通信结构将根据性能要求和实现成本进行评估。如果有必要,将任务组合成更大的任务,以提高性能或降低开发成本。

4、映射

每个任务被分配给处理器,试图满足最大化处理器利用率和最小化通信成本的竞争目标。映射可以指定静态或在运行时确定的负载均衡算法。