C++ 通过AABB树:AABB树的序列化?

C++ 通过AABB树:AABB树的序列化?,c++,mpi,cgal,aabb,C++,Mpi,Cgal,Aabb,我正在尝试并行化我的代码,我正在使用CGAL的AABB树进行干扰检测(顺便说一句,效率相当高)。 在一台机器上没有问题(我不是说它是多线程的,但这是另一个故事),但我现在想一次做几个分析,我将使用MPI在多台计算机上生成我的软件。在不同的分析中,障碍没有改变,因此我的AABB树对于所有儿童都是相同的。 为了最小化开销,我希望避免重新读取和重新构建我的树,实际上,甚至不需要写文件/读文件操作 通过MPI函数的SPAWN,我可以为子函数提供一个字符串数组,我希望将AABB树和其他全局变量作为参数传递

我正在尝试并行化我的代码,我正在使用CGAL的AABB树进行干扰检测(顺便说一句,效率相当高)。 在一台机器上没有问题(我不是说它是多线程的,但这是另一个故事),但我现在想一次做几个分析,我将使用MPI在多台计算机上生成我的软件。在不同的分析中,障碍没有改变,因此我的AABB树对于所有儿童都是相同的。 为了最小化开销,我希望避免重新读取和重新构建我的树,实际上,甚至不需要写文件/读文件操作

通过MPI函数的SPAWN,我可以为子函数提供一个字符串数组,我希望将AABB树和其他全局变量作为参数传递,以跳过开销中读取文件的部分

第一个问题:这意味着在argv中传递1.5MB+之类的数据,有什么问题吗


第二个问题:我如何通过这棵树?我在这本书中读到了一些有趣的东西,但它已经过时了,而且没有后续报道。有没有人在这段时间里做了连载?有什么新的指示吗?否则,我将尝试做这样一个函数,至少在我的例子中是这样(即,简单的笛卡尔核,三角形3原语)。欢迎任何帮助:)

不幸的是,您引用的线程中的答案仍然有效:CGAL没有提供任何帮助AABB树序列化的内容。你的AABB树中有什么类型的基元?

关于你的第一个问题:太好了!非常感谢,这真的很有帮助。它确实显示了我有一些空白:)更完整的阅读,我不会尝试将树作为args传递。我将尝试将数据写入一个文件,避免重新构建树。谢谢你!我使用简单笛卡尔核中的三角形3。我不使用KD树,因为我只需要交叉点查询。我正在查看AABB_节点、AABB_搜索树、成员m_原语和m_p_根节点,如链接中所回答。谢谢你的快速回答!你似乎对CGAL了如指掌,所以我想让你再容忍我一点:)你对将AABB_tree.h成员“Primitives m_Primitives”和“Node*m_p_root_Node”公开,并复制m_Primitives的数据(因为它是std::vector,内存安排是继续的)和m_root_Node指向的数据有何想法(即,第一个AABB)将最后一个AABB放入字符(例如此[thread]()中的[code]())(下一个注释…)为了结束最后一部分,可能重新启用AABB_node.h的复制构造函数/赋值运算符?或者我在这里完全错了?不,你没有错。但我怀疑CGAL是否可以正式接受这样的补丁。困难在于AABB树代码无法控制存储在其中的原语的类型。我不打算这样做制作一个补丁(至少不是现在,也不是在这种状态下)。首先,我会编译CGAL并进行必要的修改,如果可行,请创建一个friend函数进行复制。回到真正的问题,我重新阅读了旧邮件,忘记了搜索树。但是,我想再次复制该类成员m_p_树所指向的数据。我理解AABB_树不控制或甚至不知道o的类型对于原语,但这有关系吗?通过复制AABB_树的m_p_根_节点指向的数据,AABB_节点类型是嵌入的,不是吗?