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)