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 hand-tuning 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 DL and DR
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 skew-symmetric 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,
RAL-TR-95-049, 1995.
DISTRIBUTION
The complete installation (with testing) requires about 3.5 megabytes
of free disk space.
BUG REPORTS
- (3-11-98)
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.