MPI编程简介.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MPI编程简介ppt课件

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 点对点通信 (P to P) 单个进程对单个进程的通信,重要且复杂 术语 Blocking(阻塞) :一个函数须等待操作完成才返回,返回后用户可以重新使用所占用的资源 Non-blocking(非阻塞):一个函数不必等待操作完成便可返回,但这并不意味着所占用的资源可被重用 Local(本地):不通信 Non-local(非本地):通信 阻塞发送(Blocking Send) int MPI_Send(void* buf, int count, MPI_Datatype datatype,int dest, int tag, MPI_Commcomm); IN buf 发送缓冲区的起始地址 IN count 要发送信息的元素个数 IN datatype 发送信息的数据类型 IN dest 目标进程的rank值 IN tag 消息标签 IN comm 通信组 阻塞接受 (Blocking Receive) int MPI_Recv(void* buf, int count, MPI_Datatype datatype,int source, int tag, MPI_Commcomm, MPI_Status *status); OUT buf 发送缓冲区的起始地址 IN count 要发送信息的元素个数 IN datatype 发送信息的数据类型 IN dest 目标进程的rank值 IN tag 消息标签 IN comm 通信子 OUT status status对象,包含实际接收到的消息的有关信息 什么是缓冲区? 应用程序中说明的变量,在消息传递语句中又用作缓冲区的起始位置 也可表示由系统创建和管理的某一存储区域,在消息传递过程中用于暂存放消息.也被称为系统缓冲区 用户可设置一定大小的存储区域,用作中间缓冲区以保留可能出现在其应用程序中的任意消息. 用户缓冲区 系统缓冲区 消息信封(Message Envelope) MPI标识一条消息的信息包含四个域: Source: 发送进程隐式确定,由进程的rank值唯一标识 Destination: Send函数参数确定 Tag: Send函数参数确定, (0,UB),UB:MPI_TAG_UB=32767 Communicator: 缺省MPI_COMM_WORLD Group:有限/N,有序/Rank [0,1,2,…N-1] Contex:Super_tag,用于标识该通讯空间 为什么使用消息标签(Tag)? 未使用标签 使用了标签 为了说明为什么要用标签, 我们先来看右面一段没有使用标签的代码: 这段代码打算传送A的前32个字节进入X, 传送B的前16个字节进入Y. 但是, 如果消息B尽管后发送但先到达进程Q,就会被第一个recv()接收在X中. 使用标签可以避免这个错误. 在消息传递中使用标签 使用标签的另一个原因是可以简化对下列情形的处理: 假定有两个客户进程P和R, 每个发送一个服务请求消息给服务进程Q. 消息匹配 接收buffer必须至少可以容纳count个由datatype参数指明类型的数据. 如果接收buf太小, 将导致溢出、出错 消息匹配 参数匹配dest,tag,comm/ source,tag,comm Source == MPI_ANY_SOURCE:接收任意处理器来的数据(任意消息来源). Tag == MPI_ANY_TAG:匹配任意tag值的消息(任意tag消息) 在阻塞式消息传送中不允许Source==Dest,否则会导致死锁 消息传送被限制在同一个communicator. 在send函数中必须指定唯一的接收者 status参数 当使用MPI_ANY_SOURCE或/和MPI_ANY_TAG接收消息时如何确定消息的来源source 和tag值? 在C中,status.MPI_SOURCE, status.MPI_TAG. 在Fortran中, source=status(MPI_SOURCE),tag=status(MPI_TAG). Status还可用于返回实际接收到消息的长度 int MPI_Get_count(MPI_Status status,MPI_Da

文档评论(0)

118books + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档