Abstract

The plane sweep algorithm, although widely used in computational geometry, does not parallelize efficiently, rendering it incapable of benefiting from recent trends of multi-core CPUs and general-purpose GPUs. Instead of the plane sweep, some researchers have proposed the uniform grid as a foundation for parallel algorithms of computational geometry, but long-standing robustness and performance issues have deterred its wider adoption, at least in the case of overlay analysis. To remedy that, we have developed previously missing methods to perform snap rounding and compute efficiently the winding number of overlay faces on the uniform grid, and we have implemented them as part of an extensible geometry engine to perform polygon overlay with OpenMP on CPUs and CUDA on GPUs. The overall algorithm works on any polygon configuration, either degenerate, overlapping, self-overlapping, disjoint, or with holes. On typical data, it features time and space complexities of O(N + K) where N is the number of edges and K the number of intersections. Its single-threaded performance not only rivals the plane sweep, it achieves a parallel efficiency of 0.9 on our quad-core CPU, with an additional speedup of over 4 on our GPU, a result that should extrapolate to distributed computing and other geometric operations.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call