在MPI中,通信器和组之间有什么区别?

在MPI中,通信器和组之间有什么区别?,mpi,communicator,Mpi,Communicator,我已经阅读了这些术语的定义,我的解释是团队和沟通者之间存在一对一的关系。组是希望彼此通信的一组进程,而通信器是组的实现 这是正确的吗?如果是这样,为什么会有两个不同的术语呢?正如我在阅读MPI规范后发现的那样,通信者和组之间有很多不同之处 编辑: 组是表示进程组的对象 通信器是一组可以相互通信的进程,可以由单个组或多个组的进程组成 因此,它们是完全不同的实体。它们不应相互混淆。组是一组有序的过程标识符(MPI 2.2规范,第6.2.1节)。 通过将从0到group.size-1的唯一秩与每个流程

我已经阅读了这些术语的定义,我的解释是团队和沟通者之间存在一对一的关系。组是希望彼此通信的一组进程,而通信器是组的实现


这是正确的吗?如果是这样,为什么会有两个不同的术语呢?

正如我在阅读MPI规范后发现的那样,通信者和组之间有很多不同之处

编辑: 组是表示进程组的对象

通信器是一组可以相互通信的进程,可以由单个组或多个组的进程组成


因此,它们是完全不同的实体。它们不应相互混淆。

组是一组有序的过程标识符(MPI 2.2规范,第6.2.1节)。 通过将从0到group.size-1的唯一与每个流程标识符关联,给出排序


通信器封装了一组进程之间的所有通信。内部通信器与组以及点对点和集体通信的通信上下文以及可能的其他上下文信息(如虚拟拓扑)相关联(规范6.1.2)。一个inter communicator与两个不重叠的组相关联

我(可能非常松散地)认为一个通信者的组是它的符号表

一个组可以包含来自多个通信者的进程标识符


最后,组的构造和操作是进程的本地操作,不涉及进程间通信。一般来说,对于通信者来说,情况并非如此(就其本质而言)。

通信者包含组,而组只是进程的集合

如果通讯器仅包含一个组,则称为内部通讯器(通讯器MPI_COMM_WORLD是指包含所有列组的一个组)

如果它包含两个组,则在intercommunicator中调用它(默认情况下不会为您创建任何组)


看看他在哪里给出了一个非常好的图形解释,说明了一个通信器是一个或两个组的容器。

a通信器是一个描述一组过程的对象。在许多应用程序中,所有进程紧密耦合在一起工作,您需要的唯一通信器是MPI_COMM_WORLD


描述工作开始时的所有流程。

MPI中的组对应于数学概念“集合”,它在MPI中引入,以便于组织流程和创建新的通信。例如,可以对集合使用并集和交集操作来创建新集合,以便使用它们来创建新的通讯器

组与通信无关,尽管组可用于创建通信器(通信器是一个组加上上下文)


组还可以用作在不同进程之间分发任务/数据的ID。例如,我们可以测试一个流程是否在一个组中,以确定它是否应该做某事。

我对此投了否决票,因为这是一个对问题的糟糕回答,它无法向OP解释差异可能是什么。