并行计算技术及其应用8-9章.ppt

  1. 1、本文档共112页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
同一个接收者时,如果没有消息标识,接收者就无法将这两个消息区分开来。如: Process X: Process Y: Send(A, 16, Y) Recv(C, 16, X) Send(B, 16, Y) Recv(D,16,X) 在以上这段代码中,原意是将A的前16个字节发送到C,将B的前16个字节发送到D。但是,如果消息B虽然比消息A晚发送,但却早于消息A到达进程Y,则B的前16个字节就会错误地发送到C中,而晚到消息A则会错误的把前16个字节发送到D中。为了避 免这种情况的发生,MPI就定义了采用消息标识。如: Process X: Process Y: Send(A, 16, Y, tag1) Recv(C, 16, X, tag1) Send(B, 16, Y, tag2) Recv(D,16,X, tag2) 将代码经过修改,加入了消息标识,这样即使消息B比消息A早到进程Y,但是由于消息标识不匹配,它只能等待。只有接收了消息A的内容后,才会接收消息B的 内容。 9.3.3 通信域 通信域(Communicator)包括进程组(Process Group)和通信上下文(Communication Con- text)等内容,用于描述通信进程间的通信关系。通信域分为组内通信域和组间通信域,分别用来实现MPI的组内通信(Intra-communication)和组间通信(Inter-commu- nication),多数MPI用户只需进行组内通信。 9.4 点对点通信(Point-to-point Communi- cation) 9.4.1 MPI通信模式 (1)标准通信模式 (2)缓冲通信模式 (3)同步通信模式 (4)就绪通信模式 9.4.2 阻塞通信 9.4.3 非阻塞通信 图9.2 MPI的四种通信模式 图9.3 阻塞消息发送和接收 图9.4 阻塞与非阻塞调用 (1)MPI_Isend C语言:int MPI_Isend(void* buf,int count,MPI_Datatype datatype,int dest,int tag, MPI_Comm comm, MPI_Request *request ) Fortran语言:MPI_ISEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR) type BUF(*) INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR 参数说明:IN BUF, 所要发送消息数据的首 地址。 IN COUNT, 发送消息数组元素的个数。 IN DATATYPE, 发送消息的数据类型。 IN DEST, 接收消息的进程编号。 IN TAG, 消息标签。 IN COMM, 通信域。 OUT REQUEST, 请求句柄以备将来查询。 (2)MPI_Irecv C语言:int MPI_Irecv(void* buf,int count,MPI_Datatype datatype,int source, int tag,MPI_Comm comm,MPI_Request *request) Fortran语言:MPI_IRECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR) type BUF(*) INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR 参数说明:OUT BUF,接收消息数据的首地址。 IN COUNT, 接收消息数组元素的个数。 IN DATATYPE, 接收消息的数据类型。 IN SOURCE, 发送消息的进程编号。 IN TAG, 消息标签。 IN COMM, 通信域。 OUT REQUEST, 请求句柄以备将来查询。 (3)MPI_Wait C语言:int MPI_Wait(MPI_Request *request, MPI_Status *status) Fortran语言:MPI_WAIT(REQUEST, STATUS, IERROR),INTEGER REQUEST, STATUS(MPI_STATUS_SIZE), IERROR 参数说明: INOUT REQUEST,请求句柄。 OUT STATUS, 发送或接收消息的状态。 (4)MPI_Test C语言:int MPI_Test(MPI_Request *request, int* flag, MPI_Status *status) Fortran语言:MPI_TEST( REQUEST, FLAG

文档评论(0)

132****9295 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档