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 next Monday 7 May what your project will be and
who will be working on it.
Each project must turn in a one-page progress report by Wednesday 16 May,
and a final report of 10-15 pages by Wednesday 13 June.
Each project will give a short presentation in the next-to-last week of class
(signup sheet).
We can also arrange for experimental projects to present a demo in the lab.
Experimental and application projects can be solo or a group of two students.
Survey projects must be solo.
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.
-
Use the Graph BLAS (as implemented in SuiteSparse)
to implement one or more of the graph algorithms used in sparse Cholesky factorization,
for example:
- Symbolic factorization (given a graph, compute the filled graph).
- Symmetric elimination orders: minimum degree, nested dissection, reverse Cuthill-McKee.
- Elimination tree (given a graph, compute the elimination tree without computing the filled graph).
-
Use sparse matrices to implement some of the graph algorithms from
Jon Berry's challenge list,
first in Matlab and then using SuiteSparse GraphBLAS.
-
Devise and experiment with hill-climbing strategies that take a
specified sparse Cholesky 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.
Application experiments.
An application experiment is any problem that comes from
computational science and has a challenging 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.
Survey projects.
For a survey project, you will read a few research 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 few related papers
for background and comparison as well.
Email me if you're interested in something not on the list.
-
Nearly-linear-time algorithms for solving linear systems using support-theory preconditioning.
(See CS 219 reference page.)
-
Quantum computing for solving linear equation systems.
(paper: Harrow, Hassidim, and Lloyd)
-
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.
-
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)
-
Preconditioning symmetric indefinite systems using weighted bipartite matching.
(paper: Hagemann and Schenk,
paper: Duff and Koster)
-
Maximum-weight basis preconditioners.
(paper: Boman, Chen, Hendrickson, and Toledo)
-
Preconditioning symmetric indefinite systems from optimization problems.
(paper: Haws and Meyer)