5

我有以下问题:

我想创建一个基于树形图的虚拟拓扑,例如:

   0
 /   \
1    5
| \  | 
2  4 3

顶点的数量是进程的等级。

我设法做到了,我掌握了我的新通讯器:

MPI_Comm graph_comm;
MPI_Graph_create(MPI_COMM_WORLD, nnodes, indexes, edges, 0, &graph_comm);

现在我的问题是:是否有可能从每个只有子节点的父节点发送广播(MPI_Bcast)(在此示例中,等级为 0 的进程将 bcast 发送到进程 1、5;等级为 1 的进程发送 bcast到进程 2、4;等级为 5 的进程发送 bcast 到进程 3)

4

2 回答 2

2

这似乎是不可能的,必须为广播创建单独的通信器。虽然两者都MPI_Graph_neighbors_count应该MPI_Graph_neighbors足以创建新组,但人们可能想知道,如果可以使用与图拓扑完全相同的数据创建这些组,为什么我们首先需要图拓扑?

于 2013-05-01T22:03:08.653 回答
2

是的,您必须在每个进程中创建组,然后您可以调用MPI_Bcast每个组,其中 root 是节点的父级(在您的示例中,0 是 1 和 5 的父级,但您应该记住,根级别分配给本地通信器,所以 0在本地组中不必为 0,这取决于您如何创建它)。这可以提供帮助:组和通信器管理例程

于 2013-05-04T21:31:16.313 回答