[论文解读] GVE-Louvain: Fast Louvain Algorithm for Community Detection in Shared Memory Setting
本文提出 GVE-Louvain,一种针对共享内存环境的 Louvain 算法优化并行实现,通过 9 项针对性优化加速了局部移动与聚合阶段。在双 16 核 Intel Xeon 系统上,GVE-Louvain 在 38 亿条边的网络图上实现了每秒 5.6 亿条边的处理速度,相较于 Vite、Grappolo 和 NetworKit 分别提升了 50 倍、22 倍和 20 倍,且每增加一倍线程可实现 1.6 倍的加速比。
Community detection is the problem of identifying natural divisions in networks. Efficient parallel algorithms for identifying such divisions is critical in a number of applications, where the size of datasets have reached significant scales. This technical report presents one of the most efficient multicore implementations of the Louvain algorithm, a high quality community detection method. On a server equipped with dual 16-core Intel Xeon Gold 6226R processors, our Louvain, which we term as GVE-Louvain, outperforms Vite, Grappolo, NetworKit Louvain, and cuGraph Louvain (running on NVIDIA A100 GPU) by 50x, 22x, 20x, and 5.8x faster respectively - achieving a processing rate of 560M edges/s on a 3.8B edge graph. In addition, GVE-Louvain improves performance at an average rate of 1.6x for every doubling of threads.
研究动机与目标
- 解决 Louvain 算法聚合阶段的性能瓶颈问题,尽管局部移动阶段的并行化已取得进展,但该阶段仍缺乏充分优化。
- 通过针对共享内存多核架构进行优化,提升大规模图社区检测的效率,此类架构具有能效高且广泛可用的优势。
- 提供一个统一的、高度优化的实现,将分散的算法改进整合为单一高性能并行框架。
- 在最小化负载不平衡与并发执行竞争的前提下,实现强可扩展性并保持高模块度质量。
- 通过为未来动态算法扩展奠定基础,实现动态图中实时或交互式社区检测。
提出的方法
- 对 Louvain 算法应用 9 项针对性优化,重点降低共享内存环境中的内存竞争并提升数据局部性。
- 通过向量化哈希表与高效的线程分配策略优化局部移动阶段,以减少虚假共享与缓存未命中。
- 通过自定义可扩展的归约策略加速聚合阶段,最大限度减少锁竞争并提升线程间负载均衡。
- 引入结合 OpenMP 任务调度与静态调度的混合方法,以在不规则图工作负载中平衡工作分配并降低开销。
- 实现一种动态负载均衡机制,能够根据不同输入类型中图度数与社区结构的变化自适应调整。
- 将性能关键组件(如社区重编号与树状图查找)集成至主计算流水线,以减少延迟。
实验结果
研究问题
- RQ1如何优化 Louvain 算法的聚合阶段,以克服共享内存并行化中的性能瓶颈?
- RQ2在多核共享内存环境中,哪些算法级与系统级优化组合能为社区检测带来最大性能提升?
- RQ3当局部移动与聚合阶段均被优化时,Louvain 算法在多大程度上可实现强可扩展性?
- RQ4优化后的 GVE-Louvain 实现与现有开源实现(如 Vite、Grappolo 和 NetworKit)相比,其模块度质量如何?
- RQ5图特征(如度分布、聚类性)对优化后实现的性能与可扩展性行为有何影响?
主要发现
- 在 38 亿条边的网络图上,GVE-Louvain 实现每秒处理 5.6 亿条边,处理速率达 560M edges/s。
- 在相同硬件与数据集上,GVE-Louvain 相较于 Vite、Grappolo 和 NetworKit 分别实现 50 倍、22 倍和 20 倍的性能提升。
- 每增加一倍线程,GVE-Louvain 平均实现 1.6 倍的加速比,表现出优异的强可扩展性。
- 在 64 个线程下,GVE-Louvain 相较单线程实现获得 11.4 倍的加速比,性能下降主要由 NUMA 效应引起。
- 局部移动阶段占总运行时间的 49%,聚合阶段占 35%,其余阶段(初始化、重编号等)占 16%。
- 在网页图上,GVE-Louvain 的模块度比 Vite 高 3.1%;在聚类性较差的社会网络图上,模块度比 Grappolo 和 NetworKit 低 0.6%。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。