网站大量收购独家精品文档,联系QQ:2885784924

中科院计算所谭光明老师课件C03-进程组与通信域.ppt

中科院计算所谭光明老师课件C03-进程组与通信域.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进程组与通信域 谭光明 副研究员 tgm@ncic.ac.cn 中国科学院计算技术研究所 国家智能计算机研究开发中心 计算机体系结构国家重点实验室(筹) 简介 统一的机制或对象来方便地指示通信上下文,通信进程的组,嵌入抽象进程命名,存储装饰 通信上下文 进程组 虚拟拓扑 通信子 基本概念 组 一个组是进程标志符(后面的进程〕的一个有序集。进程是与实现相关的对象。组内的每个进程与一个整数rank相联系。序列号是连续的并从0开始。组用模糊的组对象来描述,因此不能直接从一个进程到另一个进程传送。可在一个通信子使用组来描述通信空间中的参与者并对这些参与者进行分级 上下文 上下文是通信子所具有的一个特性,它允许对通信空间进行划分。一个上下文所发送 的消息不能被另一个上下文所接收。进一步说,允许集合操作独立于挂起的点对点操作。上下文不是显式的MPI对象;它们仅作为通信子实现的一部分而出现 组内通信子 组内通信子将组的概念和上下文的概念结合到一起。为支持指定实现的优化及应用拓扑。MPI通信操作引用通信子来决定点对点和集合操作进行操作的范围和空间 组构造子 int MPI_Comm_group(MPI_Comm comm, MPI_Group *group) 输入:comm ,通信子(句柄〕 输出:group , 对应comm(句柄〕的组 #include mpi.h MPI_Comm comm_world; MPI_Group group_world; comm_world = MPI_COMM_WORLD; MPI_Comm_group(comm_world, group_world); 创建一个组(1) int MPI_Group_incl(MPI_Group old_group, int count, int *members, MPI_Group *new_group) 该组包括group中的n个进程,这n个进程用序列号rank[0] ... rank[n-1]表示;在new_group中具有序列号i的是group中具有序列号ranks[i]的进程。ranks中n个元素中的每一个必须是group中的有效元素而且所有的元素都必须是不同的,否则程序就是错误的.如果n=0,则new_group是MPI_GROUP_EMPTY。 #include mpi.h MPI_Group group_world, odd_group, even_group; int i, p, Neven, Nodd, members[8], ierr; MPI_Comm_size(MPI_COMM_WORLD, p); MPI_Comm_group(MPI_COMM_WORLD, group_world); Neven = (p+1)/2; /* processes of MPI_COMM_WORLD are divided */ Nodd = p - Neven; /* into odd- and even-numbered groups */ for (i=0; iNeven; i++) { /* members determines members of even_group */ members[i] = 2*i; }; MPI_Group_incl(group_world, Neven, members, even_group); 创建一个组(2) int MPI_Group_excl(MPI_Group group, int count, int *nonmembers, MPI_Group *new_group) 通过从group中删除具有序列号ranks[0],...,ranks[n-1]的进程创建了一组进程newgroup。newgroup中的进程次序与group中的次序相同。ranks中n个元素中的每一个必须是group中的有效序列号且所有的元素都必须是不同的;否则,程序就是错误的. 如果n=0, newgroup与group相同 #include mpi.h MPI_Group group_world, odd_group, even_group; int i, p, Neven, Nodd, nonmembers[8], ierr; MPI_Comm_size(MPI_COMM_WORLD, p); MPI_Comm_group(MPI_COMM_WORLD, group_world); Neven = (p+1)/2; /* processes of MPI_COMM_WORL

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档