Top Banner
Administrivia: October 5, 2009 Administrivia: October 5, 2009 Homework 1 due Wednesday Reading in Davis: Skim section 6.1 (the fill bounds will make more sense next week) Read section 6.2, and chapter 4 through 4.3 A few copies of Davis are available (at a discount) from Roxanne in HFH 5102.
17

Administrivia : October 5, 2009

Jan 08, 2016

Download

Documents

Aadi

Administrivia : October 5, 2009. Homework 1 due Wednesday Reading in Davis: Skim section 6.1 (the fill bounds will make more sense next week) Read section 6.2, and chapter 4 through 4.3 A few copies of Davis are available (at a discount) from Roxanne in HFH 5102. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Administrivia :  October 5, 2009

Administrivia: October 5, 2009Administrivia: October 5, 2009

• Homework 1 due Wednesday

• Reading in Davis: • Skim section 6.1 (the fill bounds will make more sense

next week)• Read section 6.2, and chapter 4 through 4.3

• A few copies of Davis are available (at a discount) from Roxanne in HFH 5102.

Page 2: Administrivia :  October 5, 2009

Compressed Sparse Matrix StorageCompressed Sparse Matrix Storage

• Full storage: • 2-dimensional array.• (nrows*ncols) memory.

31 0 53

0 59 0

41 26 0

31 41 59 26 53

1 3 2 3 1

• Sparse storage: • Compressed storage by

columns (CSC).• Three 1-dimensional arrays.• (2*nzs + ncols + 1) memory.• Similarly, CSR.

1 3 5 6

value:

row:

colstart:

Page 3: Administrivia :  October 5, 2009

Matrix – Matrix Multiplication: C = A * BMatrix – Matrix Multiplication: C = A * B

C(:, :) = 0;

for i = 1:n

for j = 1:n

for k = 1:n

C(i, j) = C(i, j) + A(i, k) * B(k, j);

• The n3 scalar updates can be done in any order.

• Six possible algorithms: ijk, ikj, jik, jki, kij, kji

(lots more if you think about blocking for cache).

• Goal is O(nonzero flops) time for sparse A, B, C.

• Even time = O(n2) is too slow!

Page 4: Administrivia :  October 5, 2009

CSC Sparse Matrix Multiplication with SPACSC Sparse Matrix Multiplication with SPA

B

= x

C A

for j = 1:n C(:, j) = A * B(:, j)

SPA

gather scatter/accumulate

All matrix columns and vectors are stored compressed except the SPA.

Page 5: Administrivia :  October 5, 2009

The Landscape of Sparse Ax=b SolversThe Landscape of Sparse Ax=b Solvers

Pivoting

LU

GMRES,

BiCGSTAB, …

Cholesky

Conjugate gradient

DirectA = LU

Iterativey’ = Ay

Non-symmetric

Symmetricpositivedefinite

More Robust Less Storage

More Robust

More General

D

Page 6: Administrivia :  October 5, 2009

Ax = b: Ax = b: Gaussian elimination (without pivoting)Gaussian elimination (without pivoting)

1. Factor A = LU

2. Solve Ly = b for y

3. Solve Ux = y for x

• Variations:• Pivoting for numerical stability: PA=LU

• Cholesky for symmetric positive definite A: A = LLT

• Permuting A to make the factors sparser

= x

Page 7: Administrivia :  October 5, 2009

Triangular solve: x = L \ bTriangular solve: x = L \ b

• Row oriented:

for i = 1 : n x(i) = b(i);

for j = 1 : (i-1)

x(i) = x(i) – L(i, j) * x(j); end; x(i) = x(i) / L(i, i);end;

• Column oriented:

x(1:n) = b(1:n);for j = 1 : n x(j) = x(j) / L(j, j);

x(j+1:n) = x(j+1:n) – L(j+1:n, j) * x(j); end;

• Either way works in O(nnz(L)) time [details for rows: exercise] • If b and x are dense, flops = nnz(L) so no problem• If b and x are sparse, how do it in O(flops) time?

Page 8: Administrivia :  October 5, 2009

Directed GraphDirected Graph

• A is square, unsymmetric, nonzero diagonal

• Edges from rows to columns

• Symmetric permutations PAPT

1 2

3

4 7

6

5

A G(A)

Page 9: Administrivia :  October 5, 2009

Directed Acyclic GraphDirected Acyclic Graph

• If A is triangular, G(A) has no cycles

• Lower triangular => edges from higher to lower #s

• Upper triangular => edges from lower to higher #s

1 2

3

4 7

6

5

A G(A)

Page 10: Administrivia :  October 5, 2009

Directed Acyclic GraphDirected Acyclic Graph

• If A is triangular, G(A) has no cycles

• Lower triangular => edges from higher to lower #s

• Upper triangular => edges from lower to higher #s

1 2

3

4 7

6

5

A G(A)

Page 11: Administrivia :  October 5, 2009

Depth-first search and postorderDepth-first search and postorder

• dfs (starting vertices)

marked(1 : n) = false;

p = 1;

for each starting vertex v do visit(v);

• visit (v)

if marked(v) then return; marked(v) = true;

for each edge (v, w) do visit(w);

postorder(v) = p; p = p + 1;

When G is acyclic, postorder(v) > postorder(w) for every edge (v, w)

Page 12: Administrivia :  October 5, 2009

Depth-first search and postorderDepth-first search and postorder

• dfs (starting vertices)

marked(1 : n) = false;

p = 1;

for each starting vertex v do if not marked(v) then visit(v);

• visit (v)

marked(v) = true;

for each edge (v, w) do if not marked(w) then visit(w);

postorder(v) = p; p = p + 1;

When G is acyclic, postorder(v) > postorder(w) for every edge (v, w)

Page 13: Administrivia :  October 5, 2009

Sparse Triangular SolveSparse Triangular Solve

1 52 3 4

=

G(LT)

1

2 3

4

5

L x b

1. Symbolic:– Predict structure of x by depth-first search from nonzeros of b

2. Numeric:– Compute values of x in topological order

Time = O(flops)

Page 14: Administrivia :  October 5, 2009

Sparse-sparse triangular solve: x = L \ bSparse-sparse triangular solve: x = L \ b

• Column oriented:

dfs in G(LT) to predict nonzeros of x;

x(1:n) = b(1:n);

for j = nonzero indices of x in topological order

x(j) = x(j) / L(j, j);

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

end;

• Depth-first search calls “visit” once per flop• Runs in O(flops) time even if it’s less than nnz(L) or n …• Except for one-time O(n) SPA setup

Page 15: Administrivia :  October 5, 2009

Nonsymmetric Ax = b: Nonsymmetric Ax = b: Gaussian elimination (without pivoting)Gaussian elimination (without pivoting)

1. Factor A = LU

2. Solve Ly = b for y

3. Solve Ux = y for x

• Variations:• Pivoting for numerical stability: PA=LU

• Cholesky for symmetric positive definite A: A = LLT

• Permuting A to make the factors sparser

= x

Page 16: Administrivia :  October 5, 2009

Left-looking Column LU FactorizationLeft-looking Column LU Factorization

for column j = 1 to n do

solve

scale: lj = lj / ujj

• Column j of A becomes column j of L and U

L 0L I( ) uj

lj ( ) = aj for uj, lj

L

LU

A

j

Page 17: Administrivia :  October 5, 2009

Left-looking sparse LU without pivoting (simple)Left-looking sparse LU without pivoting (simple)

L = speye(n);

for column j = 1 : n

dfs in G(LT) to predict nonzeros of x;

x(1:n) = A(1:n, j); // x is a SPA

for i = nonzero indices of x in topological order

x(i) = x(i) / L(i, i);

x(i+1:n) = x(i+1:n) – L(i+1:n, i) * x(i);

U(1:j, j) = x(1:j);

L(j+1:n, j) = x(j+1:n);

cdiv: L(j+1:n, j) = L(j+1:n, j) / U(j, j);