2014-05-09 47 views
0

目前,我有一个很好的C++图形算法,用自定义结构体定义的链接列表或链接列表数组(我应该把它变成模板定义,但目前不是)。这个算法很容易分发,我想测试一下。但是,除了理解一些基本的MPI示例之外,我没有太多的OpenMPI经验。C++ OpenMPI linked-lists

  1. 如何在OpenMPI中使用链接列表?
  2. 在MPI中使用链接列表的常用做法是什么?例如,当我将链表传递给其他进程并将其转换回来时,我可以将链表转换为数组。
  3. 我需要分别处理每个链表类吗?目前,我有4个独立的链表。如果是这种情况,我可能更适合制作模板类定义。

感谢您的指导和一切帮助!

回答

2

裸露的接口基本上提供了一种方法来以各种方式向其他节点发送连续的内存区域,但不会遍历链接列表以供您执行。

因此,您需要根据您的算法的合理性决定如何传输和接收数据,以优化性能。例如,您可以为每个元素发送一条消息,或收集其中的许多消息并进行分散。

+1

这是正确的答案;我只想补充一点,这不仅仅是一个MPI的东西。当您(OP)想要序列化全部或部分链表时 - 将其捆绑并发送到某处,无论是到另一个节点还是磁盘 - 您需要执行类似于选项2的操作(可能使用类似选项3避免代码重复用于不同种类的列表)。如果不遍历结构并编组数据,则无法将数据写入磁盘;与MPI是同一个问题。 –