我想在MPI中用4个处理器构建一个二叉树。从根本上说,所有处理器一起工作,下一级我将处理器分成2组,这样叶子每个处理器负责构建本地树。
我使用mpi_comm_slpit将当前的通信器分成两部分。但问题是如何跟踪亲子关系?像串口编程一样,我们使用指向左右孩子的指针?我怎样才能在MPI中处理它?谢谢。
[1-4] <-- root
[1-2] [2-3]
[1] [2] [3] [4]
答案 0 :(得分:0)
没有必要划分通信器。在二叉树中,工作是2 ^ n,其中n是级别。根据您是向上还是向下移动,您将增加空闲处理器或增加处理器数量(尝试想象一下)。因此,例如,如果你从顶部开始可以将你的工作由root分成2.现在W1到root(proc0)和W2到(proc1)。下一步proc0和proc1将W1和W2分成2部分。 W11到proc0,W12到proc3,W21到proc1 W22到proc4等等....
希望这会有所帮助。与传播者一起玩会使事情复杂化;)