Parallel processing MPI虚拟图拓扑广播
我有以下问题: 我想基于树形图创建一个虚拟拓扑,例如:Parallel processing MPI虚拟图拓扑广播,parallel-processing,mpi,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
/ \
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)这似乎是不可能的,必须为广播创建单独的通讯器。虽然
MPI\u图形\u邻域\u计数
和MPI\u图形\u邻域
都应该足以创建新的组,但人们可能会想,如果可以使用与图形拓扑完全相同的数据创建这些组,那么我们首先为什么需要图形拓扑呢?是的,您必须在每个进程中创建组,然后可以在每个组上调用MPI\u Bcast
,其中root是节点的父级(在您的示例中,0是1和5的父级,但您应该记住,root列组已分配给本地通信器,因此0在本地组中不必为0,这取决于您如何创建它)。
这有助于: