SuperMatrix - C data structure in the SuperLU software that represents a sparse or dense general matrix.
#include <sunperf.h>
Oracle Solaris Studio Performance Library SuperMatrix(3P)
NAME
SuperMatrix - 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 element of column j in nzval[] and rowind[]
Zero-based indexing is used; the consecutive col-
umns of the nonzeros may not be contiguous in stor-
age, 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 begin-
ning 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 row-
ptr[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 columns in
nzval[]
rowind (int *) pointer to array of
compressed row indices of rectangu-
lar supernodes
rowind_colptr (int *) pointer to
array of beginning of columns in
rowind[]
col_to_sup (int *) col_to_sup[j] is
the supernode number to which col-
umn 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, supern-
ode, not used.
SLU_SR row-wise, supernode, not used.
SLU_DN Fortran style column-wise stor-
age 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.
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.
7 Nov 2015 SuperMatrix(3P)