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\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等人的序列动态最接近对配数据结构为基础, 并同时支持一系列插入和删除。 对于一个规模为$n美元的数据组, 我们的数据结构支持一组大小为$O( mlog (( n+m)/m)) 的插入或删除, 以及$O( log (n+m)\log ⁇ ( n+m)) /( n+m) ) 的工作和$O( log (n+m) =log\ log\ log\ (n+m) ) ) 的深度, 并使用线性最接近的对齐对对齐数据结构。 我们对合成和真实的和真实的数据集的实验显示, 以38. 57x(平均为15.10x) 实现这些界限的关键技术是一个新的工作效率平行的批量- 并仔细管理各组的计算工作深度和深度。 我们同时进行最接近的直超超超超超超超的递的递的递的递的递值的递值的递值的递值算。