47
Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis [email protected] University of Florida SIAM 2006 – p. 1/100 Special thanks to:

Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

  • Upload
    others

  • View
    20

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Direct Methods for Sparse LinearSystems:

MATLAB sparse backslash

Tim Davis

[email protected]

University of Florida

SIAM 2006 – p. 1/100

Spiecal Thanks to:Special thanks to:

Page 2: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse matrices arise in ...

computational fluid dynamics, finite-element methods,statistics, time/frequency domain circuit simulation, dynamicand static modeling of chemical processes, cryptography,magneto-hydrodynamics, electrical power systems,differential equations, quantum mechanics, structuralmechanics (buildings, ships, aircraft, human body parts...),heat transfer, MRI reconstructions, vibroacoustics, linear andnon-linear optimization, financial portfolios, semiconductorprocess simulation, economic modeling, oil reservoirmodeling, astrophysics, crack propagation, Google pagerank, 3D computer vision, cell phone tower placement,tomography, multibody simulation, model reduction,nano-technology, acoustic radiation, density functional theory,quadratic assignment, elastic properties of crystals, naturallanguage processing, DNA electrophoresis, ...

SIAM 2006 – p. 4/100

Page 3: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

For problems this important,I can't resist to ask:

Can you solve Ax=b faster?

Page 4: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse data structures

compressed sparse column format

column j is Ai[Ap[j] ... Ap[j+1]-1], ditto in Ax

Thus, A(:,j) is easy in MATLAB; A(i,:) hard

A =

4.5 0 3.2 0

3.1 2.9 0 0.9

0 1.7 3.0 0

3.5 0.4 0 1.0

Ap: [0, 3, 6, 8, 10]Ai: [0, 1, 3, 1, 2, 3, 0, 2, 1, 3 ]Ax: [4.5,3.1,3.5,2.9,1.7,0.4,3.2,3.0,0.9,1.0]

SIAM 2006 – p. 15/100

Page 5: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

x = bfor j = 1:n

if (x(j) 6= 0)x(j+1:n) = x(j+1:n) - L(j+1:n,j) * x(j)

endend

SIAM 2006 – p. 21/100

Page 6: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

x = bfor j = 1:n

if (x(j) 6= 0)x(j+1:n) = x(j+1:n) - L(j+1:n,j) * x(j)

endend

O(n+flops) time too high

the problem:for j=1:n

if (x(j) 6= 0)

need pattern of x beforecomputing it

SIAM 2006 – p. 22/100

Page 7: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

x = bfor j = 1:n

if (x(j) 6= 0)x(j+1:n) = x(j+1:n) - L(j+1:n,j) * x(j)

endend

bi 6= 0 ⇒ xi 6= 0xj

xi

L

lij

SIAM 2006 – p. 23/100

Page 8: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

x = bfor j = 1:n

if (x(j) 6= 0)x(j+1:n) = x(j+1:n) - L(j+1:n,j) * x(j)

endend

bi 6= 0 ⇒ xi 6= 0

xj 6= 0 ∧ lij 6= 0 ⇒ xi 6= 0

xj

xi

L

lij

SIAM 2006 – p. 24/100

Page 9: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

x = bfor j = 1:n

if (x(j) 6= 0)x(j+1:n) = x(j+1:n) - L(j+1:n,j) * x(j)

endend

bi 6= 0 ⇒ xi 6= 0

xj 6= 0 ∧ lij 6= 0 ⇒ xi 6= 0

let G(L) have an edgej → i if lij 6= 0

xj

xi

L

lij

SIAM 2006 – p. 25/100

Page 10: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

x = bfor j = 1:n

if (x(j) 6= 0)x(j+1:n) = x(j+1:n) - L(j+1:n,j) * x(j)

endend

bi 6= 0 ⇒ xi 6= 0

xj 6= 0 ∧ lij 6= 0 ⇒ xi 6= 0

let G(L) have an edgej → i if lij 6= 0

let B = {i | bi 6= 0} andX = {i |xi 6= 0}

xj

xi

L

lij

SIAM 2006 – p. 26/100

Page 11: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

x = bfor j = 1:n

if (x(j) 6= 0)x(j+1:n) = x(j+1:n) - L(j+1:n,j) * x(j)

endend

bi 6= 0 ⇒ xi 6= 0

xj 6= 0 ∧ lij 6= 0 ⇒ xi 6= 0

let G(L) have an edgej → i if lij 6= 0

let B = {i | bi 6= 0} andX = {i |xi 6= 0}

then X = ReachG(L)(B)

xj

xi

L

lij

SIAM 2006 – p. 27/100

Page 12: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

12

34

56

78

9

1110

1213

14

3 8

5

10

76

2

4

9

12 13

14

111

Graph GLLower triangular matrix L

SIAM 2006 – p. 28/100

Page 13: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

12

34

56

78

9

1110

1213

14

3 8

5

10

76

2

4

9

12 13

14

111

Graph GLLower triangular matrix L

If B = {4}

SIAM 2006 – p. 29/100

Page 14: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

12

34

56

78

9

1110

1213

14

3 8

5

10

76

2

4

9

13

14

111

12

Graph GLLower triangular matrix L

If B = {4}then X = {4, 9, 12, 13, 14}

SIAM 2006 – p. 30/100

Page 15: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

12

34

56

78

9

1110

1213

14

3 8

5

10

76

2

4

9

13

14

111

12

Graph GLLower triangular matrix L

If B = {4, 6}then X = {6, 10, 11, 4, 9, 12, 13, 14}

SIAM 2006 – p. 31/100

Page 16: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

function x = lsolve(L,b)x = bfor j = 1:n

if (x(j) 6= 0)x(j+1:n) = x(j+1:n) - L(j+1:n,j)*x(j)

Time: O(n + flops), need X to get O(flops)

SIAM 2006 – p. 32/100

Page 17: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

function x = lsolve(L,b)X = Reach(L,B)x = bfor each j in X

x(j+1:n) = x(j+1:n) - L(j+1:n,j) * x(j)

SIAM 2006 – p. 33/100

Page 18: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

function x = lsolve(L,b)X = Reach(L,B)x = bfor each j in X

x(j+1:n) = x(j+1:n) - L(j+1:n,j) * x(j)

function X = Reach(L,B)for each i in B do

if (node i is unmarked) dfs(i)

function dfs(j)mark node j

for each i in Lj doif (node i is unmarked) dfs(i)

push j onto stack for X

SIAM 2006 – p. 34/100

Page 19: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

function x = lsolve(L,b)X = Reach(L,B)x = bfor each j in X

x(j+1:n) = x(j+1:n) - L(j+1:n,j) * x(j)

function X = Reach(L,B)for each i in B do

if (node i is unmarked) dfs(i)

function dfs(j)mark node j

for each i in Lj doif (node i is unmarked) dfs(i)

push j onto stack for X

Total time: O(flops)

SIAM 2006 – p. 35/100

Page 20: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse lower triangular solve, x=L\b

function x = lsolve(L,b)X = Reach(L,B)x = bfor each j in X

x(j+1:n) = x(j+1:n) - L(j+1:n,j) * x(j)

function X = Reach(L,B)for each i in B do

if (node i is unmarked) dfs(i)

function dfs(j)mark node j

for each i in Lj doif (node i is unmarked) dfs(i)

push j onto stack for X

which can be less than n

SIAM 2006 – p. 36/100

Page 21: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky, LLT= A

[

L11

lT12 l22

] [

LT11 l12

l22

]

=

[

A11 a12

aT12 a22

]

SIAM 2006 – p. 41/100

Page 22: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky, LLT= A

[

L11

lT12 l22

] [

LT

11l12

l22

]

=

[

A11 a12

aT12 a22

]

1. factorize L11LT

11= A11

SIAM 2006 – p. 42/100

Page 23: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky, LLT= A

[

L11

lT12 l22

] [

LT11 l12

l22

]

=

[

A11 a12

aT12 a22

]

1. factorize L11LT11 = A11

2. solve L11l12 = a12 for l12

SIAM 2006 – p. 43/100

Page 24: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky, LLT= A

[

L11

lT

12l22

] [

LT11 l12

l22

]

=

[

A11 a12

aT12 a22

]

1. factorize L11LT11 = A11

2. solve L11l12 = a12 for l12

3. l22 =√

a22 − lT12

l12

SIAM 2006 – p. 44/100

Page 25: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky, LLT= A

[

L11

lT12 l22

] [

LT11 l12

l22

]

=

[

A11 a12

aT12 a22

]

1. factorize L11LT11 = A11

2. solve L11l12 = a12 for l12

3. l22 =√

a22 − lT12l12

for k = 1 to n

solve L11l12 = a12 for l12

l22 =√

a22 − lT12l12

SIAM 2006 – p. 45/100

Page 26: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky, LLT= A

[

L11

lT12 l22

] [

LT11 l12

l22

]

=

[

A11 a12

aT12 a22

]

1. factorize L11LT11 = A11

2. solve L11l12 = a12 for l12

3. l22 =√

a22 − lT12l12

for k = 1 to n

solve L11l12 = a12 for l12

l22 =√

a22 − lT12l12

an up-looking method

accessed

not accessedcompute kth row

SIAM 2006 – p. 46/100

Page 27: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: etree

elimination tree

arises in many direct methodsCompute nonzero pattern of x=L\b for a Cholesky Lin time O(|x|), the number of nonzeros in x

...

SIAM 2006 – p. 47/100

Page 28: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: etree

Elimination tree T : pruning the graph of L.Consider computing kth row of L:

accessed

not accessedcomputed xk

SIAM 2006 – p. 48/100

Page 29: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: etree

Elimination tree T : pruning the graph of L.Consider computing kth row of L:

lki

xi

xk

lki 6= 0 ⇔ xi 6= 0

SIAM 2006 – p. 49/100

Page 30: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: etree

Elimination tree T : pruning the graph of L.Consider computing kth row of L:

lki

lji

xi

xj

xk

lki 6= 0 ⇔ xi 6= 0

(lji 6= 0 and xi 6= 0)⇒ xj 6= 0

SIAM 2006 – p. 50/100

Page 31: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: etree

Elimination tree T : pruning the graph of L.Consider computing kth row of L:

lki

lji

lkj

xi

xj

xk

lki 6= 0 ⇔ xi 6= 0

(lji 6= 0 and xi 6= 0)⇒ xj 6= 0

lkj 6= 0 ⇔ xj 6= 0

SIAM 2006 – p. 51/100

Page 32: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: etree

Elimination tree T : pruning the graph of L.Consider computing kth row of L:

lki

lji

lkj

xi

xj

xk

lki 6= 0 ⇔ xi 6= 0

(lji 6= 0 and xi 6= 0)⇒ xj 6= 0

lkj 6= 0 ⇔ xj 6= 0

Thus, lki redundant forX = Reach(B).

SIAM 2006 – p. 52/100

Page 33: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: etree

Elimination tree T : pruning the graph of L.Consider computing kth row of L:

lki

lji

lkj

xi

xj

xk

lki 6= 0 ⇔ xi 6= 0

(lji 6= 0 and xi 6= 0)⇒ xj 6= 0

lkj 6= 0 ⇔ xj 6= 0

Thus, lki redundant forX = Reach(b).

parent(i) = min{j > i | lji 6= 0}; other edges redundant

SIAM 2006 – p. 53/100

Page 34: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: etree

Elimination tree T : pruning the graph of L.Consider computing kth row of L:

lki

lji

lkj

xi

xj

xk

lki 6= 0 ⇔ xi 6= 0

(lji 6= 0 and xi 6= 0)⇒ xj 6= 0

lkj 6= 0 ⇔ xj 6= 0

Thus, lki redundant forX = Reach(b).

parent(i) = min{j > i | lji 6= 0}; other edges redundant

Lk∗ = Reach(A1:k,k) in O(|Lk∗|) time

SIAM 2006 – p. 54/100

Page 35: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: etree

12

34

56

78

9

1110

A

SIAM 2006 – p. 55/100

Page 36: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: etree

12

34

56

78

9

1110

12

34

56

78

910

11

Cholesky factor L of AA

SIAM 2006 – p. 56/100

Page 37: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: etree

2

11

3 6

8

10

1

9

7

45

12

34

56

78

9

1110

12

34

56

78

910

11

A Cholesky factor L of A elimination tree

SIAM 2006 – p. 57/100

Can read off zero patterns of L by zero patterns of A + etree.

Problem: Why we can compute zero patterns of L in O~(n^2) time, but not L itself?

Page 38: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: overview

Symbolic analysis:

fill-reducing ordering, A = PAP T = LLT

etree of A: nearly O(|A|)

depth-first postordering of etree: O(n)

column counts of L: nearly O(|A|)

some methods find L: O(|L|) or less

Numeric factorization:up-lookingleft-looking, supernodal

SIAM 2006 – p. 66/100

Postorder (Left, Right, Root)

Page 39: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: left-looking

columncompute kth

access L(k:n,1:k-1)

for k = 1 to n

x = A(k:n,k)for each j in Reach(L,A(1 : k, k))

x(k:n) = x(k:n) - L(k:n,j) * L(k,j)L(k,k) = sqrt(x(k))L(k+1:n,k) = x(k) / L(k,k)

SIAM 2006 – p. 68/100

Page 40: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: left-looking

Lk∗ = Reach(L,A(1 : k, k))

for k = 1 to n

x = A(k:n,k)for each j in Reach(L,A(1 : k, k))

.........

SIAM 2006 – p. 69/100

Page 41: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: left-looking

for k = 1 to n

x = A(k:n,k)for each j in Reach(L,A(1 : k, k))

x(k:n) = x(k:n) - L(k:n,j) * L(k,j)......

SIAM 2006 – p. 70/100

Page 42: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: left-looking

for k = 1 to n

x = A(k:n,k)for each j in Reach(L,A(1 : k, k))

x(k:n) = x(k:n) - L(k:n,j) * L(k,j)L(k,k) = sqrt(x(k))L(k+1:n,k) = x(k) / L(k,k)

SIAM 2006 – p. 71/100

Page 43: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: supernodal

column 4

4

5

6

etree:

...

Adjacent columns of L

often have identicalpattern

a chain in the eliminationtree

can exploit densesubmatrix operations

SIAM 2006 – p. 75/100

Page 44: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: supernodal

block left-looking

for jth supernode:

k1

k2

jth supernode,w = k2 − k1

columns of L

SIAM 2006 – p. 76/100

Page 45: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: supernodal

block left-looking

for jth supernode:

(1) sparse block matrixmultiply

SIAM 2006 – p. 77/100

Page 46: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: supernodal

block left-looking

for jth supernode:

(1) sparse block matrixmultiply

(2) dense Cholesky

SIAM 2006 – p. 78/100

Page 47: Direct Methods for Sparse Linear Systems: MATLAB sparse ...yintat.com/teaching/cse599-winter18/12_1.pdf · Direct Methods for Sparse Linear Systems: MATLAB sparse backslash Tim Davis

Sparse Cholesky: supernodal

block left-looking

for jth supernode:

(1) sparse block matrixmultiply

(2) dense Cholesky

(3) dense block Lx = bT

solve

SIAM 2006 – p. 79/100