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、映射

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

MPI介绍与实践——理论介绍相关推荐

  1. “创新实践”项目介绍2:《3D点云中的汽车检测》

    指导教师点评 这是一个非常有价值的项目.在自动驾驶/辅助驾驶领域,将来会有很多人使用陈琪男和黄子健同学实现的算法.在这个项目中,他们"逢山开路",遇到没有实现的深度学习算子,就自己 ...

  2. “创新实践”项目介绍3:《利用深度学习进行VR手柄光点检测》

    指导教师点评 这个项目来源于企业的实际需求,所采用的技术方案是最新的深度学习物体检测技术.技术方案具有一定的难度,很有挑战.通过这个项目,学生可以接触真正的需求,提升分析问题和解决问题的能力. 项目名 ...

  3. “创新实践”项目介绍7:《看护服务机械狗》

    指导教师点评 这个项目致力于服务机器人的核心算法.如果有一个机器宠物,不掉毛.不撒尿."饿了"自己能去充电,还能为主人提供一些监护服务,肯定大受欢迎.这个项目让机器狗不仅能够识别主 ...

  4. “创新实践”项目介绍8:《无人机跟拍》

    指导教师点评 这个项目涉及高效率低功耗的视觉方案,还涉及无人机控制,难度不低.如果能拥有一个聪明的飞行机器人,应该是很令人振奋的一件事. 项目名称 无人机跟拍 项目成员 刘晋轩,王一帆,刘思语 合作企 ...

  5. 基于Python的岭回归与LASSO回归模型介绍及实践

    基于Python的岭回归与LASSO回归模型介绍及实践 这是一篇学习的总结笔记 参考自<从零开始学数据分析与挖掘> [中]刘顺祥 著 完整代码及实践所用数据集等资料放置于:Github 岭 ...

  6. 基于Python的线性回归预测模型介绍及实践

    基于Python的线性回归预测模型介绍及实践 这是一篇学习的总结笔记 参考自<从零开始学数据分析与挖掘> [中]刘顺祥 著 完整代码及实践所用数据集等资料放置于:Github 线性回归预测 ...

  7. 基于Python的Kmeans聚类分析介绍及实践

    基于Python的Kmeans聚类分析介绍及实践 这是一篇学习的总结笔记 参考自<从零开始学数据分析与挖掘> [中]刘顺祥 著 完整代码及实践所用数据集等资料放置于:Github 聚类算法 ...

  8. 实例学习SSIS(五)--理论介绍SSIS

    导读: 实例学习SSIS(一)--制作一个简单的ETL包 实例学习SSIS(二)--使用迭代 实例学习SSIS(三)--使用包配置 实例学习SSIS(四)--使用日志记录和错误流重定向 实例学习SSI ...

  9. 随机抽样一致算法(RANSAC)理论介绍和程序实现

    1.随机抽样一致算法(Random sample consensus,RANSAC)理论介绍 Ordinary LS是保守派:在现有数据下,如何实现最优.是从一个整体误差最小的角度去考虑,尽量谁也不得 ...

最新文章

  1. 云原生思想 — 云原生的微服务架构
  2. mysql 普通索引使用方法,Mysql索引类型与基本用法实例分析
  3. CodeForces - 431C k-Tree(dp)
  4. c++ lambda 重载_您会后悔对Lambdas应用重载!
  5. c语言程序兔子反之问题,C语言解决兔子产子问题代码及解析
  6. redis 安全 备份 事务
  7. kafka 主动消费_Kafka消费组(consumer group)
  8. 立法者在民权受到侵蚀时忽略了黑匣子算法
  9. SSM SpringBoot vue教务排课系统
  10. C++打卡18-【排序模板】计数排序
  11. Python学习笔记:PYQT5 文字及绘图旋转
  12. Windows路由表的灵异事件
  13. 中兴笔试题目及答案(软件开发工程师)
  14. MySQL 必知必会系列(五)
  15. R语言使用matrix函数创建空矩阵、使用nrow参数和ncol参数指定矩阵的行列数
  16. python字典操作 EasyDict()作用
  17. 关于窗口中TopMost属性的一个问题
  18. [POI2014]Salad Bar
  19. 当逻辑表达式或者算法的计算过程冗长的时候该如何做的简单可读
  20. 知来路方知去处。坎坷已过,一马平川后必看的经典!——2018最新倾斜摄影建模与无人机航拍影像处理完美配置解决方案!

热门文章

  1. Android基于开源项目搭建自己的技术堆栈
  2. 揭秘曾攻击苹果、微软、Fb 的黑客组织 Morpho
  3. 韩国沉没客轮上确认有两名中国人
  4. Django数据库报错相关问题总结(初始化、迁移等)
  5. LaTeX 改变表格序号 1, 2(a), 2(b), 3
  6. ff 15 调用函数与e8调用函数的区别 call的两种二进制命令
  7. Linux中的磁盘分区
  8. 共享奢侈品平台潜力大 但真正要规模化赚钱还远着呢!
  9. 跨入个性化邮件营销的3小步
  10. 恭喜Splashtop 荣获2022年 IT Europa “年度垂直应用解决方案”奖