SuperMatrix(3P) Sun Performance Library SuperMatrix(3P)NAMESuperMatrix - C data structure in the SuperLU software that represents
a sparse or dense general matrix.
SYNOPSIS
#include <sunperf.h>
DESCRIPTION
SuperLU uses a principal data structure SuperMatrix to represent a gen‐
eral matrix, sparse or dense. The SuperMatrix structure contains two
levels of fields.
The first level defines all the properties of a matrix which are inde‐
pendent of how it is stored in memory. In particular, it specifies the
following three orthogonal properties: Storage type (Stype) indicates
the type of the storage scheme in used in *Store; data type (Dtype)
encodes the four precisions; mathematical type (Mtype) specifies some
mathematical properties. Number of rows (nrow) and number of columns
(ncol) in the matrix are also stored in SuperMatrix.
The second level (*Store) points to the actual storage (a structure)
used to store the matrix.
SuperMatrix
typedef struct {
Stype_t Stype;
Dtype_t Dtype;
Mtype_t Mtype;
int nrow;
int ncol;
void *Store;
} SuperMatrix;
typedef struct {
Stype_t Stype;
Dtype_t Dtype;
Mtype_t Mtype;
long nrow;
long ncol;
void *Store;
} SuperMatrix_64;
Stype
Storage types are defined as enum constants, and associated with each
Stype is a storage format (a structure) to which *Store points. Valid
storage types and storage formats are:
SLU_NC column-wise, no supernode
Storage format is also known as Harwell-Boeing sparse matrix
format
NCformat structure:
nnz (int) number of nonzeros in the matrix
nzval (void *) pointer to array of nonzero values, packed
by column
rowind (int *) pointer to array of row indices of the
nonzeros
colptr (int *) pointer to array of beginning of columns in
nzval[] and rowind[]. Zero-based indexing is used; array
colptr has ncol+1 entries, the last one pointing beyond the
last column, so that colptr[ncol] = nnz.
SLU_NCP column-wise, column-permuted, no supernode
NCPformat structure:
nnz (int) number of nonzeros in the matrix
nzval (void *) pointer to array of nonzero values, packed
by column
rowind (int *) pointer to array of row indices of the
nonzeros
colbeg (int *) colbeg[j] points to the beginning of column
j in nzval[]
colend (int *) colend[j] points to one past the last ele‐
ment of column j in nzval[] and rowind[] Zero-based index‐
ing is used; the consecutive columns of the nonzeros may
not be contiguous in storage, because the matrix has been
postmultiplied by a column permutation matrix.
SLU_NR compressed sparse row storage, no supernode
NRformat structure:
nnz (int) number of nonzeros in the matrix
nzval (void *) pointer to array of nonzero values, packed
by column
colind (int *); pointer to array of column indices of the
nonzeros
rowptr (int *) pointer to array of beginning of rows in
nzval[] and colind[] Zero-based indexing is used; array
rowptr has nrow+1 entries, the last one pointing beyond the
last column, so that rowptr[nrow] = nnz.
SLU_SC column-wise, supernode
SCformat structure:
nnz (int) number of nonzeros in the matrix
nsuper (int) number of supernodes, minus 1
nzval (void *) pointer to array of nonzero values, packed
by column
nzval_colptr (int *) pointer to array of beginning of col‐
umns in nzval[]
rowind (int *) pointer to array of compressed row indices
of rectangular supernodes
rowind_colptr (int *) pointer to array of beginning of col‐
umns in rowind[]
col_to_sup (int *) col_to_sup[j] is the supernode number to
which column j belongs; mapping from column to supernode
number.
sup_to_col (int *) sup_to_col[s] points to the start of the
s-th supernode; mapping from supernode number to column.
Zero-based indexing is used; nzval_colptr[],
rowind_colptr[], col_to_sup and sup_to_col[] have ncol+1
entries, the last one pointing beyond the last column.
SLU_SCP column-wise, permuted, supernode, not used.
SLU_SR row-wise, supernode, not used.
SLU_DN Fortran style column-wise storage for dense matrix
DNformat structure:
lda (int) leading dimension
nzval (void *) array of size lda*ncol to represent a dense
matrix
Dtype
The four precisions of Dtype are:
SLU_S single precision
SLU_S double precision
SLU_S complex
SLU_S double complex
Mtype
The SuperMatrix structure can represent the following Mathematical
matrix types:
SLU_GE general
SLU_TRLU lower triangular, unit diagonal
SLU_TRUU upper triangular, unit diagonal
SLU_TRL lower triangular
SLU_TRU upper triangular
SLU_SYL symmetric, store lower half
SLU_SYL symmetric, store upper half
SLU_SYL Hermitian, store lower half
SLU_SYL Hermitian, store upper half
Currently, only SLU_GE is supported.
COPYRIGHT
Copyright (c) 2003, The Regents of the University of California,
through Lawrence Berkeley National Laboratory (subject to receipt of
any required approvals from U.S. Dept. of Energy)
SEE ALSO
http://crd.lbl.gov/~xiaoye/SuperLU/
James W. Demmel, Stanley C. Eisenstat, John R. Gilbert, Xiaoye S. Li
and Joseph W. H. Liu, "A supernodal approach to sparse partial pivot‐
ing", SIAM J. Matrix Analysis and Applications, Vol. 20, Num. 3, 1999,
pp. 720-755.
6 Mar 2009 SuperMatrix(3P)