Delaunay Triangulation in Parallel Adarsh Prakash CSE 633 : Parallel Algorithms (Spring 2017)

Delaunay Triangulation in Parallel Adarsh Prakash CSE 633 : Parallel Algorithms (Spring 2017)

Delaunay Triangulation in Parallel Adarsh Prakash CSE 633 : Parallel Algorithms (Spring 2017) Instructor: Dr. Russ Miller | Computer Science and Engineering Definition Triangle ΔABC is a Delaunay Triangle, if no other points lie in the circumcircle formed by ΔABC. Invalid Delaunay Δ Valid Delaunay Δs | Computer Science and Engineering Delaunay – Voronoi: Duality A Voronoi diagram is constructed by connecting centers of all the circumcircles formed by the Delaunay Triangles in a graph. Delaunay Triangulation Voronoi Diagram | Computer Science and Engineering Direct Applications • Nearest Neighbor • Graph Locality / Point Location • Surface Mapping / Reconstruction • Game Development • Motion Capture • Path Planning (Autonomous Navigation) • Physics – studying forces.. • Chemistry – atomic charges.. • Biology, Astrophysics and so on. | Computer Science and Engineering Applications | Computer Science and Engineering Algorithm • Divide-and-conquer algorithm proposed by Leonidas Guibas and Jorge Stolfi [1]. • Follows closely the Voronoi construction algorithm from Shamos and Hoey [2]. • Difference is it clearly describes how to make use of quad-edge data structure to avoid computation of complete hull. • Properties: • A quad-edge knows its direction (origin-destination NOT point-point) • A quad-edge maintains pointers to all edges leaving from and terminating at their origin and destination. (4-8 pointers depending on implementation) • Objective is to parallelize this algorithm. | Computer Science and Engineering Algorithm: Merge Step L R | Computer Science and Engineering Algorithm: Merge Step L R | Computer Science and Engineering Algorithm: Merge Step L R | Computer Science and Engineering Algorithm: Parallel Overview Processor i Compute Delaunay Triangulation of Local Region Merge Incoming Region and Local Region Send or Receive from other Processors Repeat or exit | Computer Science and Engineering Domain Decomposition P0 P1 P2 P3 Input space divided equally by X-Coordinate among Processors | Computer Science and Engineering Implementation • Implementation in C and MPI • Pseudo code from paper for serial version of merge – made life easier • Jobs were run on general-compute and largemem partitions of CCR • All communications are point-to-point: MPI_Send and MPI_Recv • Data send/receive happens in a single block ( as many as 31 million edges ~ 700mb) • Approx. 500 jobs to cluster | Computer Science and Engineering Implementation • Input: • Randomly generated points – Bivariate Uniform Distribution using Python numpy package • Equal range and density across both the axes • No duplicates and pre-sorted by X-Coordinate • Each coordinate is “double” precision ∈ [0, 200*n] • Output: • Edge endpoints as indices 0, 162.422299106, 626335123.072 0 1 1, 235.609542392, 21674347.1286 0 3 2, 348.128895741, 545885503.786 0 4 3, 388.434040826, 160544722.935 0 2 … … Sample Input Sample Output | Computer Science and Engineering Results • Run-times averaged over 3-5 jobs/runs • Time spent on reading input file and writing the results to output file is ignored • Only Computation Time (with communication cost) is used in analysis • Tried for several core-node combinations: • 2 CPUs per node with shm (intranode) and tmi (internode) • 1 CPU per node with dapl (internode) • 1 CPU per node with tmi (internode) • Upto 32 CPUs per node with tcp (intranode) and tcp (internode) – I_MPI_FABRICS and I_MPI_FALLBACK to the rescue! • All results validated against results from standard packages: • Python (scipy.spatial.Delaunay) - faster • Matlab (triangulation) | Computer Science and Engineering Time v/s CPU (1 CPU per node – TMI) 25 1 Million Points 2 Million Points 4 Million Points 20 15 10 Computation Time (seconds) Time Computation 5 0 1 2 4 8 16 32 64 Number of CPUs (log scale) | Computer Science and Engineering Speedup v/s CPU (1 CPU per node – TMI) 9 1 Million Points 2 Million Points 4 Million Points 8 7 6 5 4 Speedup Ratio Speedup 3 2 1 0 1 2 4 8 16 32 64 Number of CPUs (log scale) | Computer Science and Engineering Time v/s CPU (32 CPUs per node – TCP – no shm) 30 1 Million Points 2 Million Points 4 Million Points 25 20 15 10 Computation Time (seconds) Time Computation 5 0 1 2 4 8 16 32 64 128 256 Number of CPUs (log scale) | Computer Science and Engineering Speedup v/s CPU (32 CPUs per node – TCP – no shm) 5 4.5 4 3.5 3 2.5 2 1.5 Computation Time (seconds) Time Computation 1 0.5 1 Million Points 2 Million Points 4 Million Points 0 1 2 4 8 16 32 64 128 256 Number of CPUs (log scale) | Computer Science and Engineering Asymptotic Growth (8 CPUs with 1 CPU per node) 25 20 15 10 Computation Time (seconds) Time Computation 5 0 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Data – Number of Points (Powers of 2) | Computer Science and Engineering Conclusion • That drop in speedup for 32-cpus-per-node? • Communication Cost: Intranode < Internode • Difference is significant for TCP and hence the sudden drop • Hard Merge – High Communication Costs – No Linear Speedup • But, there is gain • Data still needs to fit into a single machine! | Computer Science and Engineering References • Primitives for the Manipulation of General Subdivisions and the Computation of Voronoi Diagrams – Guibas, L. and Stolfi, J. • Closest-Point Problems – Shamos, M.I. and Hoey, D. • On computing Voronoi diagrams by divide-prune-and- conquer – Amato, N.M. and Ramos, E.A. • Chapter 10: Computational Geometry, Algorithms – Sequential and Parallel – Miller, R. and Boxer, L. Thank You [email protected] Binaries, scripts, code and results available at: https://github.com/adrsh18/parallel Thanks to Dr. M Jones and CCR @ UB | Computer Science and Engineering | Computer Science and Engineering Backup: Analysis • Sequential runtime: O(n * logn) [T(n) = 2 * T(n/2) + O(n)] • “Heavy” merge step with O(n). Parallelization possible?!! • Analysis with p processors: 풏 • Each processor locally and simultaneously computes DT on 풑 points 푛 푛 O{ 푝 * log ( 푝 ) } • DTs from each processor is stitched together (happens logp times) O( n * logp) 푛 푛 • So, total runtime = O {푝 * log ( 푝 ) + n * logp} • If p = logn, runtime = O(n log(logn)).

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    23 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us