Skip to main content
QUICK REVIEW

[论文解读] Parallel Louvain Community Detection Optimized for GPUs

Richárd Forster|arXiv (Cornell University)|May 28, 2018
Wireless Communication Networks Research被引用 3
一句话总结

本文提出了一种基于CUDA的GPU优化并行实现,用于Louvain社区检测算法,通过并行启发式方法克服该算法固有的顺序性。该方法在GeForce GTX 980上相较于基于CPU的并行实现,理论速度提升最高达31倍,实验速度提升达23倍,显著加速了CERN协作识别项目中大规模图的模块度优化。

ABSTRACT

Community detection now is an important operation in numerous graph based applications. It is used to reveal groups that exist within real world networks without imposing prior size or cardinality constraints on the set of communities. Despite its potential, the support for parallel computers is rather limited. The cause is largely the irregularity of the algorithm and the underlying heuristics imply a sequential nature. In this paper a GPU based parallelized version of the Louvain method is presented. The Louvain method is a multi-phase, iterative heuristic for modularity optimization. It was originally developed by Blondel et al. (2008), the method has become increasingly popular owing to its ability to detect high modularity community partitions in a fast and memory-efficient manner. The parallel heuristics used, were first introduced by Hao Lu et al. (2015). As the Louvain method is inherently sequential, it limits the possibility of scalable usage. Thanks to the proposed parallel heuristics, I observe how this method can behave on GPUs. For evaluation I implemented the heuristics using CUDA on a GeForce GTX 980 GPU and for testing Ive used organization landscapes from the CERN developed Collaboration Spotting project that involves patents and publications to visualize the connections in technologies among its collaborators. Compared to the parallel Louvain implementation running on 8 threads on the same machine that has the used GPU, the CUDA implementation is able to produce community outputs comparable to the CPU generated results, while providing absolute speedups of up to 30 using the GeForce GTX 980 consumer grade GPU.

研究动机与目标

  • 为解决由于Louvain算法本身不规则、迭代且贪婪的特性,导致其在并行架构上可扩展性受限的问题。
  • 通过使用CUDA将Louvain方法移植到GPU,实现在大规模图上高性能社区检测。
  • 评估GPU并行化Louvain算法与多线程CPU实现相比在真实世界协作图上的性能表现。
  • 识别影响GPU在社区检测工作负载中效率的性能瓶颈和结构因素。

提出的方法

  • 采用Hao Lu等人(2015)提出的并行启发式方法,重构原本固有的顺序性Louvain算法以适配GPU执行。
  • 在GeForce GTX 980 GPU上使用CUDA实现该算法,通过管理主机与设备之间的内存传输以最小化开销。
  • 优化关键阶段:社区分配(模块度增益计算)、图归纳(社区聚合)以及邻居处理。
  • 使用邻接表和加权度数,通过GPU线程并行高效计算模块度增益。
  • 应用节点重排序启发式方法,通过将邻居数量相近的节点分组以减少线程发散。
  • 使用CERN协作识别项目中的真实图进行性能评估,包括coPapersDLBP和friendster。

实验结果

研究问题

  • RQ1能否通过CUDA在GPU架构上有效并行化原本固有的顺序性Louvain算法?
  • RQ2与多线程CPU实现相比,将Louvain的模块度优化卸载到GPU能获得多大的性能提升?
  • RQ3图的结构和数据布局如何影响GPU在社区检测工作负载中的性能表现?
  • RQ4GPU并行化Louvain中的主要性能瓶颈是什么?能否通过算法或内存优化手段加以缓解?

主要发现

  • 在coPapersDLBP图上,GPU实现相较于8线程CPU并行版本实现了23倍的加速,理论峰值速度提升达31倍。
  • 在CNR图上,GPU的一阶段模块度计算比CPU快7.2倍,其他测试用例中最快达20倍。
  • 图归纳和邻居处理阶段在GPU上分别加速了28倍和16倍,表明预处理步骤获得了显著性能提升。
  • 在所有测量阶段,GPU版本均优于CPU:t_onephase_gpu << t_onephase_cpu,t_induce_gpu << t_induce_cpu,以及t_neighbour_gpu << t_neighbour_cpu。
  • 性能高度依赖于图的结构;Europe-osm图未表现出加速效果,原因在于重编号效率低下,表明数据布局会影响GPU效率。
  • 由于节点度数差异导致的线程发散是性能瓶颈,表明节点重排序可进一步提升GPU利用率。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。