| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> |
| <title>SuperLU: SRC/sgstrf.c File Reference</title> |
| <link href="doxygen.css" rel="stylesheet" type="text/css"> |
| <link href="tabs.css" rel="stylesheet" type="text/css"> |
| </head><body> |
| |
| <div class="navigation" id="top"> |
| <div class="tabs"> |
| <ul> |
| <li><a href="index.html"><span>Main Page</span></a></li> |
| <li><a href="annotated.html"><span>Data Structures</span></a></li> |
| <li class="current"><a href="files.html"><span>Files</span></a></li> |
| </ul> |
| </div> |
| </div> |
| <div class="contents"> |
| <h1>SRC/sgstrf.c File Reference</h1>Computes an LU factorization of a general sparse matrix. <a href="#_details">More...</a> |
| <p> |
| <code>#include "<a class="el" href="slu__sdefs_8h-source.html">slu_sdefs.h</a>"</code><br> |
| <table border="0" cellpadding="0" cellspacing="0"> |
| <tr><td></td></tr> |
| <tr><td colspan="2"><br><h2>Functions</h2></td></tr> |
| <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="sgstrf_8c.html#2428d5d7ef46cf9a08069d9f55901284">sgstrf</a> (<a class="el" href="structsuperlu__options__t.html">superlu_options_t</a> *options, <a class="el" href="structSuperMatrix.html">SuperMatrix</a> *<a class="el" href="ilu__zdrop__row_8c.html#c900805a486cbb8489e3c176ed6e0d8e">A</a>, int relax, int panel_size, int *etree, void *work, int lwork, int *perm_c, int *perm_r, <a class="el" href="structSuperMatrix.html">SuperMatrix</a> *L, <a class="el" href="structSuperMatrix.html">SuperMatrix</a> *U, <a class="el" href="structSuperLUStat__t.html">SuperLUStat_t</a> *stat, int *info)</td></tr> |
| |
| </table> |
| <hr><a name="_details"></a><h2>Detailed Description</h2> |
| <pre> |
| -- SuperLU routine (version 3.0) -- |
| Univ. of California Berkeley, Xerox Palo Alto Research Center, |
| and Lawrence Berkeley National Lab. |
| October 15, 2003</pre><p> |
| <pre> Copyright (c) 1994 by Xerox Corporation. All rights reserved.</pre><p> |
| <pre> THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY |
| EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK.</pre><p> |
| <pre> Permission is hereby granted to use or copy this program for any |
| purpose, provided the above notices are retained on all copies. |
| Permission to modify the code and to distribute modified code is |
| granted, provided the above notices are retained, and a notice that |
| the code was modified is included with the above copyright notice. |
| </pre> <hr><h2>Function Documentation</h2> |
| <a class="anchor" name="2428d5d7ef46cf9a08069d9f55901284"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void sgstrf </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structsuperlu__options__t.html">superlu_options_t</a> * </td> |
| <td class="paramname"> <em>options</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structSuperMatrix.html">SuperMatrix</a> * </td> |
| <td class="paramname"> <em>A</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"> <em>relax</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"> <em>panel_size</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int * </td> |
| <td class="paramname"> <em>etree</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">void * </td> |
| <td class="paramname"> <em>work</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"> <em>lwork</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int * </td> |
| <td class="paramname"> <em>perm_c</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int * </td> |
| <td class="paramname"> <em>perm_r</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structSuperMatrix.html">SuperMatrix</a> * </td> |
| <td class="paramname"> <em>L</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structSuperMatrix.html">SuperMatrix</a> * </td> |
| <td class="paramname"> <em>U</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="structSuperLUStat__t.html">SuperLUStat_t</a> * </td> |
| <td class="paramname"> <em>stat</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int * </td> |
| <td class="paramname"> <em>info</em></td><td> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td><td width="100%"></td> |
| </tr> |
| </table> |
| </div> |
| <div class="memdoc"> |
| |
| <p> |
| <pre> |
| Purpose |
| =======</pre><p> |
| <pre> SGSTRF 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).</pre><p> |
| <pre> See <a class="el" href="supermatrix_8h.html" title="Defines matrix types.">supermatrix.h</a> for the definition of 'SuperMatrix' structure.</pre><p> |
| <pre> Arguments |
| =========</pre><p> |
| <pre> options (input) superlu_options_t* |
| The structure defines the input parameters to control |
| how the LU decomposition will be performed.</pre><p> |
| <pre> A (input) SuperMatrix* |
| Original matrix A, permuted by columns, of dimension |
| (A->nrow, A->ncol). The type of A can be: |
| Stype = SLU_NCP; Dtype = SLU_S; Mtype = SLU_GE.</pre><p> |
| <pre> relax (input) int |
| 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.</pre><p> |
| <pre> panel_size (input) int |
| A panel consists of at most panel_size consecutive columns.</pre><p> |
| <pre> etree (input) int*, dimension (A->ncol) |
| Elimination tree of 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.</pre><p> |
| <pre> work (input/output) void*, size (lwork) (in bytes) |
| User-supplied work space and space for the output data structures. |
| Not referenced if lwork = 0;</pre><p> |
| <pre> lwork (input) int |
| 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 |
| performing the factorization, and returns it in |
| *info; no other side effects.</pre><p> |
| <pre> perm_c (input) int*, dimension (A->ncol) |
| Column permutation vector, 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.</pre><p> |
| <pre> perm_r (input/output) int*, dimension (A->nrow) |
| Row permutation vector which defines the permutation matrix Pr, |
| perm_r[i] = j means row i of A is in position j in Pr*A. |
| If options->Fact = SamePattern_SameRowPerm, the pivoting routine |
| will try to use the input perm_r, unless a certain 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;</pre><p> |
| <pre> L (output) SuperMatrix* |
| The factor L from the factorization Pr*A=L*U; use compressed row |
| subscripts storage for supernodes, i.e., L has type: |
| Stype = SLU_SC, Dtype = SLU_S, Mtype = SLU_TRLU.</pre><p> |
| <pre> U (output) SuperMatrix* |
| The factor U from the factorization Pr*A*Pc=L*U. Use column-wise |
| storage scheme, i.e., U has types: Stype = SLU_NC, |
| Dtype = SLU_S, Mtype = SLU_TRU.</pre><p> |
| <pre> stat (output) SuperLUStat_t* |
| Record the statistics on runtime and floating-point operation count. |
| See <a class="el" href="slu__util_8h.html" title="Utility header file.">slu_util.h</a> for the definition of 'SuperLUStat_t'.</pre><p> |
| <pre> info (output) int* |
| = 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 singular, |
| 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.</pre><p> |
| <pre> ======================================================================</pre><p> |
| <pre> Local Working Arrays: |
| ====================== |
| m = number of rows in the matrix |
| n = number of columns in the matrix</pre><p> |
| <pre> xprune[0:n-1]: xprune[*] points to locations in subscript |
| vector lsub[*]. For column i, xprune[i] denotes the point where |
| structural pruning begins. I.e. only xlsub[i],..,xprune[i]-1 need |
| to be traversed for symbolic factorization.</pre><p> |
| <pre> marker[0:3*m-1]: marker[i] = j means that node i has been |
| reached when working on column j. |
| Storage: relative to original row subscripts |
| NOTE: There are 3 of them: marker/marker1 are used for panel dfs, |
| see <a class="el" href="spanel__dfs_8c.html" title="Peforms a symbolic factorization on a panel of symbols.">spanel_dfs.c</a>; marker2 is used for inner-factorization, |
| see <a class="el" href="scolumn__dfs_8c.html" title="Performs a symbolic factorization.">scolumn_dfs.c</a>.</pre><p> |
| <pre> parent[0:m-1]: parent vector used during dfs |
| Storage: relative to new row subscripts</pre><p> |
| <pre> xplore[0:m-1]: xplore[i] gives the location of the next (dfs) |
| unexplored neighbor of i in lsub[*]</pre><p> |
| <pre> segrep[0:nseg-1]: contains the list of supernodal representatives |
| in topological order of the dfs. A supernode representative is the |
| last column of a supernode. |
| The maximum size of segrep[] is n.</pre><p> |
| <pre> repfnz[0:W*m-1]: for a nonzero segment U[*,j] that ends at a |
| supernodal representative r, repfnz[r] is the location of the first |
| nonzero in this segment. It is also used during the dfs: repfnz[r]>0 |
| indicates the supernode r has been explored. |
| NOTE: There are W of them, each used for one column of a panel.</pre><p> |
| <pre> panel_lsub[0:W*m-1]: temporary for the nonzeros row indices below |
| the panel diagonal. These are filled in during <a class="el" href="slu__sdefs_8h.html#77baf210393e04fa71d4e73b5e60e556">spanel_dfs()</a>, and are |
| used later in the inner LU factorization within the panel. |
| panel_lsub[]/dense[] pair forms the SPA data structure. |
| NOTE: There are W of them.</pre><p> |
| <pre> dense[0:W*m-1]: sparse accumulating (SPA) vector for intermediate values; |
| NOTE: there are W of them.</pre><p> |
| <pre> tempv[0:*]: real temporary used for dense numeric kernels; |
| The size of this array is defined by <a class="el" href="slu__util_8h.html#06193b28f40a4779ae7737711642eb45">NUM_TEMPV()</a> in <a class="el" href="slu__sdefs_8h.html" title="Header file for real operations.">slu_sdefs.h</a>. |
| </pre> |
| </div> |
| </div><p> |
| </div> |
| <hr size="1"><address style="text-align: right;"><small>Generated on Mon Nov 22 10:23:48 2010 for SuperLU by |
| <a href="http://www.doxygen.org/index.html"> |
| <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address> |
| </body> |
| </html> |