Level 3 basic linear algebra subprograms for sparse matrices: a user-level interface

This article proposes a set of Level 3 Basic Linear Algebra Subprograms and associated kernels for sparse matrices. A major goal is to design and develop a common framework to enable efficient, and portable, implementations of iterative algorithms for sparse matrices on high-performance computers. We have designed the routines to shield the developer of mathematical software from most of the complexities of the various data structures used for sparse matrices. We have kept the interface and suite of codes as simple as possible while at the same time including sufficient functionality to cover most of the requirements of iterative solvers and sufficient flexibility to cover most sparse matrix data structures. An important aspect of our framework is that it can be easily extended to incorporate new kernels if the need arises. We discuss the design, implementation, and use of subprograms for the multiplication of a fully matrix by a sparse one and for the solution of sparse triangular systems with one or more (full) right-hand sides. We include a routine for checking the input data, generating a new sparse data structure from the input, and scaling a sparse matrix. The new data structure for the transformation can be specified by the user or can be chosen automatically by vendors to be efficient on their machines. We also include a routine for permuting the columns of a sparse matrix and one for permuting the rows of a full matrix.

[1]  Jack J. Dongarra,et al.  A set of level 3 basic linear algebra subprograms , 1990, TOMS.

[2]  Thomas C. Oppe,et al.  NSPCG (Nonsymmetric Preconditioned Conjugate Gradient) user's guide: Version 1. 0: A package for solving large sparse linear systems by various iterative methods , 1988 .

[3]  Ramesh C. Agarwal,et al.  A high performance algorithm using pre-processing for the sparse matrix-vector multiplication , 1992, Proceedings Supercomputing '92.

[4]  Iain S. Duff,et al.  The Rutherford-Boeing sparse matrix collection , 1997 .

[5]  Iain S. Duff,et al.  Full matrix techniques in sparse Gaussian elimination , 1982 .

[6]  Yousef Saad,et al.  ILUT: A dual threshold incomplete LU factorization , 1994, Numer. Linear Algebra Appl..

[7]  Jocelyne Erhel Sparse Matrix Multiplication on Vector Computers , 1990, Int. J. High Speed Comput..

[8]  Michele Colajanni,et al.  A Proposal for Parallel Sparse BLAS , 1996, PARA.

[9]  John K. Reid,et al.  Exploiting zeros on the diagonal in the direct solution of indefinite sparse symmetric linear systems , 1996, TOMS.

[10]  Jack J. Dongarra,et al.  An extended set of FORTRAN basic linear algebra subprograms , 1988, TOMS.

[11]  Charles L. Lawson,et al.  Basic Linear Algebra Subprograms for Fortran Usage , 1979, TOMS.

[12]  John G. Lewis,et al.  Sparse extensions to the FORTRAN Basic Linear Algebra Subprograms , 1991, TOMS.

[13]  Michael Allen Heroux,et al.  A proposal for a sparse blas toolkit , 1992 .

[14]  John G. Lewis,et al.  Sparse matrix test problems , 1982, SGNM.

[15]  G. V. Paolini,et al.  Data structures to vectorize CG algorithms for general sparsity patterns , 1989 .

[16]  Ed Anderson,et al.  LAPACK Users' Guide , 1995 .