所连接组件的并行算法

时间:2019-01-05 23:09:35

标签: multithreading algorithm graph parallel-processing multiprocessing

我必须从已知的图中找到最佳算法,用于并行计算图的连接部分。

以下是我的数据和计算机体系结构的简要概述:

  • 我可以访问包含数千个计算集群 处理器(内存不是共享的,但我希望应该有 一个节点中有足够的内存来评估我的整体需求 数据)。
  • 我的图的边数与顶点数之比很小(约5)
  • 我希望大多数连接的组件都非常小(2-3个顶点)
  • 但是,将会有非常大的组成部分,具有数百万个顶点(甚至占顶点总数的10%)。

我已经阅读了有关计算图的连接部分的并行算法。正如我所注意到的,对于序列化案例,其中一些基于经典的BFS方法。老实说,这些算法的数量让我有些迷茫。谁能给我一些建议,哪种算法最适合我的目的?

1 个答案:

答案 0 :(得分:3)

对于单机多核实现,

Ligra还是最先进的。它应该能够处理您的图形。

Connected Components at Scale via Local Contractions,由我的同事JakubŁącki,Vahab Mirrokni和MichałWłodarczyk撰写,是MapReduce算法的最新技术(至少我知道)。我们已经在比您大一千倍的图表上使用了它。