3

我希望有一个管理器进程通过共享内存共享图,对于将在这些图上运行各种图算法的其他进程是只读的。我想问一些在研究这个问题时出现的问题:

  • 是否有任何图形库能够在只读 shm 中操作(可能是它们自己的)图形结构?也就是说,算法需要将它们的工作区和结果缓冲区放在本地进程内存中,并且不使用在图形结构中声明的任何缓冲区。

  • 我知道有两个著名的库是igraphBoost。对前者的C接口了解不多,也没有用过Boost。在这个主题上有什么经验(关于 shm 兼容性)?

  • 在查看 Boost 文档时,我看到有一个支持 shm 的 Boost.Interprocess 包。

    • 起初我考虑使用手动制作的 shm 和 mmapped shm(Linux 平台)。Boost 是否优于并推荐这种方法?
    • Boost Graph 库与手动 shm 或 Interprocess 一起玩得好吗?

除了对这些问题的见解之外,我很高兴阅读您在图形处理和共享内存方面的经验。谢谢!

4

1 回答 1

1

在 Boost Graph Library 中,各种图形类型只是概念(http://www.boost.org/doc/libs/1_42_0/libs/graph/doc/graph_concepts.html)。

您应该能够实现自己的图形结构,遵守您需要的概念并对您自己的数据应用任何 BGL 算法(或者也许只是将您的共享数据包装在 edge_list 类http://www.boost.org/doc/ libs/1_42_0/libs/graph/doc/edge_list.html)。

由于您正在查看共享内存,您可能还对 Parallel BGL ( http://www.boost.org/doc/libs/1_42_0/libs/graph_parallel/doc/html/index.html )感兴趣

高温高压

于 2010-03-19T20:42:44.230 回答