multithreading - 连通分量的并行算法

标签 multithreading algorithm graph parallel-processing multiprocessing

我必须从已知的图形连通分量并行计算中找到最佳算法。

这里是我的数据和计算机架构的简要概述:

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

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

最佳答案

Ligra对于单机多核实现,它要么是最先进的,要么接近它。它应该能够毫无问题地处理您的图表。

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

关于multithreading - 连通分量的并行算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54057160/

相关文章:

java - 使用datastax java驱动程序异步写入cassandra的有效方法?

c# - 线程编程 - 与异步编程的关系?对网络应用有用吗?

algorithm - 动态规划(最大总和)

c++ - 我无法编译此 dijkstra 代码。 (算法设计手册)

graph - ArangoDB 2.8 中通过相同边缘集合进行多次遍历

multithreading - Perl的线程系统如何工作?

multithreading - 设置OpenMP中的内核数

java - 生成图表时文件数据解析不完整

python - 具有不允许分配和不可解矩阵的匈牙利方法

python - 将字符串拆分为最大长度 X 的片段 - 仅在空格处拆分