如何在C / MPI中实现二叉树?特别是,如何在处理器上收集树的缺失部分?
假设我想在N子矩形中划分一个矩形,N是进程的总数。
我从两个子矩形中的一个除法开始(沿着一个方向和一个由某个规则给出的位置,从不介意这里)。左边的矩形分配给进程[0,mid_process],右边的子矩形分配给其他进程。
然后我在这两个子矩形中递归地执行此操作,直到最终只有一个进程留在当前子矩形中。
通过这样做,每个流程都将拥有一个" local"树的一部分,由路径组成,从自身到根节点。
然而,后来的一个,一旦构建了树,我希望每个进程(即每个最终的子矩形)识别哪个是它的相邻进程。
假设我在本地拥有整个树,这可以通过遍历树来完成,并且对于每个叶子,查看其空间范围并将其边界与我们查看邻居的子矩形的边界进行比较对
这件事我不确定如何发送和接收树的缺失部分。
此处的图显示了11个进程及其关联的二叉树之间的分解示例。
让我们说我是进程2.在本地,我在内存中的树包含以下节点:[root],[0-4],[2-4],[2] ,[]中的数字是进程的排名。过程[2]的邻居是[0],1,[3],[4],[5],[8]。