The NIST Fortran Sparse BLAS (v. 0.5)
Sparse Matrix Computational Kernels
Karin Remington
National Institute of Standards and Technology
See the
working document of the BLAST Sparse Subcommittee for related information.
As part of the ongoing standardization effort in the
BLAS Technical
Forum, we are releasing the NIST Fortran Sparse BLAS Library
for public review.
 OVERVIEW
 DOCUMENTATION AND RELATED PAPERS
 DISTRIBUTION
 BUG REPORTS
OVERVIEW
The original NIST Sparse BLAS
implementation (in C) of the Toolkit
interface provides an maintenance friendly approach to optimization
of BLAS kernel routines via an automatic generation of special case
routines. This approach provides high performance with little or
no handtuning of source code.
It does, however, result in a very large number of kernel routine
interfaces; essentially one interface for each Toolkit level routine
parameter combination. For those who find this to be undesirable,
and not worth the performance and maintenance benefits, a straightforward
Fortran implementation of the Toolkit routines is now available.
These routines are NOT optimized for
any particular parameter combinations, but can be optimized to suit
the needs of a particular vendor/site.
The NIST Fortran Sparse BLAS (Basic Linear Algebra Subprogram) library provides
computational kernels for fundamental sparse matrix operations:
 sparse matrix products,
 solution of triangular systems,
where A is sparse matrix, B and C are dense matrices/vectors,
and D_{L} and D_{R}
are diagonal matrices. This
version of the NIST Fortran Sparse BLAS supports the following sparse formats:
 csr  compressed sparse row
 csc  compressed sparse column
 coo  coordinate (matrix multiply only)
 bsr  block sparse row
 bsc  block sparse column
 bco  block coordinate (matrix multiply only)
 vbr  variable block row
 dia  diagonal
 ell  Ellpack
 jad  jagged diagonal
 sky  skyline
 bdi  block diagonal
 bel  block Ellpack
Symmetric and skewsymmetric versions are also supported.
The routines are written in Fortran and are callable from Fortran and C through
the interface proposed in the Sparse BLAS Toolkit,
see
"A Revised Proposal for a Sparse BLAS Toolkit", by S. Carney,
M. Heroux, G. Li, R. Pozo, K. Remington and K. Wu. Also see the
companion paper,
"A set of Level 3 Basic Linear Algebra Subprograms
for sparse matrices", I. Duff, M. Marrone, G. Radiacti, C. Vittoli.
PERFORMANCE
Due to the large number of matrix structures and algorithm cases, the primary
effort has been on functionality rather than performance.
Performance measurements on Sun, SGI, RS6000 and Pentium Pro systems
will be forthcoming.
DOCUMENTATION AND RELATED PAPERS

"A Revised Proposal for a Sparse BLAS Toolkit", S. Carney,
M. Heroux, G. Li, R. Pozo, K. Remington and K. Wu.
 NIST Fortran Sparse BLAS User's Guide (now available)

"A set of Level 3 Basic Linear Algebra Subprograms
for sparse matrices", I. Duff, M. Marrone, G. Radiacti, C. Vittoli,
Rutherford Appleton Laboratory Technical Report,
RALTR95049, 1995.
DISTRIBUTION
The complete installation (with testing) requires about 3.5 megabytes
of free disk space.
BUG REPORTS
 (31198)
The documented Matlab binary files describing the test problems were
inadvertantly excluded from the source code distribution. They can be
retrieved from Matlab binary (.mat) files.
Last updated: Jul 31, 1997 by
KAR.