This paper presents ParGeo, a multicore library for computational geometry. ParGeo contains modules for fundamental tasks including $k$d-tree based spatial search, spatial graph generation, and algorithms in computational geometry. We focus on three new algorithmic contributions provided in the library. First, we present a new parallel convex hull algorithm based on a reservation technique to enable parallel modifications to the hull. We also provide the first parallel implementations of the randomized incremental convex hull algorithm as well as a divide-and-conquer convex hull algorithm in $\mathbb{R}^3$. Second, for the smallest enclosing ball problem, we propose a new sampling-based algorithm to quickly reduce the size of the data set. We also provide the first parallel implementation of Welzl's classic algorithm for smallest enclosing ball. Third, we present the BDL-tree, a parallel batch-dynamic $k$d-tree that allows for efficient parallel updates and $k$-NN queries over dynamically changing point sets. BDL-trees consist of a log-structured set of $k$d-trees which can be used to efficiently insert, delete, and query batches of points in parallel. On 36 cores with two-way hyper-threading, our fastest convex hull algorithm achieves up to 44.7x self-relative parallel speedup and up to 559x speedup against the best existing sequential implementation. Our smallest enclosing ball algorithm using our sampling-based algorithm achieves up to 27.1x self-relative parallel speedup and up to 178x speedup against the best existing sequential implementation. Our implementation of the BDL-tree achieves self-relative parallel speedup of up to 46.1x. Across all of the algorithms in ParGeo, we achieve self-relative parallel speedup of 8.1--46.61x.
翻译:本文展示了 ParGeo 。 ParGeo 包含基本任务模块, 包括基于 $k$d 的空间搜索、 空间图形生成和计算几何中的算法。 我们侧重于在图书馆里提供的三种新的算法贡献。 首先, 我们展示了一个新的平行的 convex 软体算法, 其依据是一种保留技术, 以便能够平行修改船体。 我们还提供了第一个平行的随机递增卷心轮算法, 以及一个以 $mathb{R ⁇ 3$为单位的分解和 Convex 软体算法。 其次, 对于最小的包含球问题, 我们提议一个新的基于取样的算法, 以快速缩小数据集的大小。 我们还提供了韦尔兹的经典算法。 第三, 我们展示了BDL- tree, 一种平行的批量动力 $dd- tree, 允许高效的平行更新和 $k-nower- 变换点的计算。 BL- tree 包括以 $59x 的最小的递增缩算算法, 我们的自动算的自动算, 可以实现我们的自动递化的自动递增速度。