MPI中的沟通者和群体有什么区别?

时间:2010-04-15 04:58:25

标签: mpi communicator

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

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

5 个答案:

答案 0 :(得分:6)

有序的进程标识符集(MPI 2.2规范,第6.2.1节)。 通过将每个进程标识符与0之间的唯一等级相关联来给出排序--1。

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

我(可能非常松散地)将传播者的群体视为其符号表。

一个组可能包含来自多个通信器的进程标识符。

最后,组的构造和操作是进程的本地,并且不涉及进程间通信。对于传播者而言,这通常不是真的(就其本质而言)。

答案 1 :(得分:4)

我在阅读MPI规范后发现,传播者和群体之间存在很多差异。

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

Communicator是一组可以相互通信的进程,可能包含来自单个组或多个组的进程。

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

答案 2 :(得分:2)

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

如果一个传播者只包含一个群体,那么它就被称为一个群体通信者(传播者,MPI_COMM_WORLD就是这样一个群体,它指的是一个包括所有群体的群体)。

如果它包含两个组,则在intercommunicator中调用它(默认情况下没有为你创建)。

看看https://computing.llnl.gov/tutorials/mpi_advanced/DavidCronkSlides.pdf,他给出了一个非常好的图解说明,说明传播者是一个或两个群体的容器。

答案 3 :(得分:1)

MPI中的一个组对应于数学概念“集合”,在MPI中引入了该概念以方便组织过程和创建新的通信。例如,您可以对集合使用并集和相交操作来创建新集合,以便可以使用它们来创建新的传播者。

尽管可以使用组来创建通信器(通信器是一个组加上上下文),但组与通信无关。

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

答案 4 :(得分:-1)

沟通者是描述一组流程的对象。在许多应用程序中,所有进程都紧密耦合在一起工作,而您唯一需要的沟通者就是MPI_COMM_WORLD。

,描述您的工作开始的所有过程。