Go to main content
Oracle Developer Studio 12.5 Man Pages

Exit Print View

Updated: June 2017
 
 

SuperMatrix (3p)

Name

SuperMatrix - C data structure in the SuperLU software that represents a sparse or dense general matrix.

Synopsis

#include <sunperf.h>

Description

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)