【问题标题】:How do build parallel binary tree in MPI?如何在 MPI 中构建并行二叉树?
【发布时间】:2015-05-11 21:56:26
【问题描述】:

我想在 MPI 中从 4 个处理器构建一棵二叉树。在根,所有处理器一起工作,下一级我将处理器分成 2 组,这样在叶每个处理器负责构建本地树。

我使用 mpi_comm_slpit 将当前通信器分成两部分。但问题是我如何跟踪亲子关系?像串行编程一样,我们使用指针来指向左右孩子?如何在 MPI 中处理它?谢谢。

     [1-4]        <-- root
 [1-2]   [2-3] 
[1] [2] [3] [4] 

【问题讨论】:

  • 您可能通过拆分默认通信器使事情变得过于复杂。画出一棵 4 节点的二叉树,将节点标记为 0-3。声明这是跨 4 个处理器分解二叉树的规范方法,编写一个函数,以便处理器知道它自己的等级,可以确定它在二叉树中的位置。继续沟通。
  • 谢谢。我明白你的意思了。

标签: parallel-processing mpi binary-tree


【解决方案1】:

没有必要划分通讯器。在二叉树中,工作是 2^n,其中 n 是级别。根据您是向上还是向下遍历,您将增加空闲处理器或增加处理器数量(尝试想象一下)。因此,例如,如果您从顶部开始,则可以将 root 完成的工作分成 2 个。现在 W1 到 root (proc0),W2 到 (proc1)。下一步 proc0 和 proc1 将 W1 和 W2 分成 2 部分。 W11 到 proc0,W12 到 proc3,W21 到 proc1 W22 到 proc4 等等......

希望这会有所帮助。与通讯器一起玩会使事情复杂化;)

【讨论】:

    猜你喜欢
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 2010-10-24
    • 1970-01-01
    • 2016-07-30
    相关资源
    最近更新 更多