gstrf - computes an LU factorization of a general sparse m-by-n matrix A using partial pivoting with row inter- changes.
#include <sunperf.h> void sgstrf(superlu_options_t *options, SuperMatrix *A, float drop_tol, int relax, int panel_size, int *etree, void *work, int lwork, int *perm_c, int *perm_r, SuperMatrix *L, SuperMatrix *U, Super- LUStat_t *stat, int *info) void dgstrf(superlu_options_t *options, SuperMatrix *A, double drop_tol, int relax, int panel_size, int *etree, void *work, int lwork, int *perm_c, int *perm_r, SuperMatrix *L, SuperMatrix *U, SuperLUStat_t *stat, int *info) void cgstrf(superlu_options_t *options, SuperMatrix *A, double drop_tol, int relax, int panel_size, int *etree, void *work, int lwork, int *perm_c, int *perm_r, SuperMatrix *L, SuperMatrix *U, SuperLUStat_t *stat, int *info) void zgstrf(superlu_options_t *options, SuperMatrix *A, double drop_tol, int relax, int panel_size, int *etree, void *work, int lwork, int *perm_c, int *perm_r, SuperMatrix *L, SuperMatrix *U, SuperLUStat_t *stat, int *info) void sgstrf_64(superlu_options_t_64 *options, SuperMatrix_64 *A, float drop_tol, long relax, long panel_size, long *etree, void *work, long lwork, long *perm_c, long *perm_r, SuperMatrix_64 *L, SuperMatrix_64 *U, SuperLUStat_t_64 *stat, long *info) void dgstrf_64(superlu_options_t_64 *options, SuperMatrix_64 *A, double drop_tol, long relax, long panel_size, long *etree, void *work, long lwork, long *perm_c, long *perm_r, SuperMatrix_64 *L, SuperMatrix_64 *U, SuperLUStat_t_64 *stat, long *info) void cgstrf_64(superlu_options_t_64 *options, SuperMatrix_64 *A, float drop_tol, long relax, long panel_size, long *etree, void *work, long lwork, long *perm_c, long *perm_r, SuperMatrix_64 *L, SuperMatrix_64 *U, SuperLUStat_t_64 *stat, long *info) void zgstrf_64(superlu_options_t_64 *options, SuperMatrix_64 *A, double drop_tol, long relax, long panel_size, long *etree, void *work, long lwork, long *perm_c, long *perm_r, SuperMatrix_64 *L, SuperMatrix_64 *U, SuperLUStat_t_64 *stat, long *info)
Oracle Solaris Studio Performance Library gstrf(3P)
NAME
gstrf: cgstrf, dgstrf, sgstrf, zgstrf - computes an LU factorization of
a general sparse m-by-n matrix A using partial pivoting with row inter-
changes.
SYNOPSIS
#include <sunperf.h>
void sgstrf(superlu_options_t *options, SuperMatrix *A, float drop_tol,
int relax, int panel_size, int *etree, void *work, int lwork,
int *perm_c, int *perm_r, SuperMatrix *L, SuperMatrix *U, Super-
LUStat_t *stat, int *info)
void dgstrf(superlu_options_t *options, SuperMatrix *A, double
drop_tol, int relax, int panel_size, int *etree, void *work, int
lwork, int *perm_c, int *perm_r, SuperMatrix *L, SuperMatrix *U,
SuperLUStat_t *stat, int *info)
void cgstrf(superlu_options_t *options, SuperMatrix *A, double
drop_tol, int relax, int panel_size, int *etree, void *work, int
lwork, int *perm_c, int *perm_r, SuperMatrix *L, SuperMatrix *U,
SuperLUStat_t *stat, int *info)
void zgstrf(superlu_options_t *options, SuperMatrix *A, double
drop_tol, int relax, int panel_size, int *etree, void *work, int
lwork, int *perm_c, int *perm_r, SuperMatrix *L, SuperMatrix *U,
SuperLUStat_t *stat, int *info)
void sgstrf_64(superlu_options_t_64 *options, SuperMatrix_64 *A, float
drop_tol, long relax, long panel_size, long *etree, void *work,
long lwork, long *perm_c, long *perm_r, SuperMatrix_64 *L,
SuperMatrix_64 *U, SuperLUStat_t_64 *stat, long *info)
void dgstrf_64(superlu_options_t_64 *options, SuperMatrix_64 *A, double
drop_tol, long relax, long panel_size, long *etree, void *work,
long lwork, long *perm_c, long *perm_r, SuperMatrix_64 *L,
SuperMatrix_64 *U, SuperLUStat_t_64 *stat, long *info)
void cgstrf_64(superlu_options_t_64 *options, SuperMatrix_64 *A, float
drop_tol, long relax, long panel_size, long *etree, void *work,
long lwork, long *perm_c, long *perm_r, SuperMatrix_64 *L,
SuperMatrix_64 *U, SuperLUStat_t_64 *stat, long *info)
void zgstrf_64(superlu_options_t_64 *options, SuperMatrix_64 *A, double
drop_tol, long relax, long panel_size, long *etree, void *work,
long lwork, long *perm_c, long *perm_r, SuperMatrix_64 *L,
SuperMatrix_64 *U, SuperLUStat_t_64 *stat, long *info)
PURPOSE
gstrf computes an LU factorization of a general sparse m-by-n matrix A
using partial pivoting with row interchanges. The factorization has
the form
Pr * A = L * U
where Pr is a row permutation matrix, L is lower triangular with unit
diagonal elements (lower trapezoidal if A->nrow > A->ncol), and U is
upper triangular (upper trapezoidal if A->nrow < A->ncol).
ARGUMENTS
superlu_options_t *options (input)
The structure that defines the input parameters to control how
the LU decomposition will be performed.
SuperMatrix *A (input)
Original matrix A, permuted by columns, of dimension (A->nrow,
A->ncol). The type of A can be:
Stype = SLU_NC; Dtype = SLU_S; Mtype = SLU_GE.
float drop_tol (input; not used)
int relax (input)
To control degree of relaxing supernodes. If the number of nodes
(columns) in a subtree of the elimination tree is less than
relax, this subtree is considered as one supernode, regardless
of the row structures of those columns.
int panel_size (input)
A panel consists of at most panel_size consecutive columns.
int *etree (input) An array of size (A->ncol) that contains the elimi-
nation tree of transpose(A)*A.
Note: etree is a vector of parent pointers for a forest whose
vertices are the integers 0 to A->ncol-1; etree[root]==A->ncol.
On input, the columns of A should be permuted so that the etree
is in a certain postorder.
void *work (input/output)
User-supplied work space and space for the output data struc-
tures. of size lwork (in bytes). Not referenced if lwork = 0.
int lwork (input)
Specifies the size of work array in bytes.
= 0: allocate space internally by system malloc
> 0: use user-supplied work array of length lwork in bytes,
returns error if space runs out.
= -1: the routine guesses the amount of space needed without per-
forming the factorization, and returns it in info; no other
side effects.
int *perm_c (input)
Column permutation vector of size (A->ncol) which defines the
permutation matrix Pc. perm_c[i] = j means column i of A is in
position j in A*Pc. When searching for diagonal, perm_c[*] is
applied to the row subscripts of A, so that diagonal threshold
pivoting can find the diagonal of A, rather than that of A*Pc.
int *perm_r (input/output)
Row permutation vector of size (A->nrow) which defines the per-
mutation matrix Pr. perm_r[i] = j means row i of A is in posi-
tion j in Pr*A. If options->Fact = SamePattern_SameRowPerm, the
pivoting routine will try to use the input perm_r, unless a cer-
tain threshold criterion is violated. In that case, perm_r is
overwritten by a new permutation determined by partial pivoting
or diagonal threshold pivoting.
Otherwise, perm_r is output argument.
SuperMatrix *L (output)
The factor L from the factorization Pr*A=L*U. It uses com-
pressed row subscripts storage for supernodes, i.e., L has
types: Stype = SLU_SC, Dtype = SLU_S, Mtype = SLU_TRLU
SuperMatrix *U (output)
The factor U from the factorization Pr*A*Pc=L*U. It uses col-
umn-wise storage scheme, i.e., U has types: Stype = SLU_NC,
Dtype = SLU_S, Mtype = SLU_TRU.
SuperLUStat_t *stat (output)
Records the statistics on runtime and floating-point operation
count.
int *info (output)
= 0:
successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: if info = i, and i is
<= A->ncol: U(i,i) is exactly zero. The factorization has
been completed, but the factor U is exactly sin-
gular, and division by zero will occur if it is
used to solve a system of equations.
> A->ncol: number of bytes allocated when memory allocation
failure occurred, plus A->ncol. If lwork = -1, it
is the estimated amount of space needed, plus
A->ncol.
SEE ALSO
SuperMatrix
set_default_options
StatInit
StatFree
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 gstrf(3P)