[论文解读] Work-Efficient Parallel and Incremental Graph Connectivity
本论文提出了首个在共享内存环境下实现的增量图连通性并行算法,具有多对数级并行深度,实现了高吞吐量的流式边处理。在20核机器上,该算法每秒可处理数亿条边,显著优于串行方法,同时在工作复杂度上保持理论最优性。
On an evolving graph that is continuously updated by a high-velocity stream of edges, how can one efficiently maintain if two vertices are connected? This is the connectivity problem, a fundamental and widely studied problem on graphs. We present the first shared-memory parallel algorithm for incremental graph connectivity that is both provably work-efficient and has polylogarithmic parallel depth. We also present a simpler algorithm with slightly worse theoretical properties, but which is easier to implement and has good practical performance. Our experiments show a throughput of hundreds of millions of edges per second on a $20$-core machine.
研究动机与目标
- 解决在动态、高速数据流中对高吞吐量、实时图分析的需求。
- 设计一种兼具工作高效性和低并行深度的并行增量图连通性算法。
- 在共享内存系统中实现对边更新和连通性查询的高效批量处理。
- 在现代多核架构上实现实际可扩展性和高吞吐量。
- 弥合理论并行算法与流处理框架中实际部署之间的差距。
提出的方法
- 提出一种简单的并行增量连通性算法,通过单次遍历处理边的迷你批次,使用 O(n) 内存和 O(b log n) 的工作量处理 b 条边。
- 引入一种工作优化的算法,总工作量为 O((m + q)α(m + q, n)),与最优串行并查集性能一致。
- 使用带有路径压缩的并行并查集变体,并结合高效的批量处理机制,以最小化冗余工作。
- 设计一种批量更新和批量查询接口,使每个操作可在多个核心上并行处理。
- 利用共享内存并行性,同时处理大规模的边和查询迷你批次,最大限度减少同步开销。
- 在配备超线程技术的20核系统上,实现并评估了该简单算法的实用变体。
实验结果
研究问题
- RQ1能否在共享内存并行环境下实现增量图连通性的算法,既具备工作高效性,又具有多对数级并行深度?
- RQ2如何设计边更新和查询的批量并行处理机制,使其在现代多核系统上实现高效扩展?
- RQ3在真实世界的流式工作负载中,工作高效并行增量图连通性算法的实际性能如何?
- RQ4该算法是否能在实际中实现高吞吐量的同时,保持理论最优性?
- RQ5是否可以设计一种混合算法,在大批次时采用线性工作,小批次时采用并查集风格性能?
主要发现
- 所提出的算法在20核机器(共40个超线程)上实现了每秒3亿条边的处理吞吐量。
- 在20核环境下,该算法相比单线程性能实现了8–11倍的加速,且在不同数据集上均表现出一致的可扩展性。
- 随着批次规模增大,加速比进一步提升,原因是同步开销减少且负载均衡更优。
- 在连通分量较多的数据集(如 rMat16)中,当线程数超过20后,吞吐量开始下降,原因是每批次的工作量不足。
- 与不使用路径压缩的并查集相比,该实现性能高出1.01–2.5倍;与使用路径压缩的并查集相比,其开销在可接受范围内。
- 该算法在保持理论工作最优性的同时,实际中实现了接近线性的加速比。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。