2.点到点通讯 mpi.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
点到点通讯关于点到点通讯的方式MPI的点对点通信(‘Point-to-Point Communication )同时提供了阻塞和非阻塞两种通信机制。同时也支持多种通信模式。不同通信模式和不同通信机制的结合,便产生了非常丰富的点对点通信函数。通信机制(模式)通信模式(Communication Mode)指的是缓冲管理,以及发送方和接收方之间的同步方式。共有下面四种通信模式:1同步(synchronous)通信模式2缓冲(buffered)通信模式3标准(standard)通信模式4就绪(ready)通信模式1.标准通信模式--MPI_Send在MPI采用标准通信模式时,是否对发送的数据进行缓存是由MPI自身决定的,而不是由并行程序员来控制。如果MPI决定缓存将要发出的数据,发送操作不管接收操作是否执行,都可以进行而且发送操作可以正确返回,而不要求接收操作收到发送的数据。由于缓存数据是需要付出代价的,它会延长数据通信的时间,而且缓冲区也并不是总可以得到的,这样MPI也可以不缓存将要发出的数据,这样只有当相应的接收调用被执行后,并且发送数据完全到达接收缓冲区后发送操作才算完成。2.缓冲通信模式--MPI_BSend当用户对标准通信模式不满意希望直接对通信缓冲区进行控制时可采用缓存通信模式。在这种模式下由用户直接对通信缓冲区进行申请使用和释放,因此缓存模式下对通信缓冲区的合理与正确使用是由程序设计人员自己保证的3.就绪通信模式--MPI_RSend仅当对方的接受操作启动并准备就绪时,才可发送数据。(其发送方式与标准发送完全一致,只不过向MPI环境传递一个额外信息:接收动作已经就绪,直接发就是。)4.同步通信模式--MPI_SSend不论接收端是否启动了接收动作,发送端都可在任何时机启动发送动作。但发送端需等待接收端的接收动作发送并开始接收数据之后才可以结束。阻塞方式通信阻塞通信是指详细发送方的send调用需要接受方的recv调用的配合才可完成。标准通信模式注意里面传递参数的个数对于阻塞通讯包括6个参数发送函数参数的类型一个状态查询函数非阻塞通讯多了一个对象(re..) 发送和接受函数的使用缓冲通信模式模拟非阻塞通讯申请缓冲区通过缓冲区发送接受数据避免通讯过程中产生死锁或者阻塞非阻塞方式通信主要用于解开阻塞同喜的发送和接收之间的耦合005_sendinit_recvinit(重复非阻塞通信)缺点:会导致额外的内存到内存的复制开销及导致一定的性能损失和资源占用,不能改变程序的正确性。优点:发送完成与否不会受到远程端匹配进程状态的影响。可重复非阻塞通信:处理通信的时候初始化的过程:注意重复通信时,通信的初始化操作并没有启动消息通信,消息真正开始通信是由MPI_START触发的,消息的完成操作并不释放相应的非阻塞通信对象,只是将其状态置为非活动状态,若下面进行重复通信,则再由MPI_START将该对象置为活动状态,并启动通信。当不需要再进行通信时,必须通过显式的语句MPI_REQUEST_FREE将非阻塞通信对象释放掉,这是重复通信和一般的非阻塞通信不同的地方。  MPI_SEND_INIT创建一个标准模式重复非阻塞发送对象,该对象和相应的发送操作的所有参数捆绑到一起。MPI_RECV_INIT创建一个标准模式非阻塞重复接收对象,该对象和相应的接收操作的所有参数捆绑到一起。参数buf标为OUT是因为用户通过传递该参数给MPI_RECV_INIT给予接收缓冲区写权限。组合发送接收PPT20预防死锁确保一次发送数据量小于环境所能提供缓冲区容量。利用MPI环境消息发送接受的顺序性约束,调整语句的执行顺序。使用缓冲发送模式使用非阻塞通信利用组合发送接收

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档