PaStiX Handbook  6.2.1

Functions

void solve_blok_strsm (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, int nrhs, const void *dataA, float *b, int ldb)
 Apply a solve trsm update related to a diagonal block of the matrix A. More...
 
void solve_blok_sgemm (pastix_side_t side, pastix_trans_t trans, pastix_int_t nrhs, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcbk, const void *dataA, const float *B, pastix_int_t ldb, float *C, pastix_int_t ldc)
 Apply a solve gemm update related to a single block of the matrix A. More...
 
void solve_cblk_strsmsp_forward (pastix_solv_mode_t mode, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverMatrix *datacode, const SolverCblk *cblk, int nrhs, float *b, int ldb)
 Apply a forward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_strsmsp_backward (pastix_solv_mode_t mode, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverMatrix *datacode, SolverCblk *cblk, int nrhs, float *b, int ldb)
 Apply a backward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_sdiag (const SolverCblk *cblk, int nrhs, float *b, int ldb, float *work)
 Apply the diagonal solve related to one cblk to all the right hand side. More...
 
void solve_blok_dtrsm (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, int nrhs, const void *dataA, double *b, int ldb)
 Apply a solve trsm update related to a diagonal block of the matrix A. More...
 
void solve_blok_dgemm (pastix_side_t side, pastix_trans_t trans, pastix_int_t nrhs, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcbk, const void *dataA, const double *B, pastix_int_t ldb, double *C, pastix_int_t ldc)
 Apply a solve gemm update related to a single block of the matrix A. More...
 
void solve_cblk_dtrsmsp_forward (pastix_solv_mode_t mode, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverMatrix *datacode, const SolverCblk *cblk, int nrhs, double *b, int ldb)
 Apply a forward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_dtrsmsp_backward (pastix_solv_mode_t mode, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverMatrix *datacode, SolverCblk *cblk, int nrhs, double *b, int ldb)
 Apply a backward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_ddiag (const SolverCblk *cblk, int nrhs, double *b, int ldb, double *work)
 Apply the diagonal solve related to one cblk to all the right hand side. More...
 
void solve_blok_ctrsm (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, int nrhs, const void *dataA, pastix_complex32_t *b, int ldb)
 Apply a solve trsm update related to a diagonal block of the matrix A. More...
 
void solve_blok_cgemm (pastix_side_t side, pastix_trans_t trans, pastix_int_t nrhs, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcbk, const void *dataA, const pastix_complex32_t *B, pastix_int_t ldb, pastix_complex32_t *C, pastix_int_t ldc)
 Apply a solve gemm update related to a single block of the matrix A. More...
 
void solve_cblk_ctrsmsp_forward (pastix_solv_mode_t mode, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverMatrix *datacode, const SolverCblk *cblk, int nrhs, pastix_complex32_t *b, int ldb)
 Apply a forward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_ctrsmsp_backward (pastix_solv_mode_t mode, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverMatrix *datacode, SolverCblk *cblk, int nrhs, pastix_complex32_t *b, int ldb)
 Apply a backward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_cdiag (const SolverCblk *cblk, int nrhs, pastix_complex32_t *b, int ldb, pastix_complex32_t *work)
 Apply the diagonal solve related to one cblk to all the right hand side. More...
 
void solve_blok_ztrsm (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, int nrhs, const void *dataA, pastix_complex64_t *b, int ldb)
 Apply a solve trsm update related to a diagonal block of the matrix A. More...
 
void solve_blok_zgemm (pastix_side_t side, pastix_trans_t trans, pastix_int_t nrhs, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcbk, const void *dataA, const pastix_complex64_t *B, pastix_int_t ldb, pastix_complex64_t *C, pastix_int_t ldc)
 Apply a solve gemm update related to a single block of the matrix A. More...
 
void solve_cblk_ztrsmsp_forward (pastix_solv_mode_t mode, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverMatrix *datacode, const SolverCblk *cblk, int nrhs, pastix_complex64_t *b, int ldb)
 Apply a forward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_ztrsmsp_backward (pastix_solv_mode_t mode, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverMatrix *datacode, SolverCblk *cblk, int nrhs, pastix_complex64_t *b, int ldb)
 Apply a backward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_zdiag (const SolverCblk *cblk, int nrhs, pastix_complex64_t *b, int ldb, pastix_complex64_t *work)
 Apply the diagonal solve related to one cblk to all the right hand side. More...
 

Detailed Description

This module contains all the kernel working on the solver matrix structure for the solve step.

Function Documentation

◆ solve_blok_strsm()

void solve_blok_strsm ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
int  nrhs,
const void *  dataA,
float *  b,
int  ldb 
)

Apply a solve trsm update related to a diagonal block of the matrix A.

Parameters
[in]sideSpecify the side parameter of the TRSM.
[in]uploSpecify the uplo parameter of the TRSM.
[in]transSpecify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixTrans.
[in]nrhsThe number of right hand side.
[in]cblkThe cblk structure that corresponds to the A and B matrix.
[in]dataAThe pointer to the correct representation of the data of A.
  • coeftab if the block is in full rank. Must be of size cblk.stride -by- cblk.width.
  • pastix_lr_block if the block is compressed.
[in,out]BThe pointer to the matrix B, that is a portion of the right hand side to solve.
[in]ldbThe leading dimension of B.

Definition at line 70 of file solve_strsmsp.c.

References cblk_colnbr(), and solver_cblk_s::cblktype.

◆ solve_blok_sgemm()

void solve_blok_sgemm ( pastix_side_t  side,
pastix_trans_t  trans,
pastix_int_t  nrhs,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcbk,
const void *  dataA,
const float *  B,
pastix_int_t  ldb,
float *  C,
pastix_int_t  ldc 
)

Apply a solve gemm update related to a single block of the matrix A.

Parameters
[in]sideSpecify whether the blok parameter belongs to cblk (PastixLeft), or to fcbk (PastixRight).
[in]transSpecify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixTrans.
[in]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]nrhsThe number of right hand side.
[in]cblkThe cblk structure that corresponds to the B matrix.
[in]blokThe blok structure that corresponds to the A matrix, and that belongs either to cblk or fcbk depending on the side parameter.
[in,out]fcbkThe cblk structure that corresponds to the C matrix.
[in]dataAThe pointer to the correct representation of the data of A.
  • coeftab if the block is in full rank. Must be of size cblk.stride -by- cblk.width.
  • pastix_lr_block if the block is compressed.
[in]BThe pointer to the matrix B, that is a portion of the right hand side.
[in]ldbThe leading dimension of B.
[in,out]CThe pointer to the matrix C, that is the updated portion of the right hand side.
[in]ldbThe leading dimension of C.

Definition at line 158 of file solve_strsmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fcolnum, solver_blok_s::frownum, and PastixLeft.

◆ solve_cblk_strsmsp_forward()

void solve_cblk_strsmsp_forward ( pastix_solv_mode_t  mode,
pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverMatrix *  datacode,
const SolverCblk cblk,
int  nrhs,
float *  b,
int  ldb 
)

Apply a forward solve related to one cblk to all the right hand side.

Parameters
[in]modeSpecify whether the schur complement and interface are applied to the right-hand-side. It has to be either PastixSolvModeLocal, PastixSolvModeInterface or PastixSolvModeSchur.
[in]sideSpecify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixTrans.
[in]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]datacodeThe SolverMatrix structure from PaStiX.
[in]cblkThe cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]nrhsThe number of right hand side.
[in,out]bThe pointer to vectors of the right hand side.
[in]ldbThe leading dimension of b.

Definition at line 323 of file solve_strsmsp.c.

References solver_cblk_s::cblktype, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_strsmsp_backward()

void solve_cblk_strsmsp_backward ( pastix_solv_mode_t  mode,
pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverMatrix *  datacode,
SolverCblk cblk,
int  nrhs,
float *  b,
int  ldb 
)

Apply a backward solve related to one cblk to all the right hand side.

Parameters
[in]modeSpecify whether the schur complement and interface are applied to the right-hand-side. It has to be either PastixSolvModeLocal, PastixSolvModeInterface or PastixSolvModeSchur.
[in]sideSpecify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixTrans.
[in]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]datacodeThe SolverMatrix structure from PaStiX.
[in]cblkThe cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]nrhsThe number of right hand side.
[in,out]bThe pointer to vectors of the right hand side
[in]ldbThe leading dimension of b

Definition at line 471 of file solve_strsmsp.c.

References solver_cblk_s::cblktype, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_sdiag()

void solve_cblk_sdiag ( const SolverCblk cblk,
int  nrhs,
float *  b,
int  ldb,
float *  work 
)

Apply the diagonal solve related to one cblk to all the right hand side.

Parameters
[in]cblkThe cblk structure to which diagonal block belongs to.
[in]nrhsThe number of right hand side
[in,out]bThe pointer to vectors of the right hand side
[in]ldbThe leading dimension of b
[in,out]workWorkspace to temporarily store the diagonal when multiple RHS are involved. Might be set to NULL for internal allocation on need.

Definition at line 616 of file solve_strsmsp.c.

References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.

◆ solve_blok_dtrsm()

void solve_blok_dtrsm ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
int  nrhs,
const void *  dataA,
double *  b,
int  ldb 
)

Apply a solve trsm update related to a diagonal block of the matrix A.

Parameters
[in]sideSpecify the side parameter of the TRSM.
[in]uploSpecify the uplo parameter of the TRSM.
[in]transSpecify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixTrans.
[in]nrhsThe number of right hand side.
[in]cblkThe cblk structure that corresponds to the A and B matrix.
[in]dataAThe pointer to the correct representation of the data of A.
  • coeftab if the block is in full rank. Must be of size cblk.stride -by- cblk.width.
  • pastix_lr_block if the block is compressed.
[in,out]BThe pointer to the matrix B, that is a portion of the right hand side to solve.
[in]ldbThe leading dimension of B.

Definition at line 70 of file solve_dtrsmsp.c.

References cblk_colnbr(), and solver_cblk_s::cblktype.

◆ solve_blok_dgemm()

void solve_blok_dgemm ( pastix_side_t  side,
pastix_trans_t  trans,
pastix_int_t  nrhs,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcbk,
const void *  dataA,
const double *  B,
pastix_int_t  ldb,
double *  C,
pastix_int_t  ldc 
)

Apply a solve gemm update related to a single block of the matrix A.

Parameters
[in]sideSpecify whether the blok parameter belongs to cblk (PastixLeft), or to fcbk (PastixRight).
[in]transSpecify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixTrans.
[in]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]nrhsThe number of right hand side.
[in]cblkThe cblk structure that corresponds to the B matrix.
[in]blokThe blok structure that corresponds to the A matrix, and that belongs either to cblk or fcbk depending on the side parameter.
[in,out]fcbkThe cblk structure that corresponds to the C matrix.
[in]dataAThe pointer to the correct representation of the data of A.
  • coeftab if the block is in full rank. Must be of size cblk.stride -by- cblk.width.
  • pastix_lr_block if the block is compressed.
[in]BThe pointer to the matrix B, that is a portion of the right hand side.
[in]ldbThe leading dimension of B.
[in,out]CThe pointer to the matrix C, that is the updated portion of the right hand side.
[in]ldbThe leading dimension of C.

Definition at line 158 of file solve_dtrsmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fcolnum, solver_blok_s::frownum, and PastixLeft.

◆ solve_cblk_dtrsmsp_forward()

void solve_cblk_dtrsmsp_forward ( pastix_solv_mode_t  mode,
pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverMatrix *  datacode,
const SolverCblk cblk,
int  nrhs,
double *  b,
int  ldb 
)

Apply a forward solve related to one cblk to all the right hand side.

Parameters
[in]modeSpecify whether the schur complement and interface are applied to the right-hand-side. It has to be either PastixSolvModeLocal, PastixSolvModeInterface or PastixSolvModeSchur.
[in]sideSpecify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixTrans.
[in]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]datacodeThe SolverMatrix structure from PaStiX.
[in]cblkThe cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]nrhsThe number of right hand side.
[in,out]bThe pointer to vectors of the right hand side.
[in]ldbThe leading dimension of b.

Definition at line 323 of file solve_dtrsmsp.c.

References solver_cblk_s::cblktype, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_dtrsmsp_backward()

void solve_cblk_dtrsmsp_backward ( pastix_solv_mode_t  mode,
pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverMatrix *  datacode,
SolverCblk cblk,
int  nrhs,
double *  b,
int  ldb 
)

Apply a backward solve related to one cblk to all the right hand side.

Parameters
[in]modeSpecify whether the schur complement and interface are applied to the right-hand-side. It has to be either PastixSolvModeLocal, PastixSolvModeInterface or PastixSolvModeSchur.
[in]sideSpecify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixTrans.
[in]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]datacodeThe SolverMatrix structure from PaStiX.
[in]cblkThe cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]nrhsThe number of right hand side.
[in,out]bThe pointer to vectors of the right hand side
[in]ldbThe leading dimension of b

Definition at line 471 of file solve_dtrsmsp.c.

References solver_cblk_s::cblktype, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_ddiag()

void solve_cblk_ddiag ( const SolverCblk cblk,
int  nrhs,
double *  b,
int  ldb,
double *  work 
)

Apply the diagonal solve related to one cblk to all the right hand side.

Parameters
[in]cblkThe cblk structure to which diagonal block belongs to.
[in]nrhsThe number of right hand side
[in,out]bThe pointer to vectors of the right hand side
[in]ldbThe leading dimension of b
[in,out]workWorkspace to temporarily store the diagonal when multiple RHS are involved. Might be set to NULL for internal allocation on need.

Definition at line 616 of file solve_dtrsmsp.c.

References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.

◆ solve_blok_ctrsm()

void solve_blok_ctrsm ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
int  nrhs,
const void *  dataA,
pastix_complex32_t *  b,
int  ldb 
)

Apply a solve trsm update related to a diagonal block of the matrix A.

Parameters
[in]sideSpecify the side parameter of the TRSM.
[in]uploSpecify the uplo parameter of the TRSM.
[in]transSpecify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixConjTrans.
[in]nrhsThe number of right hand side.
[in]cblkThe cblk structure that corresponds to the A and B matrix.
[in]dataAThe pointer to the correct representation of the data of A.
  • coeftab if the block is in full rank. Must be of size cblk.stride -by- cblk.width.
  • pastix_lr_block if the block is compressed.
[in,out]BThe pointer to the matrix B, that is a portion of the right hand side to solve.
[in]ldbThe leading dimension of B.

Definition at line 70 of file solve_ctrsmsp.c.

References cblk_colnbr(), and solver_cblk_s::cblktype.

◆ solve_blok_cgemm()

void solve_blok_cgemm ( pastix_side_t  side,
pastix_trans_t  trans,
pastix_int_t  nrhs,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcbk,
const void *  dataA,
const pastix_complex32_t *  B,
pastix_int_t  ldb,
pastix_complex32_t *  C,
pastix_int_t  ldc 
)

Apply a solve gemm update related to a single block of the matrix A.

Parameters
[in]sideSpecify whether the blok parameter belongs to cblk (PastixLeft), or to fcbk (PastixRight).
[in]transSpecify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixConjTrans.
[in]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]nrhsThe number of right hand side.
[in]cblkThe cblk structure that corresponds to the B matrix.
[in]blokThe blok structure that corresponds to the A matrix, and that belongs either to cblk or fcbk depending on the side parameter.
[in,out]fcbkThe cblk structure that corresponds to the C matrix.
[in]dataAThe pointer to the correct representation of the data of A.
  • coeftab if the block is in full rank. Must be of size cblk.stride -by- cblk.width.
  • pastix_lr_block if the block is compressed.
[in]BThe pointer to the matrix B, that is a portion of the right hand side.
[in]ldbThe leading dimension of B.
[in,out]CThe pointer to the matrix C, that is the updated portion of the right hand side.
[in]ldbThe leading dimension of C.

Definition at line 158 of file solve_ctrsmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fcolnum, solver_blok_s::frownum, and PastixLeft.

◆ solve_cblk_ctrsmsp_forward()

void solve_cblk_ctrsmsp_forward ( pastix_solv_mode_t  mode,
pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverMatrix *  datacode,
const SolverCblk cblk,
int  nrhs,
pastix_complex32_t *  b,
int  ldb 
)

Apply a forward solve related to one cblk to all the right hand side.

Parameters
[in]modeSpecify whether the schur complement and interface are applied to the right-hand-side. It has to be either PastixSolvModeLocal, PastixSolvModeInterface or PastixSolvModeSchur.
[in]sideSpecify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixConjTrans.
[in]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]datacodeThe SolverMatrix structure from PaStiX.
[in]cblkThe cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]nrhsThe number of right hand side.
[in,out]bThe pointer to vectors of the right hand side.
[in]ldbThe leading dimension of b.

Definition at line 323 of file solve_ctrsmsp.c.

References solver_cblk_s::cblktype, PastixConjTrans, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_ctrsmsp_backward()

void solve_cblk_ctrsmsp_backward ( pastix_solv_mode_t  mode,
pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverMatrix *  datacode,
SolverCblk cblk,
int  nrhs,
pastix_complex32_t *  b,
int  ldb 
)

Apply a backward solve related to one cblk to all the right hand side.

Parameters
[in]modeSpecify whether the schur complement and interface are applied to the right-hand-side. It has to be either PastixSolvModeLocal, PastixSolvModeInterface or PastixSolvModeSchur.
[in]sideSpecify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixConjTrans.
[in]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]datacodeThe SolverMatrix structure from PaStiX.
[in]cblkThe cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]nrhsThe number of right hand side.
[in,out]bThe pointer to vectors of the right hand side
[in]ldbThe leading dimension of b

Definition at line 471 of file solve_ctrsmsp.c.

References solver_cblk_s::cblktype, PastixConjTrans, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_cdiag()

void solve_cblk_cdiag ( const SolverCblk cblk,
int  nrhs,
pastix_complex32_t *  b,
int  ldb,
pastix_complex32_t *  work 
)

Apply the diagonal solve related to one cblk to all the right hand side.

Parameters
[in]cblkThe cblk structure to which diagonal block belongs to.
[in]nrhsThe number of right hand side
[in,out]bThe pointer to vectors of the right hand side
[in]ldbThe leading dimension of b
[in,out]workWorkspace to temporarily store the diagonal when multiple RHS are involved. Might be set to NULL for internal allocation on need.

Definition at line 616 of file solve_ctrsmsp.c.

References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.

◆ solve_blok_ztrsm()

void solve_blok_ztrsm ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
int  nrhs,
const void *  dataA,
pastix_complex64_t *  b,
int  ldb 
)

Apply a solve trsm update related to a diagonal block of the matrix A.

Parameters
[in]sideSpecify the side parameter of the TRSM.
[in]uploSpecify the uplo parameter of the TRSM.
[in]transSpecify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixConjTrans.
[in]nrhsThe number of right hand side.
[in]cblkThe cblk structure that corresponds to the A and B matrix.
[in]dataAThe pointer to the correct representation of the data of A.
  • coeftab if the block is in full rank. Must be of size cblk.stride -by- cblk.width.
  • pastix_lr_block if the block is compressed.
[in,out]BThe pointer to the matrix B, that is a portion of the right hand side to solve.
[in]ldbThe leading dimension of B.

Definition at line 70 of file solve_ztrsmsp.c.

References cblk_colnbr(), and solver_cblk_s::cblktype.

◆ solve_blok_zgemm()

void solve_blok_zgemm ( pastix_side_t  side,
pastix_trans_t  trans,
pastix_int_t  nrhs,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcbk,
const void *  dataA,
const pastix_complex64_t *  B,
pastix_int_t  ldb,
pastix_complex64_t *  C,
pastix_int_t  ldc 
)

Apply a solve gemm update related to a single block of the matrix A.

Parameters
[in]sideSpecify whether the blok parameter belongs to cblk (PastixLeft), or to fcbk (PastixRight).
[in]transSpecify the transposition used for the matrix A in the computation. It has to be either PastixTrans or PastixConjTrans.
[in]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]nrhsThe number of right hand side.
[in]cblkThe cblk structure that corresponds to the B matrix.
[in]blokThe blok structure that corresponds to the A matrix, and that belongs either to cblk or fcbk depending on the side parameter.
[in,out]fcbkThe cblk structure that corresponds to the C matrix.
[in]dataAThe pointer to the correct representation of the data of A.
  • coeftab if the block is in full rank. Must be of size cblk.stride -by- cblk.width.
  • pastix_lr_block if the block is compressed.
[in]BThe pointer to the matrix B, that is a portion of the right hand side.
[in]ldbThe leading dimension of B.
[in,out]CThe pointer to the matrix C, that is the updated portion of the right hand side.
[in]ldbThe leading dimension of C.

Definition at line 158 of file solve_ztrsmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fcolnum, solver_blok_s::frownum, and PastixLeft.

◆ solve_cblk_ztrsmsp_forward()

void solve_cblk_ztrsmsp_forward ( pastix_solv_mode_t  mode,
pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverMatrix *  datacode,
const SolverCblk cblk,
int  nrhs,
pastix_complex64_t *  b,
int  ldb 
)

Apply a forward solve related to one cblk to all the right hand side.

Parameters
[in]modeSpecify whether the schur complement and interface are applied to the right-hand-side. It has to be either PastixSolvModeLocal, PastixSolvModeInterface or PastixSolvModeSchur.
[in]sideSpecify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixConjTrans.
[in]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]datacodeThe SolverMatrix structure from PaStiX.
[in]cblkThe cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]nrhsThe number of right hand side.
[in,out]bThe pointer to vectors of the right hand side.
[in]ldbThe leading dimension of b.

Definition at line 323 of file solve_ztrsmsp.c.

References solver_cblk_s::cblktype, PastixConjTrans, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_ztrsmsp_backward()

void solve_cblk_ztrsmsp_backward ( pastix_solv_mode_t  mode,
pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverMatrix *  datacode,
SolverCblk cblk,
int  nrhs,
pastix_complex64_t *  b,
int  ldb 
)

Apply a backward solve related to one cblk to all the right hand side.

Parameters
[in]modeSpecify whether the schur complement and interface are applied to the right-hand-side. It has to be either PastixSolvModeLocal, PastixSolvModeInterface or PastixSolvModeSchur.
[in]sideSpecify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixConjTrans.
[in]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]datacodeThe SolverMatrix structure from PaStiX.
[in]cblkThe cblk structure to which block belongs to. The A and B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]nrhsThe number of right hand side.
[in,out]bThe pointer to vectors of the right hand side
[in]ldbThe leading dimension of b

Definition at line 471 of file solve_ztrsmsp.c.

References solver_cblk_s::cblktype, PastixConjTrans, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_zdiag()

void solve_cblk_zdiag ( const SolverCblk cblk,
int  nrhs,
pastix_complex64_t *  b,
int  ldb,
pastix_complex64_t *  work 
)

Apply the diagonal solve related to one cblk to all the right hand side.

Parameters
[in]cblkThe cblk structure to which diagonal block belongs to.
[in]nrhsThe number of right hand side
[in,out]bThe pointer to vectors of the right hand side
[in]ldbThe leading dimension of b
[in,out]workWorkspace to temporarily store the diagonal when multiple RHS are involved. Might be set to NULL for internal allocation on need.

Definition at line 616 of file solve_ztrsmsp.c.

References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.