2013-04-24 109 views
5

我有以下问题: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的进程向进程1,5发送bcast;等级为1的进程向进程2,4发送bcast;用等级为5的进程向进程3发送bcast)

回答

2

似乎是不可能的,人们必须为广播创造独立的传播者。尽管MPI_Graph_neighbors_countMPI_Graph_neighbors应该足以创建新组,但是如果可以使用与拓扑图完全相同的数据创建这些组,那么为什么我们首先需要图拓扑?

2

是的,您必须在每个过程中创建组,然后您可以在每个组上调用MPI_Bcast,其中根是父节点(在您的示例中,0是父节点的父节点,但应记住已分配根级别到当地的传播者,所以0不必在本地组0,这取决于你如何创建它)。 这可以帮助:Group and Communicator Management Routines