[论文解读] A Parallel Batch-Dynamic Data Structure for the Closest Pair Problem
本论文提出了一种在度量空间中理论上高效且实用的并行批量动态数据结构,用于解决最近点对问题,利用一种新颖的、工作高效的并行批量动态二叉堆以及动态k-d树,实现了在高概率下期望工作量为O(m(1 + log((n + m)/m))),深度为O(log(n + m) log*(n + m))。在启用超线程的48核处理器上,该方法实现了高达38.57倍的并行加速,这是首次在静态和动态设置下对并行最近点对算法进行的实验评估。
We propose a theoretically-efficient and practical parallel batch-dynamic data structure for the closest pair problem. Our solution is based on a serial dynamic closest pair data structure by Golin et al., and supports batches of insertions and deletions in parallel. For a data set of size $n$, our data structure supports a batch of insertions or deletions of size $m$ in $O(m(1+\log ((n+m)/m)))$ expected work and $O(\log (n+m)\log^*(n+m))$ depth with high probability, and takes linear space. The key techniques for achieving these bounds are a new work-efficient parallel batch-dynamic binary heap, and careful management of the computation across sets of points to minimize work and depth. We provide an optimized multicore implementation of our data structure using dynamic hash tables, parallel heaps, and dynamic $k$-d trees. Our experiments on a variety of synthetic and real-world data sets show that it achieves a parallel speedup of up to 38.57x (15.10x on average) on 48 cores with hyper-threading. In addition, we also implement and compare four parallel algorithms for static closest pair problem, for which we are not aware of any existing practical implementations. On 48 cores with hyper-threading, the static algorithms achieve up to 51.45x (29.42x on average) speedup, and Rabin's algorithm performs the best on average. Comparing our dynamic algorithm to the fastest static algorithm, we find that it is advantageous to use the dynamic algorithm for batch sizes of up to 20\% of the data set. As far as we know, our work is the first to experimentally evaluate parallel closest pair algorithms, in both the static and the dynamic settings.
研究动机与目标
- 设计一种并行批量动态数据结构,以在度量空间中高效支持最近点对问题的批量插入与删除操作。
- 弥合理论上的动态最近点对算法与实际并行实现之间的差距,此前该领域尚未被探索。
- 在真实世界和合成数据集上,评估静态与动态并行最近点对算法的性能。
- 将动态算法的性能与静态版本进行对比,识别出动态更新的最优批量大小。
提出的方法
- 将Golin等人提出的序列动态最近点对算法扩展为支持使用新型工作高效并行批量动态二叉堆的并行批量更新。
- 采用稀疏分区数据结构,在批量更新期间高效维护最近点对关系。
- 将多个堆合并为单个堆,以减少开销并提升缓存性能。
- 使用动态k-d树加速批量处理期间的邻域查询。
- 在多核系统上实现该算法,采用动态哈希表、并行堆以及优化的k-d树。
- 引入四种静态最近点对算法——分治法、Rabin的随机化算法、筛法和随机增量法——的并行化版本,用于对比评估。
实验结果
研究问题
- RQ1并行批量动态最近点对数据结构是否能在现代多核系统上同时实现理论效率与实际性能?
- RQ2所提出的动态算法在不同批量大小下与静态并行算法相比性能如何?
- RQ3在何种批量大小下,动态算法优于静态重新计算?
- RQ4在实际应用中,哪种静态并行算法表现最佳,其与动态解决方案相比如何?
- RQ5能否设计并有效使用一种新型并行批量动态二叉堆,以在动态最近点对计算中减少工作量与深度?
主要发现
- 所提出的并行批量动态数据结构在启用超线程的48核处理器上实现了高达38.57倍的加速,平均加速比为15.10倍。
- 在48核处理器上,该算法的吞吐量最高可达每秒1.35 × 10^7次插入和1.06 × 10^7次删除。
- 在四种静态并行算法中,Rabin的随机化算法表现最佳,最高实现51.45倍加速,平均达到29.42倍加速。
- 当批量大小不超过数据集大小的20%时,动态算法优于最快的静态算法。
- 在实践中,理论工作量O(m(1 + log((n + m)/m)))的期望值和深度O(log(n + m) log*(n + m))的界限以高概率得以实现。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。