PaStiX Handbook  6.3.2
Solve kernels

Functions

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 (const args_solve_t *enums, SolverMatrix *datacode, const SolverCblk *cblk, pastix_rhs_t b)
 Apply a forward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_ctrsmsp_backward (const args_solve_t *enums, SolverMatrix *datacode, SolverCblk *cblk, pastix_rhs_t b)
 Apply a backward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_cdiag (const SolverCblk *cblk, const void *dataA, 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_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 (const args_solve_t *enums, SolverMatrix *datacode, const SolverCblk *cblk, pastix_rhs_t b)
 Apply a forward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_strsmsp_backward (const args_solve_t *enums, SolverMatrix *datacode, SolverCblk *cblk, pastix_rhs_t b)
 Apply a backward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_sdiag (const SolverCblk *cblk, const void *dataA, 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 (const args_solve_t *enums, SolverMatrix *datacode, const SolverCblk *cblk, pastix_rhs_t b)
 Apply a forward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_dtrsmsp_backward (const args_solve_t *enums, SolverMatrix *datacode, SolverCblk *cblk, pastix_rhs_t b)
 Apply a backward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_ddiag (const SolverCblk *cblk, const void *dataA, 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_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 (const args_solve_t *enums, SolverMatrix *datacode, const SolverCblk *cblk, pastix_rhs_t b)
 Apply a forward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_ztrsmsp_backward (const args_solve_t *enums, SolverMatrix *datacode, SolverCblk *cblk, pastix_rhs_t b)
 Apply a backward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_zdiag (const SolverCblk *cblk, const void *dataA, 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_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]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure that corresponds to the A and B matrix.
[in]nrhsThe number of right hand side.
[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 76 of file solve_ctrsmsp.c.

References cblk_colnbr(), solver_cblk_s::cblktype, pastix_int_t, pastix_lrblock_s::rk, solver_cblk_s::stride, and pastix_lrblock_s::u.

◆ 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]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]ldcThe leading dimension of C.

Definition at line 160 of file solve_ctrsmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fcolnum, solver_blok_s::frownum, pastix_int_t, PastixLeft, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ solve_cblk_ctrsmsp_forward()

void solve_cblk_ctrsmsp_forward ( const args_solve_t enums,
SolverMatrix datacode,
const SolverCblk cblk,
pastix_rhs_t  rhsb 
)

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

Parameters
[in]enumsEnums needed for the solve.
[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,out]rhsbThe pointer to the rhs data structure that holds the vectors of the right hand side.

Definition at line 302 of file solve_ctrsmsp.c.

References solver_cblk_s::cblktype, kernel_trace_start(), pastix_int_t, PastixConjTrans, PastixKernelTRSMForw, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_ctrsmsp_backward()

void solve_cblk_ctrsmsp_backward ( const args_solve_t enums,
SolverMatrix datacode,
SolverCblk cblk,
pastix_rhs_t  rhsb 
)

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

Parameters
[in]enumsEnums needed for the solve.
[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,out]rhsbThe pointer to the rhs data structure that holds the vectors of the right hand side.

Definition at line 468 of file solve_ctrsmsp.c.

References solver_cblk_s::cblktype, kernel_trace_start(), pastix_int_t, PastixConjTrans, PastixKernelTRSMBack, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_cdiag()

void solve_cblk_cdiag ( const SolverCblk cblk,
const void *  dataA,
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 662 of file solve_ctrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.

◆ 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]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure that corresponds to the A and B matrix.
[in]nrhsThe number of right hand side.
[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 76 of file solve_strsmsp.c.

References cblk_colnbr(), solver_cblk_s::cblktype, pastix_int_t, pastix_lrblock_s::rk, solver_cblk_s::stride, and pastix_lrblock_s::u.

◆ 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]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]ldcThe leading dimension of C.

Definition at line 160 of file solve_strsmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fcolnum, solver_blok_s::frownum, pastix_int_t, PastixLeft, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ solve_cblk_strsmsp_forward()

void solve_cblk_strsmsp_forward ( const args_solve_t enums,
SolverMatrix datacode,
const SolverCblk cblk,
pastix_rhs_t  rhsb 
)

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

Parameters
[in]enumsEnums needed for the solve.
[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,out]rhsbThe pointer to the rhs data structure that holds the vectors of the right hand side.

Definition at line 302 of file solve_strsmsp.c.

References solver_cblk_s::cblktype, kernel_trace_start(), pastix_int_t, PastixKernelTRSMForw, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_strsmsp_backward()

void solve_cblk_strsmsp_backward ( const args_solve_t enums,
SolverMatrix datacode,
SolverCblk cblk,
pastix_rhs_t  rhsb 
)

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

Parameters
[in]enumsEnums needed for the solve.
[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,out]rhsbThe pointer to the rhs data structure that holds the vectors of the right hand side.

Definition at line 468 of file solve_strsmsp.c.

References solver_cblk_s::cblktype, kernel_trace_start(), pastix_int_t, PastixKernelTRSMBack, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_sdiag()

void solve_cblk_sdiag ( const SolverCblk cblk,
const void *  dataA,
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 662 of file solve_strsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.

◆ 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]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure that corresponds to the A and B matrix.
[in]nrhsThe number of right hand side.
[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 76 of file solve_dtrsmsp.c.

References cblk_colnbr(), solver_cblk_s::cblktype, pastix_int_t, pastix_lrblock_s::rk, solver_cblk_s::stride, and pastix_lrblock_s::u.

◆ 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]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]ldcThe leading dimension of C.

Definition at line 160 of file solve_dtrsmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fcolnum, solver_blok_s::frownum, pastix_int_t, PastixLeft, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ solve_cblk_dtrsmsp_forward()

void solve_cblk_dtrsmsp_forward ( const args_solve_t enums,
SolverMatrix datacode,
const SolverCblk cblk,
pastix_rhs_t  rhsb 
)

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

Parameters
[in]enumsEnums needed for the solve.
[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,out]rhsbThe pointer to the rhs data structure that holds the vectors of the right hand side.

Definition at line 302 of file solve_dtrsmsp.c.

References solver_cblk_s::cblktype, kernel_trace_start(), pastix_int_t, PastixKernelTRSMForw, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_dtrsmsp_backward()

void solve_cblk_dtrsmsp_backward ( const args_solve_t enums,
SolverMatrix datacode,
SolverCblk cblk,
pastix_rhs_t  rhsb 
)

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

Parameters
[in]enumsEnums needed for the solve.
[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,out]rhsbThe pointer to the rhs data structure that holds the vectors of the right hand side.

Definition at line 468 of file solve_dtrsmsp.c.

References solver_cblk_s::cblktype, kernel_trace_start(), pastix_int_t, PastixKernelTRSMBack, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_ddiag()

void solve_cblk_ddiag ( const SolverCblk cblk,
const void *  dataA,
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 662 of file solve_dtrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.

◆ 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]diagSpecify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure that corresponds to the A and B matrix.
[in]nrhsThe number of right hand side.
[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 76 of file solve_ztrsmsp.c.

References cblk_colnbr(), solver_cblk_s::cblktype, pastix_int_t, pastix_lrblock_s::rk, solver_cblk_s::stride, and pastix_lrblock_s::u.

◆ 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]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]ldcThe leading dimension of C.

Definition at line 160 of file solve_ztrsmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fcolnum, solver_blok_s::frownum, pastix_int_t, PastixLeft, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ solve_cblk_ztrsmsp_forward()

void solve_cblk_ztrsmsp_forward ( const args_solve_t enums,
SolverMatrix datacode,
const SolverCblk cblk,
pastix_rhs_t  rhsb 
)

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

Parameters
[in]enumsEnums needed for the solve.
[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,out]rhsbThe pointer to the rhs data structure that holds the vectors of the right hand side.

Definition at line 302 of file solve_ztrsmsp.c.

References solver_cblk_s::cblktype, kernel_trace_start(), pastix_int_t, PastixConjTrans, PastixKernelTRSMForw, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_ztrsmsp_backward()

void solve_cblk_ztrsmsp_backward ( const args_solve_t enums,
SolverMatrix datacode,
SolverCblk cblk,
pastix_rhs_t  rhsb 
)

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

Parameters
[in]enumsEnums needed for the solve.
[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,out]rhsbThe pointer to the rhs data structure that holds the vectors of the right hand side.

Definition at line 468 of file solve_ztrsmsp.c.

References solver_cblk_s::cblktype, kernel_trace_start(), pastix_int_t, PastixConjTrans, PastixKernelTRSMBack, PastixLCoef, PastixLeft, PastixLower, PastixNoTrans, PastixRight, PastixTrans, PastixUCoef, and PastixUpper.

◆ solve_cblk_zdiag()

void solve_cblk_zdiag ( const SolverCblk cblk,
const void *  dataA,
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 662 of file solve_ztrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.