MPI最基本的通信模式是在一对进程之间进行的消息收发操作:一个进程发送消息,另一个进程接收消息。这种通信方式称为点对点通信(point to point communications)。

MPI提供两大类型的点对点通信函数。第一种类型称为阻塞型(blocking),第二种类型称为非阻塞型(non blocking)。阻塞型函数需要等待指定操作的实际完成,或至少所涉及的数据已被MPI 系统安全地备份后才返回。如MPI_Send 和MPI_Recv都是阻塞型的。MPI_Send 函数返回时表明数据已经发出或已被MPI系统复制,随后对发送缓冲区的修改不会影响所发送的数据。而MPI_Recv 返回时,则表明数据已经接收到并且可以立即使用。阻塞型函数的操作是非局部的,它的完成可能需要与其他进程进行通信。

非阻塞型函数调用总是立即返回,而实际操作则由MPI 系统在后台进行。非阻塞型函数名MPI_ 前缀之后的第一个字母为“I”,最常用的非阻塞型点对点通信函数包括MPI_Isend 和MPI_Irecv。在调用了一个非阻塞型通信函数后,用户必须随后调用其他函数,如MPI_Wait 或MPI_Test 等,来等待操作完成或查询操作的完成情况。在操作完成之前对相关数据区的操作是不安全的,因为随时可能与正在后台进行的通信发生冲突。非阻塞型函数调用是局部的,因为它的返回不需要与其他进程进行通信。在有些并行系统上,通过非阻塞型函数的使用可以实现计算与通信的重叠进行。

此外,对于点对点消息发送,MPI 提供四种发送模式,这四种发送模式的相应函数具有一样的调用参数,但它们发送消息的方式或对接收方的状态要求不同。

标准模式(standard mode) 由MPI 系统来决定是先将消息拷贝至一个缓冲区然后立即返回(此时消息的发送由MPI 系统在后台进行),还是等待将数据发送出去后再返回。大部分MPI系统预留了一定大小的缓冲区,当发送的消息长度小于缓冲区大小时会将消息拷贝到缓冲区然后立即返回,否则则当部分或全部消息发送完成后才返回。标准模式发送操作是非局部的,因为它的完成需要与接收方联络。标准模式阻塞型发送函数是MPI_Send。

缓冲模式(buffered mode) MPI 系统将消息拷贝至一个用户提供的缓冲区然后立即返回,消息的发送由MPI 系统在后台进行。用户必须确保所提供的缓冲区足以容下采用缓冲模式发送的消息。缓冲模式发送操作是局部的,因为函数不需要与接收方联络即可立即完成(返回)。缓冲模式阻塞型发送函数为MPI_Bsend。

同步模式(synchronous mode) 在标准模式的基础上要求确认接收方已经开始接收数据后函数调用才返回。显然,同步模式的发送是非局部的。同步模式阻塞型发送函数为MPI_Ssend。

就绪模式(ready mode) 调用就绪模式发送时必须确保接收方已经处于就绪状态(正在等待接收该消息),否则将产生一个错误。该模式设立的目的是在一些以同步方式工作的并行系统上由于发送时可以假设接收方已经准备好接收而减少一些握手开销。如果一个使用就绪模式的MPI 程序是正确的,则将其中所有就绪模式的消息发送改为标准模式后也应该是正确的。就绪模式阻塞型发送函数为MPI_Rsend。

MPI点对点通信函数与通信模式相关推荐

  1. 【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计

    学习了MPI四种通信模式 及其函数用法: (1)标准通信模式:MPI_SEND (2)缓存通信模式:MPI_BSEND (3)同步通信模式:MPI_SSEND (4)就绪通信模式:MPI_RSEND ...

  2. gRPC 的 4 种基础通信模式

    题图 |  from freepik 本文将讨论 gRPC 应用程序的 4 种基础通信模式:一元 RPC.服务器端流 RPC.客户端流 RPC 以及双向流 RPC.在这个过程中,我们会使用一些真实用例 ...

  3. MPI常用函数速查表

    MPI_Send(buf,count,datatype,dest,tag,comm) MPI_Recv(buf,count.datatype,source,tag,comm.&status) ...

  4. SAP RFC通信模式

    在网络技术中,数据通信可以大致划分为两种基本模式:同步通信和异步通信. 其本义是:异步通信时,通信双方时钟允许存在一定误差:同步通信时,双方时钟的允许误差较小.在SAP的系统间的通信过程中,也借用术语 ...

  5. TCP/ip通信模式

    TCP/IP 应用层与应用程序 *************************************************** 更多精彩,欢迎进入:http://shop115376623.t ...

  6. ICM20602六轴传感器-IIC通信模式

    ICM20602六轴传感器 ICM20602 通过IIC协议与MCU通信 ICM20602 初始化配置 ICM20602 相关配置函数 ICM20602 内部寄存器 注意事项 (一)ICM20602 ...

  7. MPI中常用的通信方法

    MPI中常用的通信方法 问题描述 梯形法求解积分的串行程序 使用MPI并行化 使用树形结构优化通信 使用MPI_Reduce优化通信 使用MPI_Bcast优化通信 使用派生数据类型优化通信 使用结构 ...

  8. 西门子200/300PLC转以太网同时实现PPI/MPI/DP转modbus通信

    西门子200/300PLC转以太网同时实现PPI/MPI/DP转modbus通信 产品简介 兴达易控MPI-ETH-XD1.0plus是在MPI-ETH-XD1.0的基础上,以太网口增加了支持与西门子 ...

  9. 十五天精通WCF——第六天 你必须要了解的3种通信模式

    十五天精通WCF--第六天 你必须要了解的3种通信模式 原文:十五天精通WCF--第六天 你必须要了解的3种通信模式 wcf已经说到第六天了,居然还没有说到这玩意有几种通信模式,惭愧惭愧,不过很简单啦 ...

  10. mysql anyvalue报错_Mysql 的ANY_VALUE()函数和 ONLY_FULL_GROUP_BY 模式

    Mysql 的ANY_VALUE()函数和 ONLY_FULL_GROUP_BY 模式 1.ONLY_FULL_GROUP_BY 引发 在mysql 5.7版本以上进行一些ORDER BY 或者 GR ...

最新文章

  1. linux下的python环境,linux下python环境
  2. 7-2一元多项式的乘法与加法运算
  3. JAVA模拟肯德基点餐系统源码,肯德基辞职员工透露,用这几句暗语点餐,你拿的分量会比别人多...
  4. Java中的ThreadLocal的使用--学习笔记
  5. python分类预测_python做logistic分类预测尝试
  6. 前端学习(1797):前端调试之html/css介绍
  7. 数据结构:排序算法之堆排序和选择排序
  8. html与java接口,JavaWeb学习——Servlet相关的接口和类
  9. 括弧匹配检验(信息学奥赛一本通-T1354)
  10. 特征筛选1——根据方差筛选(单变量筛选)
  11. 表达式转换成后缀表达式进行计算
  12. 华为获 25 份 5G 合同;ofo 退款用户数超千万;贾跃亭躲豪宅拒收法律文书 | 极客头条...
  13. PYTHON_SPLIT
  14. Spring学习总结(2)- AOP
  15. JavaScript遍历DOM
  16. java arrays_Java的Arrays方法分析
  17. vb改变字形的代码是什么_VB里什么代码可以把文本框中的字改成斜体
  18. 【CC2640R2F】香瓜CC2640R2F之LCD
  19. Frps一键安装脚本,带Frpc Windows便捷启动脚本
  20. 宝贝对不起,放下工作养不起你,拿起工作陪不了你…

热门文章

  1. 如何成就一个小而美的存储科技公司?
  2. 新构造运动名词解释_第十三章 新构造运动
  3. 油猴插件的介绍和安装详解脚本的介绍和添加举例
  4. c语言实现的学生信息查询系统
  5. 提出现代计算机工作原理的科学家是谁,现代计算机之父是谁_计算机信息处理能力_计算机能自动工作原理(2)...
  6. 人行261号文关于电子账户的解读
  7. [数图] 实验四 图像的滤波处理与图像空间变换
  8. Retrofit详解
  9. 极狐Gitlab操作手册
  10. Flume错误:Flume:Class path contains multiple SLF4J bindings