These are just ideas -- please see me if there's something else
you'd like to work on, or if you'd like to discuss any of these.
Let me know by Monday 12 May what your project will be and
who will be working on it.
Each project must turn in a half-page progress report by Wednesday 21 May,
and a final report of 6-12 pages by Wednesday 11 June.
Each project will also include a 20-minute presentation during the
last week of class, 2 or 4 June.
We can also arrange for experimental projects to present a demo in the lab.
Survey projects must be solo.
Experimental projects can be solo or a group of two students.
Survey projects.
For a survey project, you will read two or three papers on a
sparse matrix topic not covered in class. Here are some
possibilites.
Some of them come with a link to a paper, and I can give you
references for the others if you'd like. In each case you
will end up reading a couple of related papers for background
and comparison as well.
Email me if you're interested in something not on the list.
-
Symmetric indefinite factorization: A = L*D*L' where D is block
diagonal with 1-by-1 and 2-by-2 blocks.
-
Sparse QR factorization and least squares problems.
-
The real details of UMFpack, Tim Davis's unsymmetric multifrontal method.
-
Mesh partitioning algorithms: geometric, spectral, multilevel.
-
Implementations of minimum degree:
AMD, Liu's minimum degree, minimum deficiency.
-
Elimination orders that attempt to minimize
bandwidth front size.
-
Parallel multifrontal algorithms, e.g. MUMPS.
-
Graph coloring for sparse Jacobian estimation.
- Ordering methods for preconditioned conjugate gradient methods
applied to unstructured grid problems.
(paper: D'Azevedo, Forsyth, and Tang)
- Ordering, anisotropy, and factored sparse approximate inverses.
(paper: Bridson and Tang)
- Algorithms for finding weighted bipartite matchings.
(paper: Duff and Koster)
-
Preconditioning symmetric indefinite systems using
weighted matching in graphs.
(paper: Hagemann and Schenk)
- Maximum-weight basis preconditioners.
(paper: Boman, Chen, Hendrickson, and Toledo)
- Nearly-linear time algorithms for solving linear systems using
support-theory preconditioning.
(paper: Spielman and Teng)
- Solving elliptic finite element systems in near-linear
time with support preconditioners.
(paper: Boman, Hendrickson, and Vavasis)
- Preconditioning symmetric indefinite systems from optimization problems.
(paper: Haws and Meyer)
- Preconditioning dense linear systems from electromagnetics problems.
(paper: Duff, Giraud, Langou, and Martin)
Algorithm experiments.
For an algorithm experiment, you will implement and compare
different approaches to a sparse algorithm. Here are a couple of
possibilities; email me if you're interested in something not on the list.
-
Devise and experiment with hill-climbing strategies that take a
specified elimination order and try to improve it.
-
Write a levels-of-fill incomplete factorization preconditioner
for Matlab, and experiment with using it in an iterative method.
-
Write a graphic sparse matrix explorer for Matlab that is more
flexible and useful than "spy".
Application experiments.
An application experiment is any problem that comes from
computational science and has a large linear system in it;
you will experiment with methods for the sparse computation.
The application should be one you are already
familiar with, from your research or another class or a
collaboration. Talk to me if you'd like to do this.