A Sparse Approximate Report about Computing Sparse Approximate Inverses in Matlab *P


Gurpreetsingh Sachdev

Stephanie Taylor

We consider the linear system of equations
Ax = b
where A is a large, sparse, possibly asymmetric matrix. If we can construct a matrix M that approximates the inverse of A, then we can use an iterative method (such as GMRES or BICGSTAB) to solve the preconditioned the system
MAx = Mb.
The sparse approximate inverse (SPAI) M of a matrix A is a sparse matrix such that M ~ A^-1 and the number of non-zeros in M is on the order of the number of non-zeros in A.

The existing implementation of SPAI computes M in parallel, but has a major limitation.  Each processor gets an entire copy of A.  If A gets too large, we may run into memory constraints.  So, it would be ideal if we could distribute A across the processors in a way that avoids communication among them.  However, SPAI is an adaptive algorithm, and we cannot accurately predict what parts of A will be required to compute each column of M.

Our goal is to explore two major areas:
1)  Effective distribution/decomposition of A.

This requires an analysis of the mathematics behind SPAI.   The implementation described in [3] does not make any attempt to distribute A.  The implementation of [1] (by the authors of [1])) does distribute A, but does so without regard to data content.   This is better than [3], but [3] is written in *P, while [1] is written in MPI.  We aim to improve upon the distribution of [1] (in MPI), but to do it in *P (building from [3]).

2)  Inter-processor communication in Matlab *P to enable access to remote parts of A.

Currently, [3] uses the 'mm' function in *P, which does not work for sparse matrices and does not allow processors to access remote parts of A.  We intend to find a way to get access to the remotes parts of A.
There is a mechanism for using MPI communication calls within 'mm' calls [4].  We are in the process of getting it to work on machines at UCSB.

Presentation

Report

References

[1] Grote, M. and Huckle, T. (1997). Parallel Preconditioning with Sparse Approximate Inverses. SIAM Journal of Scientific Computing Vol. 18, No. 3 Pp. 838-853.

[2] Benzi, M. (2002). Preconditioning Techniques for Large Linear Systems: A Survey. Journal of Computational Physics 182. Pp. 418-477.

[3] Taylor, S. (2004). Sparse Approximate Inverses in Matlab *P. www.cs.ucsb.edu/~staylor/spaiPaper.pdf

[4] Guo, D. and Goldman, M. (2003). Java MPI in MATLAB *P. http://beowulf.lcs.mit.edu/18.337/

[5] Barnard, S., Bernardo, L., Simon, H. (1997). An MPI Implementation of the SPAI Preconditioner on the T3E. The International Journal of High Performance Computing Applications.

[6] Barnard, S., Grote M. (1999) A Block Version of the SPAI Preconditioner.
Proc. 9th SIAM Conf. on Parall. Process. for Sci. Comp.