MPI虚拟图拓扑广播

时间:2013-04-24 15:11:34

标签: parallel-processing mpi

我遇到以下问题:

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

   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)

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

是的,您必须在每个进程中创建组,然后您可以在每个组上调用MPI_Bcast,其中root是节点的父节点(在您的示例中0是1和5的父节点,但您应该记住root rank被分配给本地通信器,所以0在本地组中不必为0,这取决于你如何创建它)。 这有助于:Group and Communicator Management Routines