classical algebraic multigrid for engineering applications · classical algebraic multigrid for...

21
Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens, Jonathan Cohen (NVIDIA)

Upload: others

Post on 23-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Classical Algebraic Multigrid for Engineering Applications

Simon Layton, Lorena Barba (BU)

With thanks to Justin Luitjens, Jonathan Cohen (NVIDIA)

Page 2: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Problem Statement

‣Solve sparse linear systems from engineering problems

‣Pressure Poisson equation in fluids

- 90%+ of total run time!

2

r2� = r · u⇤

Au = b

Page 3: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

What is Multigrid and why do we care?

‣Hierarchical

- Repeatedly reduce size of the problem

‣Optimal Complexity

- O(N)

‣Parallel & scalable

- 100k+ cores (Hypre)

3

Page 4: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Algebraic vs. Geometric

‣Coarsen from matrix entries

- Not restricted to structured grids

4

vs

Page 5: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Matrix as a graph

‣Variables as vertices

‣Non-zeros as edges

5

Page 6: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Component (1) - Strength of Connection

6

‣Measure of how strongly vertices depend on each other

Each edge must either Strong or Weak

Page 7: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Component (2) - Selector

‣Choose vertices with highest weights

‣Weighting is # of strong edges to vertex

7

Page 8: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Component (3) - Interpolator / Restrictor

‣Transfer residuals between levels

- Construct next level

8

Distance 2- Looks at neighbours of neighbours

Page 9: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Component (4) - Galerkin Product

‣Generate next level in hierarchy

9

Ak+1 = RkAkP k

Triple matrix product

−1.5 −1 −0.5 0 0.5 1 1.5−1.5

−1

−0.5

0

0.5

1

1.5

2%2%< 1%

39%

44%

13%< 1%

Prolongate & correctRestrict residualCompute RCompute ACompute PSmoothOther

Bottleneck!

Page 10: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Component (5) - Solver Cycle

‣Smooth errors on all levels

10

k=1

k=MRestriction Interpolation

V-Cycle- Simplest option- lots of SpMV!

Page 11: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

GPU Implementation - Justification

‣Algorithm entirely parallel!

- Fine-grained parallelism available

‣ If we get ~2x+ speedup, massive savings in runtime

- Bigger runs!

- Less time to solution!

11

Page 12: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

GPU Implementation - First Thoughts

‣Most operations easily expose parallelism

‣ Interpolator is bottleneck

‣Ensure correctness

- Compare against Hypre

- Produce identical results

12

Page 13: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Interpolator (again)

‣ Interpolation weights:

‣Where:

‣And:

‣Repeated set union is tricky..13

Pij =�1

aii

0

@aij +X

k2F si

aikakiPl2Ci[{i} akl

1

A , j 2 Ci

aii = aii +X

n2Nwi \Ci

ain +X

k2F si

aikakiP

l2Ci[{i} akl

Ci = Csi [

[

j2F si

Csj

Page 14: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Repeated Set Union

‣Operation is conceptually simple

14

Ci = Csi [

[

j2F si

Csj

Page 15: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Repeated Set Union

‣Operation is conceptually simple

14

Ci = Csi [

[

j2F si

Csj

Page 16: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Differing Approaches

1. Worst case storage, sort & unique

- Reliant on thrust

2. Construct boolean matrices for connections

- Matrix-Matrix multiply

- Reliant on Cusp

15

Page 17: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Results - Convergence

‣Regular Poisson grids

- Problem size invariance for convergence

160 2 4 6 8 10

x 105

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Av

erag

e C

on

ver

gen

ce R

ate

N

5!pt9pt7pt27pt

Page 18: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Results - Performance

‣System from slow flow past cylinder compared to Hypre

17

-1 0 1 2 3 4-2

-1.5-1

-0.5 0

0.5 1

1.5 2 Code Time Speedup

CUDA 3.57s 1.87x

Hypre(1C)

6.69s -

Hypre(2C)

5.29s 1.26x

Hypre(4C)

4.16s 1.61x

Hypre(6C)

4.00s 1.67x

Page 19: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Profiling

‣ 1,000,000 unknowns

‣Error norm of 10-5

‣Single Tesla C2050 GPU

18

Page 20: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Profiling - Breakdown by Routine

‣Generating Interpolation matrix, coarse A most expensive

19

−1.5 −1 −0.5 0 0.5 1 1.5−1.5

−1

−0.5

0

0.5

1

1.5

2%2%< 1%

39%

44%

13%< 1%

Prolongate & correctRestrict residualCompute RCompute ACompute PSmoothOther

Triple matrix product

- coarse A

Interpolationmatrix

Page 21: Classical Algebraic Multigrid for Engineering Applications · Classical Algebraic Multigrid for Engineering Applications Simon Layton, Lorena Barba (BU) With thanks to Justin Luitjens,

Conclusions & Further Work

‣Classical AMG entirely on GPU

- Validated against Hypre

- Not optimised

‣Multiple approaches

- Test different methods & compare

20