- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 消息传递界面MPI 基础-集群通信
与派生数据类型
4.1 集群通信 (Collective Communications)
4.1.1 集群通信的基本概念
集群通信(Collective Communication )的一个最重要特征是指定的Communicator 中所
有的进程都参与通信操作。缺省情况下是每个进程都需调用该操作函数。一共有三种集群通
信模式,它们是数据移动(Data movement )、数据聚集(Collective computation — reductions )
和同步(Synchronization )。集群通信是阻塞式的,同时执行阻塞通信的函数没有消息标签
这个参数。集群通信不支持派生数据类型。
同步是指所有的进程一直处于等待状态直到通信组中所有的进程都达到了同步这一点
上。
数据移动是指数据的广播(broadcast ),收集/散布和(scatter/gather )和 all to all 操作。
数据聚集是指通信集中的一个进程从其它进程收集数据,同时在这些数据上执行求最小
(min)、求最大(max)、迭加(add)、相乘(multiply)等方面的操作。
MPI 提供的集群通信函数,它们包括障碍同步 (barrier synchronization ) 、 广播
(broadcast ) 、 数据收集 (gather ) 与散发 (scatter ) 、 归约 (reduction ) 等等 这
些函数均要求属于同一进程组 (虚拟通信集)的进程共同参与,协同完成。集群通信函数
根据数据的流向可分为一对多(一个进程对多个进程,如广播、 数据散发) 、多对一(多
个进程对一个进程,如数据收集、 归约) 和多对多 (多个进程对多个进程)三种类型的
操作。在一对多和多对一操作中,有一个进程扮演着特殊的角色,称为该操作的根进程
(root )。
MPI2.0 以前的标准中,提供了丰富的集群操作例程(见下表所示):
类型 函数 功能
数据移动 MPI_Bcast 一到多,消息相同
MPI_Gather 多到一,消息由各个进程决
定
MPI_Gatherv MPI_Gather 的一般形式
MPI_Allgather MPI_Gather 的一般形式
MPI_Allgatherv MPI_Allgather 的一般形式
MPI_Scatter 形式一到多,消息由根结点
决定
MPI_Scatterv MPI_Scatter 一般形式
MPI_Alltoall 多到多,消息由每个进程确
定
MPI_Alltoall MPI_Alltoall 的一般形式
MPI_Alltoallv 上者的一般形式,结果在所
有进程
数据聚集 MPI_Reduce 多到一的聚集操作,结果在
文档评论(0)