【问题标题】:MPI virtual graph topology broadcastMPI虚拟图拓扑广播
【发布时间】:2013-04-18 05:17:23
【问题描述】:

我有以下问题:

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

   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 ; rank 5 的进程发送 bcast 到进程 3)

【问题讨论】:

    标签: parallel-processing mpi


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-07-23
        • 2014-01-22
        • 1970-01-01
        • 2011-01-04
        • 1970-01-01
        • 2018-03-10
        • 2012-03-17
        • 1970-01-01
        • 2014-05-07
        相关资源
        最近更新 更多