PaStiX Handbook  6.2.1
Solve step

This group describes all the routines to solve the system. More...

Modules

 Solve kernels
 

Functions

int pastix_subtask_applyorder (pastix_data_t *pastix_data, pastix_coeftype_t flttype, pastix_dir_t dir, pastix_int_t m, pastix_int_t n, void *b, pastix_int_t ldb)
 Apply a permutation on the right-and-side vector before the solve step. More...
 
int pastix_subtask_trsm (pastix_data_t *pastix_data, pastix_coeftype_t flttype, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, pastix_int_t nrhs, void *b, pastix_int_t ldb)
 Apply a triangular solve on the right-and-side vectors. More...
 
int pastix_subtask_diag (pastix_data_t *pastix_data, pastix_coeftype_t flttype, pastix_int_t nrhs, void *b, pastix_int_t ldb)
 Apply a diagonal operation on the right-and-side vectors. More...
 
int pastix_subtask_solve_adv (pastix_data_t *pastix_data, pastix_trans_t transA, pastix_int_t nrhs, void *b, pastix_int_t ldb)
 Solve the given problem without applying the permutation. More...
 
int pastix_subtask_solve (pastix_data_t *pastix_data, pastix_int_t nrhs, void *b, pastix_int_t ldb)
 Solve the given problem without applying the permutation. More...
 

Detailed Description

This group describes all the routines to solve the system.

Function Documentation

◆ pastix_subtask_applyorder()

int pastix_subtask_applyorder ( pastix_data_t *  pastix_data,
pastix_coeftype_t  flttype,
pastix_dir_t  dir,
pastix_int_t  m,
pastix_int_t  n,
void *  b,
pastix_int_t  ldb 
)

Apply a permutation on the right-and-side vector before the solve step.

This routine is affected by the following parameters: IPARM_VERBOSE, IPARM_FACTORIZATION, IPARM_APPLYPERM_WS.

Parameters
[in,out]pastix_dataThe pastix_data structure that describes the solver instance.
[in]flttypeThis arithmetic of the sparse matrix.
[in]dirForward or backword application of the permutation.
[in]mSize of the right-and-side vectors.
[in]nNumber of right-and-side vectors.
[in,out]bThe right-and-side vectors (can be multiple RHS).
[in]ldbThe leading dimension of the right-and-side vectors.
Return values
PASTIX_SUCCESSon successful exit,
PASTIX_ERR_BADPARAMETERif one parameter is incorrect.

Definition at line 122 of file pastix_task_solve.c.

References PASTIX_ERR_BADPARAMETER.

◆ pastix_subtask_trsm()

int pastix_subtask_trsm ( pastix_data_t *  pastix_data,
pastix_coeftype_t  flttype,
pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
pastix_int_t  nrhs,
void *  b,
pastix_int_t  ldb 
)

Apply a triangular solve on the right-and-side vectors.

This routine is affected by the following parameters: IPARM_VERBOSE, IPARM_FACTORIZATION.

Parameters
[in,out]pastix_dataThe pastix_data structure that describes the solver instance.
[in]flttypeThis arithmetic of the sparse matrix.
[in]sideLeft or right application.
[in]uploUpper or Lower part.
[in]transWith or without transposition (or conjugate transposition).
[in]diagDiagonal terms are unit or not.
[in]nrhsThe number of right-and-side vectors.
[in,out]bThe right-and-side vector (can be multiple RHS). On exit, the solution is stored in place of the right-hand-side vector.
[in]ldbThe leading dimension of the right-and-side vectors.
Return values
PASTIX_SUCCESSon successful exit,
PASTIX_ERR_BADPARAMETERif one parameter is incorrect.

Definition at line 236 of file pastix_task_solve.c.

References PASTIX_ERR_BADPARAMETER.

◆ pastix_subtask_diag()

int pastix_subtask_diag ( pastix_data_t *  pastix_data,
pastix_coeftype_t  flttype,
pastix_int_t  nrhs,
void *  b,
pastix_int_t  ldb 
)

Apply a diagonal operation on the right-and-side vectors.

This routine is affected by the following parameters: IPARM_VERBOSE, IPARM_FACTORIZATION.

Parameters
[in,out]pastix_dataThe pastix_data structure that describes the solver instance.
[in]flttypeThis arithmetic of the sparse matrix.
[in]nrhsThe number of right-and-side vectors.
[in,out]bThe right-and-side vector (can be multiple RHS). On exit, the solution is stored in place of the right-hand-side vector.
[in]ldbThe leading dimension of the right-and-side vectors.
Return values
PASTIX_SUCCESSon successful exit,
PASTIX_ERR_BADPARAMETERif one parameter is incorrect.

Definition at line 369 of file pastix_task_solve.c.

References PASTIX_ERR_BADPARAMETER.

◆ pastix_subtask_solve_adv()

int pastix_subtask_solve_adv ( pastix_data_t *  pastix_data,
pastix_trans_t  transA,
pastix_int_t  nrhs,
void *  b,
pastix_int_t  ldb 
)

Solve the given problem without applying the permutation.

Warning
The input vector is considered already permuted. For a solve step with permutation, see pastix_task_solve()

This routine is affected by the following parameters: IPARM_VERBOSE, IPARM_FACTORIZATION.

Parameters
[in,out]pastix_dataThe pastix_data structure that describes the solver instance.
[in]transAPastixNoTrans: A is not transposed (CSC matrix) PastixTrans: A is transposed (CSR of symmetric/general matrix) PastixConjTrans: A is conjugate transposed (CSR of hermitian matrix)
[in]nrhsThe number of right-and-side vectors.
[in,out]bThe right-and-side vectors (can be multiple RHS). On exit, the solution is stored in place of the right-hand-side vector.
[in]ldbThe leading dimension of the right-and-side vectors.
Return values
PASTIX_SUCCESSon successful exit,
PASTIX_ERR_BADPARAMETERif one parameter is incorrect.

Summary of the operations to perform the full solve if the original A was either transposed or conjugate transposed.

op(A) | Factorization | Step 1 | Step 2 -------—+------------------—+--------—+--------— NoTrans | L U | L y = b | U x = y NoTrans | L L^t | L y = b | L^t x = y NoTrans | L L^h | L y = b | L^h x = y Trans |(L U )^t = U^t L^t | U^t y = b | L^t x = y Trans |(L L^t)^t = L L^t | L y = b | L^t x = y Trans |(L L^h)^t = c(L) L^t | Not handled (c(L)) ConjTrans |(L U )^h = U^h L^h | Not handled (U^h) ConjTrans |(L L^t)^h = c(L) L^h | Not handled (c(L)) ConjTrans |(L L^h)^h = L L^h | L y = b | L^h x = y

Definition at line 470 of file pastix_task_solve.c.

References PASTIX_ERR_BADPARAMETER, and PastixTrans.

Referenced by pastix_subtask_solve().

◆ pastix_subtask_solve()

int pastix_subtask_solve ( pastix_data_t *  pastix_data,
pastix_int_t  nrhs,
void *  b,
pastix_int_t  ldb 
)

Solve the given problem without applying the permutation.

Warning
The input vector is considered already permuted. For a solve step with permutation, see pastix_task_solve()

This routine is affected by the following parameters: IPARM_VERBOSE, IPARM_FACTORIZATION, IPARM_TRANSPOSE_SOLVE.

Parameters
[in,out]pastix_dataThe pastix_data structure that describes the solver instance.
[in]nrhsThe number of right-and-side vectors.
[in,out]bThe right-and-side vectors (can be multiple RHS). On exit, the solution is stored in place of the right-hand-side vector.
[in]ldbThe leading dimension of the right-and-side vectors.
Return values
PASTIX_SUCCESSon successful exit,
PASTIX_ERR_BADPARAMETERif one parameter is incorrect.

Definition at line 641 of file pastix_task_solve.c.

References IPARM_TRANSPOSE_SOLVE, and pastix_subtask_solve_adv().

Referenced by bcsc_cspsv(), bcsc_dspsv(), bcsc_sspsv(), and bcsc_zspsv().