在上一篇中我们介绍了 mpi4py 中的组间通信方法, 下面我们将对组及通信子做一个简短的小结。
组在 MPI 环境中指的是一组进程标识所组成的有效集合,而通信子定义了封装 MPI 通信的基本模型。组对象存在于通信子环境内,为通信子定义和描述通信参与者(进程),并提供表示和管理进程的若干功能。组与通信子对象都可在运行时刻动态创建和删除。某进程可同时属于一个以上的组/通信子,分别在各自组/通信子内拥有唯一的 rank。
通信子可分为组内通信子和组间通信子。MPI.COMM_WORLD 和 MPI.COMM_SELF 是 mpi4py 中两个预定义的组内通信子,前者包含启动时的所有进程,而后者仅包含进程自身。组间通信子允许一个组内的进程与另一个组的进程进行通信。
从应用程序角度来看,组与通信子实际在功能上是一类,涉及组的操作为构造通信子对象的功能提供了一个底层支持。设计组与通信子机制的目的不外乎如下几个:
- 支持根据功能对任务进行分组——即构建任务组;
- 可将集合操作约束在某个子集合内;
- 为用户自定义虚拟拓扑提供支持;
- 确保通信安全。
以上简要总结了 mpi4py 中的组与通信子的基本概念和用途,在下一篇中我们将进行集合通信的介绍。