1 / 99

Parallel Graph Algorithms

Parallel Graph Algorithms. Aydın Buluç ABuluc@lbl.gov http://gauss.cs.ucsb.edu/~aydin / Lawrence Berkeley National Laboratory. CS267, Spring 2014 April 15 , 2014. Slide acknowledgments: K. Madduri , J. Gilbert, D. Delling , S. Beamer . Graph Preliminaries. n=|V| (number of vertices)

tarika
Télécharger la présentation

Parallel Graph Algorithms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Parallel Graph Algorithms Aydın Buluç ABuluc@lbl.gov http://gauss.cs.ucsb.edu/~aydin/ Lawrence Berkeley National Laboratory CS267, Spring 2014 April 15, 2014 Slide acknowledgments: K. Madduri, J. Gilbert, D. Delling, S. Beamer

  2. Graph Preliminaries n=|V| (number of vertices) m=|E| (number of edges) D=diameter (max #hops between any pair of vertices) • Edges can be directed or undirected, weighted or not. • They can even have attributes (i.e. semantic graphs) • Sequences of edges <u1,u2>, <u2,u3>, … ,<un-1,un> is a path from u1 to un. Its length is the sum of its weights. • Define: GraphG = (V,E) • a set of vertices and a set of edgesbetween vertices Vertex Edge

  3. Lecture Outline • Applications • Designing parallel graph algorithms • Case studies: • Graph traversals: Breadth-first search • Shortest Paths: Delta-stepping, PHAST, Floyd-Warshall • Ranking: Betweenness centrality • Maximal Independent Sets: Luby’s algorithm • Strongly Connected Components • Wrap-up: challenges on current systems

  4. Lecture Outline • Applications • Designing parallel graph algorithms • Case studies: • Graph traversals: Breadth-first search • Shortest Paths: Delta-stepping, PHAST, Floyd-Warshall • Ranking: Betweenness centrality • Maximal Independent Sets: Luby’s algorithm • Strongly Connected Components • Wrap-up: challenges on current systems

  5. Routing in transportation networks Road networks, Point-to-point shortest paths: 15 seconds (naïve)  10 microseconds H. Bast et al., “Fast Routing in Road Networks with Transit Nodes”,Science 27, 2007.

  6. Internet and the WWW • The world-wide web can be represented as a directed graph • Web search and crawl: traversal • Link analysis, ranking: Page rank and HITS • Document classification and clustering • Internet topologies (router networks) are naturally modeled as graphs

  7. 3 7 1 6 8 4 10 9 2 5 Scientific Computing • Reorderings for sparse solvers • Fill reducing orderings • Partitioning, eigenvectors • Heavy diagonal to reduce pivoting (matching) • Data structures for efficient exploitation of sparsity • Derivative computations for optimization • graph colorings, spanning trees • Preconditioning • Incomplete Factorizations • Partitioning for domain decomposition • Graph techniques in algebraic multigrid • Independent sets, matchings, etc. • Support Theory • Spanning trees & graph embedding techniques Image source: YifanHu, “A gallery of large graphs” G+(A)[chordal] B. Hendrickson, “Graphs and HPC: Lessons for Future Architectures”,http://www.er.doe.gov/ascr/ascac/Meetings/Oct08/Hendrickson%20ASCAC.pdf

  8. Large-scale data analysis • Graph abstractions are very useful to analyze complex data sets. • Sources of data: petascale simulations, experimental devices, the Internet, sensor networks • Challenges: data size, heterogeneity, uncertainty, data quality Social Informatics:new analytics challenges, data uncertainty Astrophysics: massive datasets, temporal variations Bioinformatics: data quality, heterogeneity Image sources: (1) http://physics.nmt.edu/images/astro/hst_starfield.jpg (2,3) www.visualComplexity.com

  9. Graph-theoretic problems in social networks • Targeted advertising: clustering and centrality • Studying the spread of information Image Source: Nexus (Facebookapplication)

  10. Network Analysis for Neurosciences Graph-theoretical models are used to predict the course of degenerative illnesses like Alzheimer’s. Vertices: ROI (regions of interest) Edges: structural/functional connectivity • Some disease indicators: • Deviation from small-world property • Emergence of “epicenters” with disease-associated patterns

  11. Research in Parallel Graph Algorithms Graph Algorithms Application Areas Methods/ Problems Architectures GPUs, FPGAs x86 multicore servers Massively multithreaded architectures (Cray XMT, Sun Niagara) Multicore clusters (NERSC Hopper) Clouds (Amazon EC2) Traversal Shortest Paths Connectivity Max Flow … … … Social Network Analysis WWW Computational Biology Scientific Computing Engineering Find central entities Community detection Network dynamics Data size Marketing Social Search Gene regulation Metabolic pathways Genomics Problem Complexity Graph partitioning Matching Coloring VLSI CAD Route planning

  12. Characterizing Graph-theoretic computations Factors that influence choice of algorithm Input data Graph kernel • graph sparsity (m/n ratio) • static/dynamic nature • weighted/unweighted,weight distribution • vertex degree distribution • directed/undirected • simple/multi/hyper graph • problem size • granularity of computation at nodes/edges • domain-specific characteristics • traversal • shortest path algorithms • flow algorithms • spanning tree algorithms • topological sort • ….. Problem: Find *** • paths • clusters • partitions • matchings • patterns • orderings Graph problems are often recast as sparse linear algebra (e.g., partitioning) or linear programming (e.g., matching) computations

  13. Lecture Outline • Applications • Designing parallel graph algorithms • Case studies: • Graph traversals: Breadth-first search • Shortest Paths: Delta-stepping, PHAST, Floyd-Warshall • Ranking: Betweenness centrality • Maximal Independent Sets: Luby’s algorithm • Strongly Connected Components • Wrap-up: challenges on current systems

  14. The PRAM model • Many PRAM graph algorithms in 1980s. • Idealized parallel shared memory system model • Unbounded number of synchronous processors; no synchronization, communication cost; no parallel overhead • EREW (Exclusive Read Exclusive Write), CREW (Concurrent Read Exclusive Write) • Measuring performance: space and time complexity; total number of operations (work)

  15. PRAM Pros and Cons • Pros • Simple and clean semantics. • The majority of theoretical parallel algorithms are designed using the PRAM model. • Independent of the communication network topology. • Cons • Not realistic, too powerful communication model. • Communication costs are ignored. • Synchronized processors. • No local memory. • Big-O notation is often misleading.

  16. Building blocks of classical PRAM graph algorithms • Prefix sums • Symmetry breaking • Pointer jumping • List ranking • Euler tours • Vertex collapse • Tree contraction [some covered in the “Tricks with Trees” lecture]

  17. Data structures: graph representation Static case • Dense graphs (m = Θ(n2)): adjacency matrix commonly used. • Sparse graphs: adjacency lists, compressed sparse matrices Dynamic • representation depends on common-case query • Edge insertions or deletions? Vertex insertions or deletions? Edge weight updates? • Graph update rate • Queries: connectivity, paths, flow, etc. • Optimizing for locality a key design consideration.

  18. Graph representations Compressed sparse rows (CSR) = cache-efficient adjacency lists 7 3 2 2 4 1 14 19 12 26 7 1 12 14 4 2 1 2 3 19 26 3 4 Index into adjacency array (row pointers in CSR) (column ids in CSR) Adjacencies (numerical values in CSR) Weights

  19. Distributed graph representations • Each processor stores the entire graph (“full replication”) • Each processor stores n/p vertices and all adjacencies out of these vertices (“1D partitioning”) • How to create these “p” vertex partitions? • Graph partitioning algorithms: recursively optimize for conductance (edge cut/size of smaller partition) • Randomly shuffling the vertex identifiers ensures that edge count/processor are roughly the same

  20. 2D checkerboard distribution • Consider a logical 2D processor grid (pr * pc = p) and the matrix representation of the graph • Assign each processor a sub-matrix (i.e, the edges within the sub-matrix) 9 vertices, 9 processors, 3x3 processor grid 5 8 1 0 7 3 4 6 Flatten Sparse matrices 2 Per-processor local graph representation

  21. High-performance graph algorithms • Implementations are typically array-based for performance (e.g. CSR representation). • Concurrency = minimize synchronization (span) • Where is the data? Find the distribution that minimizes inter-processor communication. • Memory access patterns • Regularize them (spatial locality) • Minimize DRAM traffic (temporal locality) • Work-efficiency • Is (Parallel time) * (# of processors) = (Serial work)?

  22. Lecture Outline • Applications • Designing parallel graph algorithms • Case studies: • Graph traversals: Breadth-first search • Shortest Paths: Delta-stepping, PHAST, Floyd-Warshall • Ranking: Betweenness centrality • Maximal Independent Sets: Luby’s algorithm • Strongly Connected Components • Wrap-up: challenges on current systems

  23. Graph traversal: Depth-first search (DFS) 9 7 preorder vertex number 5 8 6 1 3 8 4 5 2 0 7 3 4 6 9 source vertex 1 2 Parallelizing DFS is a bad idea: span(DFS) = O(n) J.H. Reif, Depth-first search is inherently sequential. Inform. Process. Lett. 20 (1985) 229-234.

  24. Graph traversal : Breadth-first search (BFS) 1 2 distance from source vertex Input: Output: 5 8 4 1 3 1 3 4 2 0 7 3 4 6 9 source vertex 1 2 • Memory requirements (# of machine words): • Sparse graph representation: m+n • Stack of visited vertices: n • Distance array: n Breadth-first search is a very important building block for other parallel graph algorithms such as (bipartite) matching, maximum flow, (strongly) connected components, betweenness centrality, etc.

  25. Parallel BFS Strategies 5 8 1. Expand current frontier (level-synchronous approach, suited for low diameter graphs) 1 • O(D) parallel steps • Adjacencies of all vertices • in current frontier are • visited in parallel 0 7 3 4 6 9 source vertex 2 2. Stitch multiple concurrent traversals (Ullman-Yannakakis approach, suited for high-diameter graphs) 5 8 • path-limited searches from “super vertices” • APSP between “super vertices” 1 source vertex 0 7 3 4 6 9 2

  26. Performance observations of the level-synchronous algorithm Youtube social network Synthetic network When the frontier is at its peak, almost all edge examinations “fail” to claim a child

  27. Bottom-up BFS algorithm Classical (top-down) algorithm is optimal in worst case, but pessimistic for low-diameter graphs (previous slide). Direction Optimization: • Switch from top-down to bottom-up search • When the majority of the vertices are discovered. [Read paper for exact heuristic] Scott Beamer, KrsteAsanović, and David Patterson, "Direction-Optimizing Breadth-First Search", Int. Conf. on High Performance Computing, Networking, Storage and Analysis (SC), 2012

  28. 2 • 1 • 4 • 5 • 7 • 6 • 3 Breadth-first search in the language of linear algebra • from • 1 • 7 • 1 • to • 7 • AT

  29. 2 • 1 • 4 • 5 • 7 • 6 • 3 Replace scalar operations Multiply -> select Add -> minimum • from • 1 • 7 • 1 1 1 •  • to 1 1 parents: 1 • 7 • AT • X • ATX

  30. 2 • 1 • 4 • 5 • 7 • 6 • 3 Select vertex with minimum label as parent • from • 1 • 7 • 1 2 4 4 •  • to 4 1 2 4 2 parents: 1 • 7 2 2 2 4 • AT • X • ATX 2

  31. 2 • 1 • 4 • 5 • 7 • 6 • 3 • from • 1 • 7 • 1 3 •  • to 1 5 4 parents: 1 3 3 5 • 7 7 2 • AT • X • ATX 3 2

  32. 2 • 1 • 4 • 5 • 7 • 6 • 3 • from • 1 • 7 • 1 •  • to • 7 • AT • X • ATX 6

  33. 1D Parallel BFS algorithm 2 1 ALGORITHM: • Find owners of the current frontier’s adjacency [computation] • Exchange adjacencies via all-to-all. [communication] • Update distances/parents for unvisited vertices. [computation] x 4  5 7 6 3 AT frontier x

  34. 2D Parallel BFS algorithm 2 1 x 4  5 7 6 3 AT frontier x ALGORITHM: • Gather vertices in processor column[communication] • Find owners of the current frontier’s adjacency [computation] • Exchange adjacencies in processor row [communication] • Update distances/parents for unvisited vertices. [computation]

  35. BFS Strong Scaling • NERSC Hopper (Cray XE6, Gemini interconnect AMD Magny-Cours) • Hybrid: In-node 6-way OpenMP multithreading • Kronecker (Graph500): 4 billion vertices and 64 billion edges. A. Buluç, K. Madduri. Parallel breadth-first search on distributed memory systems. Proc. Supercomputing, 2011.

  36. Direction optimizing BFS with 2D decomposition • ORNL Titan (Cray XK6, Gemini interconnect AMD Interlagos) • Kronecker(Graph500): 16 billion vertices and 256 billion edges. Scott Beamer, Aydın Buluç, KrsteAsanović, and David Patterson, "Distributed Memory Breadth-First Search Revisited: Enabling Bottom-Up Search”, MTAAP’13, IPDPSW, 2013

  37. Lecture Outline • Applications • Designing parallel graph algorithms • Case studies: • Graph traversals: Breadth-first search • Shortest Paths: Delta-stepping, PHAST, Floyd-Warshall • Ranking: Betweenness centrality • Maximal Independent Sets: Luby’s algorithm • Strongly Connected Components • Wrap-up: challenges on current systems

  38. Parallel Single-source Shortest Paths (SSSP) algorithms • Famous serial algorithms: • Bellman-Ford : label correcting - works on any graph • Dijkstra: label setting – requires nonnegative edge weights • No known PRAM algorithm that runs in sub-linear time and O(m+n log n) work • Ullman-Yannakakis randomized approach • Meyer and Sanders, ∆ - stepping algorithm • Chakaravarthy et al., clever combination of ∆ - stepping and directionoptimization (BFS) on supercomputer-scale graphs. U. Meyer and P.Sanders, ∆ - stepping: a parallelizable shortest path algorithm. Journal of Algorithms 49 (2003) V. T. Chakaravarthy, F. Checconi, F. Petrini, Y. Sabharwal “Scalable Single Source Shortest Path Algorithms for Massively Parallel Systems ”, IPDPS’14

  39. ∆ - stepping algorithm • Label-correcting algorithm: Can relax edges from unsettled vertices also • “approximate bucket implementation of Dijkstra” • For random edge weighs [0,1], runs in where L = max distance from source to any node • Vertices are ordered using buckets of width ∆ • Each bucket may be processed in parallel • Basic operation: Relax ( e(u,v) ) d(v) = min { d(v), d(u) + w(u, v) } ∆ < min w(e) : Degenerates into Dijkstra ∆ > max w(e) : Degenerates into Bellman-Ford

  40. ∆ - stepping algorithm: illustration ∆ = 0.1 (say) 0.05 • One parallel phase • while (bucket is non-empty) • Inspect light (w < ∆) edges • Construct a set of “requests” (R) • Clear the current bucket • Remember deleted vertices (S) • Relax request pairs in R • Relax heavy request pairs (from S) • Go on to the next bucket 0.56 3 6 0.07 0.01 0.15 0.23 4 2 0 0.02 0.13 0.18 5 1 d array 0 1 2 3 4 5 6 ∞ ∞ ∞ ∞ ∞ ∞ ∞ Buckets

  41. ∆ - stepping algorithm: illustration 0.05 • One parallel phase • while (bucket is non-empty) • Inspect light (w < ∆) edges • Construct a set of “requests” (R) • Clear the current bucket • Remember deleted vertices (S) • Relax request pairs in R • Relax heavy request pairs (from S) • Go on to the next bucket 0.56 3 6 0.07 0.01 0.15 0.23 4 2 0 0.02 0.13 0.18 5 1 d array 0 1 2 3 4 5 6 ∞ ∞ ∞ ∞ ∞ ∞ 0 Buckets Initialization: Insert s into bucket, d(s) = 0 0 0

  42. ∆ - stepping algorithm: illustration • One parallel phase • while (bucket is non-empty) • Inspect light (w < ∆) edges • Construct a set of “requests” (R) • Clear the current bucket • Remember deleted vertices (S) • Relax request pairs in R • Relax heavy request pairs (from S) • Go on to the next bucket 0.05 0.56 3 6 0.07 0.01 0.15 0.23 4 2 0 0.02 0.13 0.18 5 1 d array 0 1 2 3 4 5 6 ∞ ∞ ∞ ∞ ∞ ∞ 0 R 2 Buckets 0 0 .01 S

  43. ∆ - stepping algorithm: illustration 0.05 • One parallel phase • while (bucket is non-empty) • Inspect light (w < ∆) edges • Construct a set of “requests” (R) • Clear the current bucket • Remember deleted vertices (S) • Relax request pairs in R • Relax heavy request pairs (from S) • Go on to the next bucket 0.56 3 6 0.07 0.01 0.15 0.23 4 2 0 0.02 0.13 0.18 5 1 d array 0 1 2 3 4 5 6 ∞ ∞ ∞ ∞ ∞ ∞ 0 2 Buckets R 0 .01 0 S

  44. ∆ - stepping algorithm: illustration 0.05 • One parallel phase • while (bucket is non-empty) • Inspect light (w < ∆) edges • Construct a set of “requests” (R) • Clear the current bucket • Remember deleted vertices (S) • Relax request pairs in R • Relax heavy request pairs (from S) • Go on to the next bucket 0.56 3 6 0.07 0.01 0.15 0.23 4 2 0 0.02 0.13 0.18 5 1 d array 0 1 2 3 4 5 6 ∞ ∞ ∞ ∞ ∞ 0 .01 R Buckets 0 2 0 S

  45. ∆ - stepping algorithm: illustration 0.05 • One parallel phase • while (bucket is non-empty) • Inspect light (w < ∆) edges • Construct a set of “requests” (R) • Clear the current bucket • Remember deleted vertices (S) • Relax request pairs in R • Relax heavy request pairs (from S) • Go on to the next bucket 0.56 3 6 0.07 0.01 0.15 0.23 4 2 0 0.02 0.13 0.18 5 1 d array 0 1 2 3 4 5 6 ∞ ∞ ∞ ∞ ∞ .01 0 Buckets R 1 3 0 2 .03 .06 0 S

  46. ∆ - stepping algorithm: illustration 0.05 • One parallel phase • while (bucket is non-empty) • Inspect light (w < ∆) edges • Construct a set of “requests” (R) • Clear the current bucket • Remember deleted vertices (S) • Relax request pairs in R • Relax heavy request pairs (from S) • Go on to the next bucket 0.56 3 6 0.07 0.01 0.15 0.23 4 2 0 0.02 0.13 0.18 5 1 d array 0 1 2 3 4 5 6 ∞ ∞ ∞ ∞ ∞ .01 0 R Buckets 1 3 0 .03 .06 S 0 2

  47. ∆ - stepping algorithm: illustration 0.05 • One parallel phase • while (bucket is non-empty) • Inspect light (w < ∆) edges • Construct a set of “requests” (R) • Clear the current bucket • Remember deleted vertices (S) • Relax request pairs in R • Relax heavy request pairs (from S) • Go on to the next bucket 0.56 3 6 0.07 0.01 0.15 0.23 4 2 0 0.02 0.13 0.18 5 1 d array 0 1 2 3 4 5 6 ∞ ∞ ∞ 0 .03 .01 .06 Buckets R 3 0 1 S 0 2

  48. ∆ - stepping algorithm: illustration 0.05 • One parallel phase • while (bucket is non-empty) • Inspect light (w < ∆) edges • Construct a set of “requests” (R) • Clear the current bucket • Remember deleted vertices (S) • Relax request pairs in R • Relax heavy request pairs (from S) • Go on to the next bucket 0.56 3 6 0.07 0.01 0.15 0.23 4 2 0 0.02 0.18 0.13 5 1 d array 0 1 2 3 4 5 6 0 .29 .03 .01 .06 .16 .62 Buckets R 4 1 5 2 S 0 1 3 2 6 6

  49. No. of phases (machine-independent performance count) high diameter low diameter Too many phases in high diameter graphs: Level-synchronous breadth-first search has the same problem.

  50. Average shortest path weight for various graph families~ 220 vertices, 222 edges, directed graph, edge weights normalized to [0,1] Complexity: L: maximum distance (shortest path weight)

More Related