Solves a system of distributed linear equations A*X = B with a general N-by-N matrix A using the LU factors computed previously.
More...
|
void | dreadMM_dist_intoL_CSR (FILE *fp, int_t *m, int_t *n, int_t *nonz, double **nzval, int_t **colind, int_t **rowptr) |
|
int_t | pdReDistribute_B_to_X (double *B, int_t m_loc, int nrhs, int_t ldb, int_t fst_row, int_t *ilsum, double *x, dScalePermstruct_t *ScalePermstruct, Glu_persist_t *Glu_persist, gridinfo_t *grid, dSOLVEstruct_t *SOLVEstruct) |
|
int_t | pdReDistribute_X_to_B (int_t n, double *B, int_t m_loc, int_t ldb, int_t fst_row, int_t nrhs, double *x, int_t *ilsum, dScalePermstruct_t *ScalePermstruct, Glu_persist_t *Glu_persist, gridinfo_t *grid, dSOLVEstruct_t *SOLVEstruct) |
|
void | pdCompute_Diag_Inv (int_t n, dLUstruct_t *LUstruct, gridinfo_t *grid, SuperLUStat_t *stat, int *info) |
|
void | pdgstrs (int_t n, dLUstruct_t *LUstruct, dScalePermstruct_t *ScalePermstruct, gridinfo_t *grid, double *B, int_t m_loc, int_t fst_row, int_t ldb, int nrhs, dSOLVEstruct_t *SOLVEstruct, SuperLUStat_t *stat, int *info) |
|
Solves a system of distributed linear equations A*X = B with a general N-by-N matrix A using the LU factors computed previously.
Copyright (c) 2003, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from U.S. Dept. of Energy)
All rights reserved.
The source code is distributed under BSD license, see the file License.txt at the top-level directory.
-- Distributed SuperLU routine (version 6.1) --
Lawrence Berkeley National Lab, Univ. of California Berkeley.
October 15, 2008
September 18, 2018 version 6.0
February 8, 2019 version 6.1.1
void pdgstrs |
( |
int_t |
n, |
|
|
dLUstruct_t * |
LUstruct, |
|
|
dScalePermstruct_t * |
ScalePermstruct, |
|
|
gridinfo_t * |
grid, |
|
|
double * |
B, |
|
|
int_t |
m_loc, |
|
|
int_t |
fst_row, |
|
|
int_t |
ldb, |
|
|
int |
nrhs, |
|
|
dSOLVEstruct_t * |
SOLVEstruct, |
|
|
SuperLUStat_t * |
stat, |
|
|
int * |
info |
|
) |
| |
Purpose
=======
PDGSTRS solves a system of distributed linear equations
A*X = B with a general N-by-N matrix A using the LU factorization
computed by PDGSTRF.
If the equilibration, and row and column permutations were performed,
the LU factorization was performed for A1 where
A1 = Pc*Pr*diag(R)*A*diag(C)*Pc^T = L*U
and the linear system solved is
A1 * Y = Pc*Pr*B1, where B was overwritten by B1 = diag(R)*B, and
the permutation to B1 by Pc*Pr is applied internally in this routine.
Arguments
=========
n (input) int (global)
The order of the system of linear equations.
LUstruct (input) dLUstruct_t*
The distributed data structures storing L and U factors.
The L and U factors are obtained from PDGSTRF for
the possibly scaled and permuted matrix A.
See superlu_ddefs.h for the definition of 'dLUstruct_t'.
A may be scaled and permuted into A1, so that
A1 = Pc*Pr*diag(R)*A*diag(C)*Pc^T = L*U
grid (input) gridinfo_t*
The 2D process mesh. It contains the MPI communicator, the number
of process rows (NPROW), the number of process columns (NPCOL),
and my process rank. It is an input argument to all the
parallel routines.
Grid can be initialized by subroutine SUPERLU_GRIDINIT.
See superlu_defs.h for the definition of 'gridinfo_t'.
B (input/output) double*
On entry, the distributed right-hand side matrix of the possibly
equilibrated system. That is, B may be overwritten by diag(R)*B.
On exit, the distributed solution matrix Y of the possibly
equilibrated system if info = 0, where Y = Pc*diag(C)^(-1)*X,
and X is the solution of the original system.
m_loc (input) int (local)
The local row dimension of matrix B.
fst_row (input) int (global)
The row number of B's first row in the global matrix.
ldb (input) int (local)
The leading dimension of matrix B.
nrhs (input) int (global)
Number of right-hand sides.
SOLVEstruct (input) dSOLVEstruct_t* (global)
Contains the information for the communication during the
solution phase.
stat (output) SuperLUStat_t*
Record the statistics about the triangular solves.
See util.h for the definition of 'SuperLUStat_t'.
info (output) int*
= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value