The Convex Hull algorithm is one of the most important algorithms in computational geometry, with many applications such as in computer graphics, robotics, and data mining. Despite the advances in the new algorithms in this area, it is often needed to improve the performance to solve more significant problems quickly or in real-time processing. This work presents an experimental evaluation of GPU filters to reduce the cost of computing the 2D convex hull. The technique first performs a preprocessing of the input set, filtering all points within an eight-vertex polygon in logarithmic time, to obtain a reduced set of candidate points. We use parallel computation and the use of the Manhattan distance as a metric to find the vertices of the polygon and perform the point filtering. For the filtering stage we study different approaches; from custom CUDA kernels to libraries such as Thrust and CUB. Three types of point distributions are tested: a normal distribution (favorable case), circumference (the worst case), and a case where points are shifted randomly from the circumference (intermediate case). Experimental evaluation shows that the GPU filtering algorithm can be up to 23x faster than a sequential CPU implementation, and the whole convex hull computation can be up to 30x faster than the fastest implementation provided by the CGAL library.
翻译:凸包算法是计算几何中最重要的算法之一,具有许多应用,如计算机图形学、机器人技术和数据挖掘。尽管该领域的新算法不断涌现,但通常需要提高性能以更快地解决更大的问题或进行实时处理。本文提出了使用GPU滤波器来减少2D凸包计算成本的实验评估。该技术首先对输入点集进行预处理,在对数时间内过滤出八个顶点多边形内的所有点,以获得一组减少的候选点.我们使用并行计算和曼哈顿距离作为度量来找到多边形的顶点并执行点过滤。对于滤波阶段,我们研究了不同的方法;从自定义CUDA内核到Thrust和CUB等库。测试了三种点分布:正态分布(有利的情况),圆周(最坏的情况)和从圆周随机移位的情况(中间情况)。实验评估表明,GPU滤波算法可以比顺序CPU实现快23倍,整个凸包计算可以比CGAL库提供的最快实现快30倍。