从第一篇笔记开始,我们就使用了comm这个对象.
而且,几乎每次新学习的函数,都是这个comm的一个方法.
今天,我们就来重新认识comm,它到底是什么?
1.通信子
comm是一个通信子.什么是通信子?
通信子其实就是一个对讲机,每个进程都有一个对讲机.
通过对讲机,你可以和某个人对话,也可以对全部人发出广播.
2.通信组
警察有警察之间的对讲机,盗贼有盗贼之间的对讲机.
显然,警察的对讲机是不应该能和盗贼的对讲机通信的(不包括偷听).
这样的话,我们就有了通信组的概念.
警察之间形成一个通信组,盗贼之间形成一个通信组.
3.MPI里的通信组
MPI里有一个类Group,它就是充当了通信组的角色.
当我们有一个对讲机comm的时候,我们通过Get_group()的方法可以得到对应的Group对象.
Group对象有什么用?它可以用来创建新的通信组!
4.MPI里的默认通信子
我们一开始就用到了一个系统帮我们创建的全局通信子,就是COMM_WORLD,它包含了所有的进程.
其实还有两个系统默认创建的通信子,一个是COMM_SELF,另一个是COMM_NULL.
COMM_SELF仅仅包含了当前进程,而COMM_NULL则什么进程都没有包含.
在下面的代码中,我们将使用到COMM_NULL.