Presentation is loading. Please wait.

Presentation is loading. Please wait.

Computation on meshes, sparse matrices, and graphs Some slides are from David Culler, Jim Demmel, Bob Lucas, Horst Simon, Kathy Yelick, et al., UCB CS267.

Similar presentations


Presentation on theme: "Computation on meshes, sparse matrices, and graphs Some slides are from David Culler, Jim Demmel, Bob Lucas, Horst Simon, Kathy Yelick, et al., UCB CS267."— Presentation transcript:

1 Computation on meshes, sparse matrices, and graphs Some slides are from David Culler, Jim Demmel, Bob Lucas, Horst Simon, Kathy Yelick, et al., UCB CS267

2 2 Parallelizing Stencil Computations Parallelism is simple Grid is a regular data structure Even decomposition across processors gives load balance Spatial locality limits communication cost Communicate only boundary values from neighboring patches Communication volume v = total # of boundary cells between patches

3 3 Two-dimensional block decomposition n mesh cells, p processors Each processor has a patch of n/p cells Block row (or block col) layout: v = 2 * p * sqrt(n) 2-dimensional block layout: v = 4 * sqrt(p) * sqrt(n)

4 4 Ghost Nodes in Stencil Computations Comm cost = α * (#messages) + β * (total size of messages) Keep a ghost copy of neighbors’ boundary nodes Communicate every second iteration, not every iteration Reduces #messages, not total size of messages Costs extra memory and computation Can also use more than one layer of ghost nodes Green = my interior nodes Yellow = neighbors’ boundary nodes = my “ghost nodes” Blue = my boundary nodes

5 5 Irregular mesh: NASA Airfoil in 2D

6 6 Composite Mesh from a Mechanical Structure

7 7 Adaptive Mesh Refinement (AMR) Adaptive mesh around an explosion Refinement done by calculating errors

8 8 Adaptive Mesh Shock waves in a gas dynamics using AMR (Adaptive Mesh Refinement) See: http://www.llnl.gov/CASC/SAMRAI/http://www.llnl.gov/CASC/SAMRAI/ fluid density

9 9 Irregular mesh: Tapered Tube (Multigrid)

10 10 Challenges of Irregular Meshes for PDE’s How to generate them in the first place For example, Triangle, a 2D mesh generator (Shewchuk) 3D mesh generation is harder! For example, QMD (Vavasis) How to partition them into patches For example, ParMetis, a parallel graph partitioner (Karypis) How to design iterative solvers For example, PETSc, Aztec, Hypre (all from national labs) … Prometheus, a multigrid solver for finite elements on irregular meshes How to design direct solvers For example, SuperLU, parallel sparse Gaussian elimination These are challenges to do sequentially, more so in parallel

11 11 Converting the Mesh to a Matrix

12 Sparse matrix data structure (stored by rows) Full: 2-dimensional array of real or complex numbers (nrows*ncols) memory 31053 0590 41260 3153594126 13212 Sparse: compressed row storage about (2*nzs + nrows) memory

13 P0P0 P1P1 P2P2 PnPn Each processor stores: # of local nonzeros range of local rows nonzeros in CSR form Distributed row sparse matrix data structure

14 Conjugate gradient iteration to solve A*x=b One matrix-vector multiplication per iteration Two vector dot products per iteration Four n-vectors of working storage x 0 = 0, r 0 = b, d 0 = r 0 for k = 1, 2, 3,... α k = (r T k-1 r k-1 ) / (d T k-1 Ad k-1 ) step length x k = x k-1 + α k d k-1 approx solution r k = r k-1 – α k Ad k-1 residual β k = (r T k r k ) / (r T k-1 r k-1 ) improvement d k = r k + β k d k-1 search direction

15 Parallel Dense Matrix-Vector Product (Review) y = A*x, where A is a dense matrix Layout: 1D by rows Algorithm: Foreach processor j Broadcast X(j) Compute A(p)*x(j) A(i) is the n by n/p block row that processor Pi owns Algorithm uses the formula Y(i) = A(i)*X =  j A(i)*X(j) x y P0 P1 P2 P3 P0 P1 P2 P3

16 Lay out matrix and vectors by rows y(i) = sum(A(i,j)*x(j)) Only compute terms with A(i,j) ≠ 0 Algorithm Each processor i: Broadcast x(i) Compute y(i) = A(i,:)*x Optimizations Only send each proc the parts of x it needs, to reduce comm Reorder matrix for better locality by graph partitioning Worry about balancing number of nonzeros / processor, if rows have very different nonzero counts x y P0 P1 P2 P3 P0 P1 P2 P3 Parallel sparse matrix-vector product

17 Other memory layouts for matrix-vector product Column layout of the matrix eliminates the broadcast But adds a reduction to update the destination – same total comm Blocked layout uses a broadcast and reduction, both on only sqrt(p) processors – less total comm Blocked layout has advantages in multicore / Cilk++ too P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15

18 Graphs and Sparse Matrices 1 1 1 2 1 1 1 3 1 1 1 4 1 1 5 1 1 6 1 1 1 2 3 4 5 6 3 6 2 1 5 4 Sparse matrix is a representation of a (sparse) graph Matrix entries are edge weights Number of nonzeros per row is the vertex degree Edges represent data dependencies in matrix-vector multiplication

19 19 Graph partitioning Assigns subgraphs to processors Determines parallelism and locality. Tries to make subgraphs all same size (load balance) Tries to minimize edge crossings (communication). Exact minimization is NP-complete. edge crossings = 6 edge crossings = 10

20 Link analysis of the web Web page = vertex Link = directed edge Link matrix: A ij = 1 if page i links to page j 1 2 3 4 7 6 5 1523467 1 5 2 3 4 6 7

21 Web graph: PageRank (Google) Web graph: PageRank (Google) [Brin, Page] Markov process: follow a random link most of the time; otherwise, go to any page at random. Importance = stationary distribution of Markov process. Transition matrix is p*A + (1-p)*ones(size(A)), scaled so each column sums to 1. Importance of page i is the i-th entry in the principal eigenvector of the transition matrix. But the matrix is 1,000,000,000,000 by 1,000,000,000,000. An important page is one that many important pages point to.

22 A Page Rank Matrix Importance ranking of web pages Stationary distribution of a Markov chain Power method: matvec and vector arithmetic Matlab*P page ranking demo (from SC’03) on a web crawl of mit.edu (170,000 pages)

23 Social Network Analysis in Matlab: 1993 Co-author graph from 1993 Householder symposium

24 Social Network Analysis in Matlab: 1993 Which author has the most collaborators? >>[count,author] = max(sum(A)) count = 32 author = 1 >>name(author,:) ans = Golub Sparse Adjacency Matrix

25 Social Network Analysis in Matlab: 1993 Have Gene Golub and Cleve Moler ever been coauthors? >> A(Golub,Moler) ans = 0 No. But how many coauthors do they have in common? >> AA = A^2; >> AA(Golub,Moler) ans = 2 And who are those common coauthors? >> name( find ( A(:,Golub).* A(:,Moler) ), :) ans = Wilkinson VanLoan


Download ppt "Computation on meshes, sparse matrices, and graphs Some slides are from David Culler, Jim Demmel, Bob Lucas, Horst Simon, Kathy Yelick, et al., UCB CS267."

Similar presentations


Ads by Google