我已经阅读了这些术语的定义,我的解释是,一个小组和沟通者之间存在一对一的关系。一个组是一组希望相互交流的过程,沟通者是一个组的实现。

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

有帮助吗?

解决方案

一个 团体 是一个 订购的过程标识符集 (MPI 2.2规格,第6.2.1节)。通过与每个过程标识符关联一个独特的订购 从0到组。Size -1。

一个 沟通者 将所有通信封装在一组过程中。一个内部通信器与一个组以及 点对点和集体沟通的沟通环境 以及其他上下文信息,例如虚拟拓扑(规格,6.1.2)。一个间交流器与两个非重叠组相关联。

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

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

最后,对小组的构建和操作是本地过程的本地,并且不涉及分解交流。总的来说,这对传播者而言并非如此(从本质上)。

其他提示

我在阅读MPI规范后发现的沟通者和小组之间存在很多差异。

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

Communicator是一组可能相互通信的过程,可能包括一个组或多个组的过程。

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

沟通者包含组,而组只是流程的集合。

如果通信者仅包含一个组,则称为Intracumnicator(通信器,MPI_COMM_WORLD就是其中一个,它是指一个包括所有等级的组)。

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

看一眼 https://computing.llnl.gov/tutorials/mpi_advanced/davidcronkslides.pdf 他在其中给出了一个很好的绘画解释,说明沟通者是一两个组的容器。

MPI中的一个组对应于数学概念“集”,该概念是在MPI中引入的,以促进组织过程和创建新的通信。例如,您可以在集合上使用联合和交叉点操作来创建新集合,以便可以使用它们来创建新的通信者。

一个小组与通信无关,尽管可以使用一个组来创建通信者(沟通者是一个组和上下文)。

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

一个 沟通者 是描述一组过程的对象。在许多应用程序中,所有流程都密切耦合在一起,而您唯一需要的沟通者是mpi_comm_world。

团体 描述您的工作始于所有过程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top