3组通信mpi.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
组通信组(Groups):一组进程标识所组成的集合通信子:定义和封装MPI通信的基本模型,通过上下文(tag)来划分通信空间。每个MPI通信函数都要通过通信子来确定其通信环境,每个通信子都包含了一组进程。 分类:组内通信子:利用一个通信子约束的进程集合MPI环境启动后,自动创建MPI_COMM_WORLD、MPI_COMM_SELF两个组内通信子组间通信子:将两个组绑定在一起,共享一个context组通信,也称集合通信,或集群通信与点对点通信主要区别是,它需要一个特定组内的所有进程同时参与通信主要功能是对一组进程进行通信、同步和计算。组通信分类一对多组通讯广播:int MPI_Bcast(void* buffer,int count,MPI_Datatype datatype,int root, MPI_Comm comm)IN/OUTbuffer通信消息缓冲区的起始地址(可选数据类型)IN count  将广播出去/或接收的数据个数(整型,每个进程接收的数据个数)IN datatype 广播/接收数据的数据类型(句柄,其他进程与root进程数据类型保持一致)IN root  广播数据的根进程的标识号(整型)IN comm  通信域(句柄,其他进程与root进程数据类型保持一致)MPI_BCAST是从一个序列号为root的进程将一条消息广播发送到组内的所有进程,包括它本身在内.调用时组内所有成员都使用同一个comm和root,其结果是将根的通信消息缓冲区中的消息拷贝到其他所有进程中去.根进程发送元素个数指的是发送给每一个进程的数据元素的个数,而不是总的数据个数。这就意味着在每个进程和根进程之间,发送的数据个数必须和接收的数据个数相等。散发:MPI_Scatter(void* sendbuf, int sendcount, MPI_Datatype sendtype,void* recvbuf, int recvcount, MPI_Datatype recvtype,int root, MPI_Comm comm)IN  sendbuf 发送消息缓冲区的起始地址(可选数据类型)IN  sendcount1  发送到各个进程的数据个数(整型)IN  sendtype2  发送消息缓冲区中的数据类型(句柄)OUT  recvbuf  接收消息缓冲区的起始地址(可选数据类型)IN  recvcount  待接收的元素个数(整型)IN  recvtype 接收元素的数据类型(句柄)IN  root 发送进程的序列号(整型)IN  comm 通信域(句柄)注意:—根进程中的sendcount1和sendtype2必须和所有进程的recvcount和recvtype相同。—根进程发送元素个数指的是发送给每一个进程的数据元素的个数,而不是总的数据个数。这就意味着在每个进程和根进程之间,发送的数据个数必须和接收的数据个数相等。—参数root和comm在所有进程中都必须是一致的代码 006_collectivescatter多对一组通讯收集:MPI_Gather(void* sendbuf, int sendcount, MPI_Datatype sendtype,void* recvbuf, int recvcount, MPI_Datatype recvtype,int root, MPI_Comm comm)IN sendbuf 发送消息缓冲区的起始地址(可选数据类型)IN sendcount  发送消息缓冲区中的数据个数(整型)IN sendtype  发送消息缓冲区中的数据类型(句柄)OUT  recvbuf  接收消息缓冲区的起始地址(可选数据类型)[recvbuf=进程个数*发送个数*类型长度]IN recvcount  待接收的元素个数(整型,仅对于根进程有意义)IN recvtype  接收元素的数据类型(句柄,仅对于根进程有意义)IN root 接收进程的序列号(整型)IN comm 通信域(句柄)MPI_Gatherv可以从不同的进程接收不同数量的数据。为此,接收数据元素的个数recvcounts是一个数组,用于指明从不同的进程接收的数据元素的个数。根从每一个进程接收的数据元素的个数可以不同,但是发送和接收的个数必须一致。除此之外,它还为每一个接收消息在接收缓冲区的位置提供了一个位置偏移displs数组,用户可以将接收的数据存放到根进程消息缓冲区的任意位置。数据收集示例:006_collective规约:(相当于进行了gether函数后再多了一步计算功能) ————PPT25MPI_Reduce(void* sendbuf, void* recvbuf, int count, PI_Datatype datatype, M

文档评论(0)

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

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

1亿VIP精品文档

相关文档