[MPI] MPI通信域

学习资料 《并行算法实践》(陈国良等)4.3.3 通信域

学习笔记

           通信域(Communicator)包括进程组(Process Group) 和 通信上下文(Communication Context)等内容,用于描述通信进程间的通信关系。 通信域分为组内通信域和组间通信域,分别用来实现MPI的组内通信(Intra-communication) 和 组间通信(Inter-communication),多数 MPI用户只需进行组内通信。

          进程组是进程的有限、有序集。 相关函数: (NOTE: 这里思考一个问题,如何指定某些机器作为一个进程组的成员?)

                   MPI_Comm_size(communicator, &group_size)  //获取进程数

                   MPI_Comm_rank(communicator,&my-rank)   //获取进程编号

          MPI中通信上下文如同系统设计的超级标签(Super Tag),用于安全地区别不同的通信,以免相互干扰。

          MPI 包括几个预定义的通信域。 例如,MPI_COMM_WORLD 是所有进程的集合,在执行了MPI_Init 函数之后自动产生,MPI_COMM_SELF 只包含使用它的进程。

1、管理通信域

      MPI提供了丰富的函数用于管理通信域。部分函数如下。

      MPI_Comm_size,获取指定通信域中进程的个数;

      MPI_Comm_rank,  获取当前进程在指定通信域中的编号;

      MPI_Comm_compare, 对给定的两个通信域进行比较;

      MPI_Comm_dup, 复制一个已有的通信域,生成一个新的通信域,两者除通信上下文不同外,其他都一样;

      MPI_Comm_create, 根据给定的进程组创建一个新的通信域;

      MPI_Comm_split,从一个指定通信域分裂出多个子通信域,每个子通信域中的进程都是原通信域中的进程;

      MPI_Comm_free, 释放一个通信域。

 

2、组间通信域

      组间通信域是一种特殊的通信域,该通信域包括了两个进程组,分属于两个进程组的进程之间通过组间通信域实现通信。 一般把调用进程所在的进程组称为本地进程组,而把另外一个称为远程进程组。部分管理组间通信域的函数如下。

       MPI_Comm_test_inter,   判断给定的通信域是否为组间通信域;

       MPI_Comm_remote_size, 获取指定组间通信域中远程进程组的大小;

       MPI_Comm_remote_group,返回给定组间通信域的远程进程组;

       MPI_Intercomm_creat,  根据给定的两个组内通信域生成一个组间通信域;

       MPI_Intercomm_merge, 将给定组间通信域包含的两个进程组合并,形成一个新的组内通信域。

     

学习总结

       这里只给出了通信域额概括描述,具体内容还需查询其他书籍。

posted on 2012-10-29 21:32  applesun0757  阅读(1819)  评论(0)    收藏  举报