Skip to main content
QUICK REVIEW

[论文解读] Design and optimization of DBSCAN Algorithm based on CUDA

Bingchen Wang, Chenglong Zhang|arXiv (Cornell University)|Jun 7, 2015
Data Management and Algorithms参考文献 5被引用 4
一句话总结

本文提出了一种CUDA加速的DBSCAN算法,通过使用共享内存和核函数融合优化距离计算与原始聚类构建,最大限度减少全局内存访问,提升内存合并访问效率与线程并发性,实现在大规模数据集上相较串行版本高达97.89倍的加速比。

ABSTRACT

DBSCAN is a very classic algorithm for data clus- tering, which is widely used in many fields. However, with the data scale growing much more bigger than before, the traditional serial algorithm can not meet the performance requirement. Recently, parallel computing based on CUDA has developed very fast and has great advantage on big data. This paper summarizes the algorithms proposed before and improves the performance of the old DBSCAN algorithm by using CUDA and parallel computing. The algorithm uses shared memory as much as possible compared with other algorithms and it has very good scalability. A data set is tested on the new version of DBSCAN. Finally, we analyze the results and give a conclusion that our algorithm is approximately 97 times faster than the serial version.

研究动机与目标

  • 解决串行DBSCAN中因距离计算与聚类构建计算成本过高而导致的性能瓶颈。
  • 克服现有基于GPU的DBSCAN方法因复杂树状结构或块协调机制导致的并行性低与全局内存访问过多的局限性。
  • 通过最大化共享内存使用并最小化核函数启动开销,优化DBSCAN流水线以适配GPU架构。
  • 通过将算法重构为三个完全可并行化的步骤(距离矩阵计算、原始聚类形成与聚类合并),提升大规模数据集上的可扩展性与性能。

提出的方法

  • 将DBSCAN划分为三个可并行处理的阶段:(1) 使用CUDA核函数计算成对距离,(2) 利用共享内存识别核心点并形成原始聚类,(3) 通过迭代传播方式合并聚类。
  • 使用共享内存存储距离矩阵与聚类数据,减少全局内存访问,提升内存合并访问效率与带宽利用率。
  • 将距离计算与原始聚类构建融合为单一核函数启动,降低核函数启动开销并改善数据局部性。
  • 应用循环展开与代码重构,减少指令数量,提升编译器优化能力,增强单线程性能。
  • 通过重新组织数据访问模式并控制内存访问操作,最小化共享内存中的分支发散与存储体冲突。
  • 采用改进的聚类合并方法,避免昂贵的传递闭包计算,转而使用迭代合并策略,显著减少核函数启动次数。

实验结果

研究问题

  • RQ1如何重构DBSCAN算法以在GPU架构上实现最大并行性并最小化内存访问开销?
  • RQ2串行DBSCAN实现中的性能瓶颈是什么?如何通过GPU加速有效应对?
  • RQ3与现有基于GPU的方法相比,共享内存与核函数融合在大规模数据集上的DBSCAN性能提升程度如何?
  • RQ4算法优化如循环展开与内存访问重构是否能显著提升GPU加速DBSCAN中的单线程性能?
  • RQ5尽管具有较高的理论并行性,为何基于传递闭包的合并策略在实践中会失效?何种替代合并策略能提供更好的性能?

主要发现

  • 在串行DBSCAN算法中,距离计算占总执行时间的66.27%,是主要性能瓶颈。
  • 所提出的CUDA优化算法将距离计算与原始聚类构建的联合耗时从CPU的1.79秒降低至GPU的9.91毫秒,在23,040个点的数据集上实现180.67倍的加速比。
  • 通过将距离计算与聚类构建融合为单一核函数,执行时间从50.151毫秒降至25.336毫秒,实现2倍性能提升,证实全局内存访问是主要性能瓶颈。
  • 循环展开与代码重构使nvcc编译器生成的指令数从442条减少至342条,生成更紧凑高效的核函数代码。
  • 在60,032个点的数据集上,整体算法相较串行版本实现97.89倍的加速比,总执行时间从CPU的12,210毫秒降至GPU的124.73毫秒(含数据传输开销)。
  • 聚类合并仍是性能挑战,其耗时接近串行版本,主要因数据传输与同步开销过高,表明仍需进一步优化。

更好的研究,从现在开始

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

无需绑定信用卡

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