PaStiX Handbook  6.3.2
Internal functions for numerical factorization kernels

Functions

static void core_cgemmsp_1d1d (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex32_t *A, const pastix_complex32_t *B, pastix_complex32_t *C, pastix_complex32_t *work)
 Compute the updates that are generated by the transposition of one single off-diagonal block. More...
 
static void core_cgemmsp_1d2d (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex32_t *A, const pastix_complex32_t *B, pastix_complex32_t *C)
 Compute the updates that are generated by the transposition of one single off-diagonal block. More...
 
static void core_cgemmsp_2d2d (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex32_t *A, const pastix_complex32_t *B, pastix_complex32_t *C)
 Compute the updates that are generated by the transposition of one single off-diagonal block. More...
 
static pastix_fixdbl_t core_cgemmsp_block_frfr (pastix_trans_t trans, pastix_int_t blok_mk, pastix_int_t blok_kn, pastix_int_t blok_mn, const SolverCblk *cblk, SolverCblk *fcblk, const pastix_complex32_t *A, const pastix_complex32_t *B, pastix_complex32_t *C)
 Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks. More...
 
static pastix_fixdbl_t core_cgemmsp_block_frlr (pastix_trans_t transB, pastix_int_t blok_mk, pastix_int_t blok_kn, pastix_int_t blok_mn, const SolverCblk *cblk, SolverCblk *fcblk, const pastix_complex32_t *A, const pastix_complex32_t *B, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks. More...
 
static pastix_fixdbl_t core_cgemmsp_block_lrlr (pastix_trans_t transB, pastix_int_t blok_mk, pastix_int_t blok_kn, pastix_int_t blok_mn, const SolverCblk *cblk, SolverCblk *fcblk, const pastix_lrblock_t *lrA, const pastix_lrblock_t *lrB, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks. More...
 
static pastix_fixdbl_t core_cgemmsp_fulllr (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex32_t *A, const pastix_complex32_t *B, pastix_lrblock_t *lrC, pastix_complex32_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
static pastix_fixdbl_t core_cgemmsp_lr (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_lrblock_t *lrA, const pastix_lrblock_t *lrB, pastix_lrblock_t *lrC, pastix_complex32_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
static pastix_fixdbl_t core_cgemmsp_lrfr (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_lrblock_t *lrA, const pastix_lrblock_t *lrB, pastix_complex32_t *C, pastix_complex32_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
static void core_zgemmsp_1d1d (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex64_t *A, const pastix_complex64_t *B, pastix_complex64_t *C, pastix_complex64_t *work)
 Compute the updates that are generated by the transposition of one single off-diagonal block. More...
 
static void core_zgemmsp_1d2d (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex64_t *A, const pastix_complex64_t *B, pastix_complex64_t *C)
 Compute the updates that are generated by the transposition of one single off-diagonal block. More...
 
static void core_zgemmsp_2d2d (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex64_t *A, const pastix_complex64_t *B, pastix_complex64_t *C)
 Compute the updates that are generated by the transposition of one single off-diagonal block. More...
 
static pastix_fixdbl_t core_zgemmsp_block_frfr (pastix_trans_t trans, pastix_int_t blok_mk, pastix_int_t blok_kn, pastix_int_t blok_mn, const SolverCblk *cblk, SolverCblk *fcblk, const pastix_complex64_t *A, const pastix_complex64_t *B, pastix_complex64_t *C)
 Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks. More...
 
static pastix_fixdbl_t core_zgemmsp_block_frlr (pastix_trans_t transB, pastix_int_t blok_mk, pastix_int_t blok_kn, pastix_int_t blok_mn, const SolverCblk *cblk, SolverCblk *fcblk, const pastix_complex64_t *A, const pastix_complex64_t *B, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks. More...
 
static pastix_fixdbl_t core_zgemmsp_block_lrlr (pastix_trans_t transB, pastix_int_t blok_mk, pastix_int_t blok_kn, pastix_int_t blok_mn, const SolverCblk *cblk, SolverCblk *fcblk, const pastix_lrblock_t *lrA, const pastix_lrblock_t *lrB, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks. More...
 
static pastix_fixdbl_t core_zgemmsp_fulllr (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex64_t *A, const pastix_complex64_t *B, pastix_lrblock_t *lrC, pastix_complex64_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
static pastix_fixdbl_t core_zgemmsp_lr (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_lrblock_t *lrA, const pastix_lrblock_t *lrB, pastix_lrblock_t *lrC, pastix_complex64_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
static pastix_fixdbl_t core_zgemmsp_lrfr (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_lrblock_t *lrA, const pastix_lrblock_t *lrB, pastix_complex64_t *C, pastix_complex64_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
static void core_sgemmsp_1d1d (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const float *A, const float *B, float *C, float *work)
 Compute the updates that are generated by the transposition of one single off-diagonal block. More...
 
static void core_sgemmsp_1d2d (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const float *A, const float *B, float *C)
 Compute the updates that are generated by the transposition of one single off-diagonal block. More...
 
static void core_sgemmsp_2d2d (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const float *A, const float *B, float *C)
 Compute the updates that are generated by the transposition of one single off-diagonal block. More...
 
static pastix_fixdbl_t core_sgemmsp_block_frfr (pastix_trans_t trans, pastix_int_t blok_mk, pastix_int_t blok_kn, pastix_int_t blok_mn, const SolverCblk *cblk, SolverCblk *fcblk, const float *A, const float *B, float *C)
 Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks. More...
 
static pastix_fixdbl_t core_sgemmsp_block_frlr (pastix_trans_t transB, pastix_int_t blok_mk, pastix_int_t blok_kn, pastix_int_t blok_mn, const SolverCblk *cblk, SolverCblk *fcblk, const float *A, const float *B, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks. More...
 
static pastix_fixdbl_t core_sgemmsp_block_lrlr (pastix_trans_t transB, pastix_int_t blok_mk, pastix_int_t blok_kn, pastix_int_t blok_mn, const SolverCblk *cblk, SolverCblk *fcblk, const pastix_lrblock_t *lrA, const pastix_lrblock_t *lrB, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks. More...
 
static pastix_fixdbl_t core_sgemmsp_fulllr (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const float *A, const float *B, pastix_lrblock_t *lrC, float *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
static pastix_fixdbl_t core_sgemmsp_lr (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_lrblock_t *lrA, const pastix_lrblock_t *lrB, pastix_lrblock_t *lrC, float *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
static pastix_fixdbl_t core_sgemmsp_lrfr (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_lrblock_t *lrA, const pastix_lrblock_t *lrB, float *C, float *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
static void core_dgemmsp_1d1d (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const double *A, const double *B, double *C, double *work)
 Compute the updates that are generated by the transposition of one single off-diagonal block. More...
 
static void core_dgemmsp_1d2d (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const double *A, const double *B, double *C)
 Compute the updates that are generated by the transposition of one single off-diagonal block. More...
 
static void core_dgemmsp_2d2d (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const double *A, const double *B, double *C)
 Compute the updates that are generated by the transposition of one single off-diagonal block. More...
 
static pastix_fixdbl_t core_dgemmsp_block_frfr (pastix_trans_t trans, pastix_int_t blok_mk, pastix_int_t blok_kn, pastix_int_t blok_mn, const SolverCblk *cblk, SolverCblk *fcblk, const double *A, const double *B, double *C)
 Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks. More...
 
static pastix_fixdbl_t core_dgemmsp_block_frlr (pastix_trans_t transB, pastix_int_t blok_mk, pastix_int_t blok_kn, pastix_int_t blok_mn, const SolverCblk *cblk, SolverCblk *fcblk, const double *A, const double *B, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks. More...
 
static pastix_fixdbl_t core_dgemmsp_block_lrlr (pastix_trans_t transB, pastix_int_t blok_mk, pastix_int_t blok_kn, pastix_int_t blok_mn, const SolverCblk *cblk, SolverCblk *fcblk, const pastix_lrblock_t *lrA, const pastix_lrblock_t *lrB, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks. More...
 
static pastix_fixdbl_t core_dgemmsp_fulllr (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const double *A, const double *B, pastix_lrblock_t *lrC, double *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
static pastix_fixdbl_t core_dgemmsp_lr (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_lrblock_t *lrA, const pastix_lrblock_t *lrB, pastix_lrblock_t *lrC, double *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
static pastix_fixdbl_t core_dgemmsp_lrfr (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_lrblock_t *lrA, const pastix_lrblock_t *lrB, double *C, double *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
static void core_ctrsmsp_1d (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const pastix_complex32_t *A, pastix_complex32_t *C)
 Apply all the trsm updates on a panel stored in 1D layout. More...
 
static void core_ctrsmsp_2d (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const pastix_complex32_t *A, pastix_complex32_t *C)
 Compute the updates associated to one off-diagonal block between two cblk stored in 2D. More...
 
static pastix_fixdbl_t core_ctrsmsp_lr (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const pastix_lrblock_t *lrA, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Computes the updates associated to one off-diagonal block between two cblk stored in low-rank format. More...
 
static pastix_fixdbl_t core_ctrsmsp_2dsub (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t blok_m, const pastix_complex32_t *A, pastix_complex32_t *C)
 Compute the updates associated to one off-diagonal block between two cblk stored in 2D. More...
 
static pastix_fixdbl_t core_ctrsmsp_lrsub (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t blok_m, const pastix_lrblock_t *lrA, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block between two cblk stored in low-rank format. More...
 
static void core_ztrsmsp_1d (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const pastix_complex64_t *A, pastix_complex64_t *C)
 Apply all the trsm updates on a panel stored in 1D layout. More...
 
static void core_ztrsmsp_2d (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const pastix_complex64_t *A, pastix_complex64_t *C)
 Compute the updates associated to one off-diagonal block between two cblk stored in 2D. More...
 
static pastix_fixdbl_t core_ztrsmsp_lr (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const pastix_lrblock_t *lrA, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Computes the updates associated to one off-diagonal block between two cblk stored in low-rank format. More...
 
static pastix_fixdbl_t core_ztrsmsp_2dsub (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t blok_m, const pastix_complex64_t *A, pastix_complex64_t *C)
 Compute the updates associated to one off-diagonal block between two cblk stored in 2D. More...
 
static pastix_fixdbl_t core_ztrsmsp_lrsub (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t blok_m, const pastix_lrblock_t *lrA, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block between two cblk stored in low-rank format. More...
 
static void core_strsmsp_1d (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const float *A, float *C)
 Apply all the trsm updates on a panel stored in 1D layout. More...
 
static void core_strsmsp_2d (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const float *A, float *C)
 Compute the updates associated to one off-diagonal block between two cblk stored in 2D. More...
 
static pastix_fixdbl_t core_strsmsp_lr (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const pastix_lrblock_t *lrA, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Computes the updates associated to one off-diagonal block between two cblk stored in low-rank format. More...
 
static pastix_fixdbl_t core_strsmsp_2dsub (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t blok_m, const float *A, float *C)
 Compute the updates associated to one off-diagonal block between two cblk stored in 2D. More...
 
static pastix_fixdbl_t core_strsmsp_lrsub (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t blok_m, const pastix_lrblock_t *lrA, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block between two cblk stored in low-rank format. More...
 
static void core_dtrsmsp_1d (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const double *A, double *C)
 Apply all the trsm updates on a panel stored in 1D layout. More...
 
static void core_dtrsmsp_2d (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const double *A, double *C)
 Compute the updates associated to one off-diagonal block between two cblk stored in 2D. More...
 
static pastix_fixdbl_t core_dtrsmsp_lr (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const pastix_lrblock_t *lrA, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Computes the updates associated to one off-diagonal block between two cblk stored in low-rank format. More...
 
static pastix_fixdbl_t core_dtrsmsp_2dsub (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t blok_m, const double *A, double *C)
 Compute the updates associated to one off-diagonal block between two cblk stored in 2D. More...
 
static pastix_fixdbl_t core_dtrsmsp_lrsub (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t blok_m, const pastix_lrblock_t *lrA, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block between two cblk stored in low-rank format. More...
 
void core_csytrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex32_t *L, pastix_complex32_t *C, pastix_complex32_t *work)
 
int cpucblk_cpotrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_cpotrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex32_t *work, pastix_int_t lwork)
 Apply the updates of the cholesky factorisation of a given panel. More...
 
int cpucblk_csytrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_csytrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex32_t *work)
 Apply the updates of the LDL^t factorisation of a given panel. More...
 
int cpucblk_cgetrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the LU factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_cgetrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex32_t *work, pastix_int_t lwork)
 Apply the updates of the LU factorisation of a given panel. More...
 
void core_ssytrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const float *L, float *C, float *work)
 
int cpucblk_spotrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_spotrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, float *work, pastix_int_t lwork)
 Apply the updates of the cholesky factorisation of a given panel. More...
 
int cpucblk_ssytrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_ssytrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, float *work)
 Apply the updates of the LDL^t factorisation of a given panel. More...
 
int cpucblk_sgetrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the LU factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_sgetrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, float *work, pastix_int_t lwork)
 Apply the updates of the LU factorisation of a given panel. More...
 
void core_dsytrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const double *L, double *C, double *work)
 
int cpucblk_dpotrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_dpotrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, double *work, pastix_int_t lwork)
 Apply the updates of the cholesky factorisation of a given panel. More...
 
int cpucblk_dsytrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_dsytrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, double *work)
 Apply the updates of the LDL^t factorisation of a given panel. More...
 
int cpucblk_dgetrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the LU factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_dgetrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, double *work, pastix_int_t lwork)
 Apply the updates of the LU factorisation of a given panel. More...
 
void core_zsytrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex64_t *L, pastix_complex64_t *C, pastix_complex64_t *work)
 
int cpucblk_zpotrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_zpotrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex64_t *work, pastix_int_t lwork)
 Apply the updates of the cholesky factorisation of a given panel. More...
 
int cpucblk_zsytrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_zsytrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex64_t *work)
 Apply the updates of the LDL^t factorisation of a given panel. More...
 
int cpucblk_zgetrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the LU factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_zgetrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex64_t *work, pastix_int_t lwork)
 Apply the updates of the LU factorisation of a given panel. More...
 

Detailed Description

This module contains the three terms update functions for the LDL^t and LDL^h factorizations.

Function Documentation

◆ core_cgemmsp_1d1d()

static void core_cgemmsp_1d1d ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_complex32_t A,
const pastix_complex32_t B,
pastix_complex32_t C,
pastix_complex32_t work 
)
inlinestatic

Compute the updates that are generated by the transposition of one single off-diagonal block.

Both cblk involved in the computation are stored with the 1D storage: Column Major Layout with blocks interleaved.

All the off-diagonal block below block are multiplied by the selected block and added to the facing cblk.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C. The pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
[in]workTemporary memory buffer that is at least equal to the height of the block B by the sum of the height of all the blocks below the block B.
See also
core_cgemmsp_1d2d
core_cgemmsp_2d2d

Definition at line 106 of file core_cgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, pastix_int_t, PastixUCoef, and solver_cblk_s::stride.

Referenced by cpucblk_cgemmsp().

◆ core_cgemmsp_1d2d()

static void core_cgemmsp_1d2d ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_complex32_t A,
const pastix_complex32_t B,
pastix_complex32_t C 
)
inlinestatic

Compute the updates that are generated by the transposition of one single off-diagonal block.

The cblk involved in the matrices A and B are stored with the 1D storage: Column Major Layout with blocks interleaved. The facing cblk of the atrix C, is stored with the 2D storage where each block is stored continuously one after another. (Similar to dense tile storage with variant tile size)

All the off-diagonal block below block are multiplied by the selected block and added to the facing cblk.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C. The pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
See also
core_cgemmsp_1d1d
core_cgemmsp_2d2d

Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk

Definition at line 264 of file core_cgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PastixUCoef, and solver_cblk_s::stride.

Referenced by cpucblk_cgemmsp().

◆ core_cgemmsp_2d2d()

static void core_cgemmsp_2d2d ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_complex32_t A,
const pastix_complex32_t B,
pastix_complex32_t C 
)
inlinestatic

Compute the updates that are generated by the transposition of one single off-diagonal block.

Both cblk involved in the matrices A, B and C are stored with the 2D storage where each block is stored continuously one after another. (Similar to dense tile storage with variant tile size)

All the off-diagonal block below block are multiplied by the selected block and added to the facing cblk.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C. The pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
See also
core_cgemmsp_1d1d
core_cgemmsp_1d2d

Definition at line 404 of file core_cgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, and PastixUCoef.

Referenced by cpucblk_cgemmsp().

◆ core_cgemmsp_block_frfr()

static pastix_fixdbl_t core_cgemmsp_block_frfr ( pastix_trans_t  trans,
pastix_int_t  blok_mk,
pastix_int_t  blok_kn,
pastix_int_t  blok_mn,
const SolverCblk cblk,
SolverCblk fcblk,
const pastix_complex32_t A,
const pastix_complex32_t B,
pastix_complex32_t C 
)
inlinestatic

Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks.

This is used to performed an update:

                 C_mn = C_mn - A_mk * op(B_kn)

where A_mk is the set of blocks in cblk k, facing the diagonal block of the cblk m; B_kn is the set of blocks in cblk n facing the diagonal block of the cblk k; and C_mn is the set of blocks impacted by this update, it necessarily belongs to the set of block of the cblk n facing the diagonal block of the cblk m.

Parameters
[in]transSpecify the transposition used for the B matrices. It has to be either PastixTrans or PastixConjTrans.
[in]blok_mkIndex of the first off-diagonal block in cblk, that is used for A.
[in]blok_knIndex of the first off-diagonal block in cblk, that is used for B.
[in]blok_mnIndex of the first off-diagonal block in fcblk, that is used for C.
[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]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
Returns
The number of flops performed
See also
core_cgemmsp_block_frlr
core_cgemmsp_block_lrlr

Definition at line 545 of file core_cgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, pastix_int_t, and PastixKernelGEMMBlok2d2d.

Referenced by cpublok_cgemmsp().

◆ core_cgemmsp_block_frlr()

static pastix_fixdbl_t core_cgemmsp_block_frlr ( pastix_trans_t  transB,
pastix_int_t  blok_mk,
pastix_int_t  blok_kn,
pastix_int_t  blok_mn,
const SolverCblk cblk,
SolverCblk fcblk,
const pastix_complex32_t A,
const pastix_complex32_t B,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks.

This is used to perform an update:

                 C_mn = C_mn - A_mk * op(B_kn)

where A_mk is the set of blocks in cblk k, facing the diagonal block of the cblk m; B_kn is the set of blocks in cblk n facing the diagonal block of the cblk k; and C_mn is the set of blocks impacted by this update, it necessarily belongs to the set of block of the cblk n facing the diagonal block of the cblk m.

In this routine, all the matrices are low-rank

Parameters
[in]transBSpecify the transposition used for the B matrices. It has to be either PastixTrans or PastixConjTrans.
[in]blok_mkIndex of the first off-diagonal block in cblk, that is used for A.
[in]blok_knIndex of the first off-diagonal block in cblk, that is used for B.
[in]blok_mnIndex of the first off-diagonal block in fcblk, that is used for C.
[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]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 712 of file core_cgemmsp.c.

References core_clrmm_s::A, core_clrmm_s::alpha, core_clrmm_s::B, core_clrmm_s::beta, blok_rownbr(), core_clrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_clrmm_s::Cm, core_clrmm_s::Cn, solver_blok_s::coefind, core_clrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_clrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_clrmm_s::lock, core_clrmm_s::lowrank, core_clrmm_s::lwork, core_clrmm_s::M, core_clrmm_s::N, core_clrmm_s::offx, core_clrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_clrmm_s::transA, core_clrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_clrmm_s::work.

Referenced by cpublok_cgemmsp().

◆ core_cgemmsp_block_lrlr()

static pastix_fixdbl_t core_cgemmsp_block_lrlr ( pastix_trans_t  transB,
pastix_int_t  blok_mk,
pastix_int_t  blok_kn,
pastix_int_t  blok_mn,
const SolverCblk cblk,
SolverCblk fcblk,
const pastix_lrblock_t lrA,
const pastix_lrblock_t lrB,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks.

This is used to perform an update:

                 C_mn = C_mn - A_mk * op(B_kn)

where A_mk is the set of blocks in cblk k, facing the diagonal block of the cblk m; B_kn is the set of blocks in cblk n facing the diagonal block of the cblk k; and C_mn is the set of blocks impacted by this update, it necessarily belongs to the set of block of the cblk n facing the diagonal block of the cblk m.

In this routine, all the matrices are low-rank

Parameters
[in]transBSpecify the transposition used for the B matrices. It has to be either PastixTrans or PastixConjTrans.
[in]blok_mkIndex of the first off-diagonal block in cblk, that is used for A.
[in]blok_knIndex of the first off-diagonal block in cblk, that is used for B.
[in]blok_mnIndex of the first off-diagonal block in fcblk, that is used for C.
[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]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in,out]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in,out]lrBPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in,out]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 901 of file core_cgemmsp.c.

References core_clrmm_s::A, core_clrmm_s::alpha, core_clrmm_s::B, core_clrmm_s::beta, blok_rownbr(), core_clrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_clrmm_s::Cm, core_clrmm_s::Cn, core_clrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_clrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_clrmm_s::lock, core_clrmm_s::lowrank, core_clrmm_s::lwork, core_clrmm_s::M, core_clrmm_s::N, core_clrmm_s::offx, core_clrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, core_clrmm_s::transA, core_clrmm_s::transB, and core_clrmm_s::work.

Referenced by cpublok_cgemmsp().

◆ core_cgemmsp_fulllr()

static pastix_fixdbl_t core_cgemmsp_fulllr ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_complex32_t A,
const pastix_complex32_t B,
pastix_lrblock_t lrC,
pastix_complex32_t work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C.
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]workTemporary memory buffer.
[in]lworkTODO
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk

Definition at line 1074 of file core_cgemmsp.c.

References core_clrmm_s::A, core_clrmm_s::alpha, core_clrmm_s::B, core_clrmm_s::beta, blok_rownbr(), core_clrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_clrmm_s::Cm, core_clrmm_s::Cn, solver_blok_s::coefind, core_clrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_clrmm_s::K, solver_cblk_s::lock, core_clrmm_s::lock, core_clrmm_s::lowrank, core_clrmm_s::lwork, core_clrmm_s::M, core_clrmm_s::N, core_clrmm_s::offx, core_clrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, core_clrmm_s::transA, core_clrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_clrmm_s::work.

Referenced by cpucblk_cgemmsp().

◆ core_cgemmsp_lr()

static pastix_fixdbl_t core_cgemmsp_lr ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_lrblock_t lrA,
const pastix_lrblock_t lrB,
pastix_lrblock_t lrC,
pastix_complex32_t work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C.
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in]lrBPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in]lrCPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in]workTemporary memory buffer.
[in]lworkTODO
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 1228 of file core_cgemmsp.c.

References core_clrmm_s::A, core_clrmm_s::alpha, core_clrmm_s::B, core_clrmm_s::beta, blok_rownbr(), core_clrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_clrmm_s::Cm, core_clrmm_s::Cn, core_clrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_clrmm_s::K, solver_cblk_s::lock, core_clrmm_s::lock, core_clrmm_s::lowrank, core_clrmm_s::lwork, core_clrmm_s::lwused, core_clrmm_s::M, core_clrmm_s::N, core_clrmm_s::offx, core_clrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, core_clrmm_s::transA, core_clrmm_s::transB, and core_clrmm_s::work.

Referenced by cpucblk_cgemmsp().

◆ core_cgemmsp_lrfr()

static pastix_fixdbl_t core_cgemmsp_lrfr ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_lrblock_t lrA,
const pastix_lrblock_t lrB,
pastix_complex32_t C,
pastix_complex32_t work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C.
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in]lrBPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
[in]workTemporary memory buffer.
[in]lworkThe length of work. On entry, if trans = PastixTrans lwork >= max(1, K*N). Otherwise lwork >= max(1, M*K).
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 1375 of file core_cgemmsp.c.

References core_clrmm_s::A, core_clrmm_s::alpha, core_clrmm_s::B, core_clrmm_s::beta, blok_rownbr(), core_clrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_clrmm_s::Cm, core_clrmm_s::Cn, solver_blok_s::coefind, core_clrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_clrmm_s::K, solver_cblk_s::lock, core_clrmm_s::lock, core_clrmm_s::lowrank, core_clrmm_s::lwork, core_clrmm_s::lwused, core_clrmm_s::M, core_clrmm_s::N, core_clrmm_s::offx, core_clrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_clrmm_s::transA, core_clrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_clrmm_s::work.

Referenced by cpucblk_cgemmsp().

◆ core_zgemmsp_1d1d()

static void core_zgemmsp_1d1d ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_complex64_t *  A,
const pastix_complex64_t *  B,
pastix_complex64_t *  C,
pastix_complex64_t *  work 
)
inlinestatic

Compute the updates that are generated by the transposition of one single off-diagonal block.

Both cblk involved in the computation are stored with the 1D storage: Column Major Layout with blocks interleaved.

All the off-diagonal block below block are multiplied by the selected block and added to the facing cblk.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C. The pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
[in]workTemporary memory buffer that is at least equal to the height of the block B by the sum of the height of all the blocks below the block B.
See also
core_zgemmsp_1d2d
core_zgemmsp_2d2d

Definition at line 106 of file core_zgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, pastix_int_t, PastixUCoef, and solver_cblk_s::stride.

Referenced by cpucblk_zgemmsp().

◆ core_zgemmsp_1d2d()

static void core_zgemmsp_1d2d ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_complex64_t *  A,
const pastix_complex64_t *  B,
pastix_complex64_t *  C 
)
inlinestatic

Compute the updates that are generated by the transposition of one single off-diagonal block.

The cblk involved in the matrices A and B are stored with the 1D storage: Column Major Layout with blocks interleaved. The facing cblk of the atrix C, is stored with the 2D storage where each block is stored continuously one after another. (Similar to dense tile storage with variant tile size)

All the off-diagonal block below block are multiplied by the selected block and added to the facing cblk.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C. The pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
See also
core_zgemmsp_1d1d
core_zgemmsp_2d2d

Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk

Definition at line 264 of file core_zgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PastixUCoef, and solver_cblk_s::stride.

Referenced by cpucblk_zgemmsp().

◆ core_zgemmsp_2d2d()

static void core_zgemmsp_2d2d ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_complex64_t *  A,
const pastix_complex64_t *  B,
pastix_complex64_t *  C 
)
inlinestatic

Compute the updates that are generated by the transposition of one single off-diagonal block.

Both cblk involved in the matrices A, B and C are stored with the 2D storage where each block is stored continuously one after another. (Similar to dense tile storage with variant tile size)

All the off-diagonal block below block are multiplied by the selected block and added to the facing cblk.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C. The pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
See also
core_zgemmsp_1d1d
core_zgemmsp_1d2d

Definition at line 404 of file core_zgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, and PastixUCoef.

Referenced by cpucblk_zgemmsp().

◆ core_zgemmsp_block_frfr()

static pastix_fixdbl_t core_zgemmsp_block_frfr ( pastix_trans_t  trans,
pastix_int_t  blok_mk,
pastix_int_t  blok_kn,
pastix_int_t  blok_mn,
const SolverCblk cblk,
SolverCblk fcblk,
const pastix_complex64_t *  A,
const pastix_complex64_t *  B,
pastix_complex64_t *  C 
)
inlinestatic

Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks.

This is used to performed an update:

                 C_mn = C_mn - A_mk * op(B_kn)

where A_mk is the set of blocks in cblk k, facing the diagonal block of the cblk m; B_kn is the set of blocks in cblk n facing the diagonal block of the cblk k; and C_mn is the set of blocks impacted by this update, it necessarily belongs to the set of block of the cblk n facing the diagonal block of the cblk m.

Parameters
[in]transSpecify the transposition used for the B matrices. It has to be either PastixTrans or PastixConjTrans.
[in]blok_mkIndex of the first off-diagonal block in cblk, that is used for A.
[in]blok_knIndex of the first off-diagonal block in cblk, that is used for B.
[in]blok_mnIndex of the first off-diagonal block in fcblk, that is used for C.
[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]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
Returns
The number of flops performed
See also
core_zgemmsp_block_frlr
core_zgemmsp_block_lrlr

Definition at line 545 of file core_zgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, pastix_int_t, and PastixKernelGEMMBlok2d2d.

Referenced by cpublok_zgemmsp().

◆ core_zgemmsp_block_frlr()

static pastix_fixdbl_t core_zgemmsp_block_frlr ( pastix_trans_t  transB,
pastix_int_t  blok_mk,
pastix_int_t  blok_kn,
pastix_int_t  blok_mn,
const SolverCblk cblk,
SolverCblk fcblk,
const pastix_complex64_t *  A,
const pastix_complex64_t *  B,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks.

This is used to perform an update:

                 C_mn = C_mn - A_mk * op(B_kn)

where A_mk is the set of blocks in cblk k, facing the diagonal block of the cblk m; B_kn is the set of blocks in cblk n facing the diagonal block of the cblk k; and C_mn is the set of blocks impacted by this update, it necessarily belongs to the set of block of the cblk n facing the diagonal block of the cblk m.

In this routine, all the matrices are low-rank

Parameters
[in]transBSpecify the transposition used for the B matrices. It has to be either PastixTrans or PastixConjTrans.
[in]blok_mkIndex of the first off-diagonal block in cblk, that is used for A.
[in]blok_knIndex of the first off-diagonal block in cblk, that is used for B.
[in]blok_mnIndex of the first off-diagonal block in fcblk, that is used for C.
[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]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 712 of file core_zgemmsp.c.

References core_zlrmm_s::A, core_zlrmm_s::alpha, core_zlrmm_s::B, core_zlrmm_s::beta, blok_rownbr(), core_zlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_zlrmm_s::Cm, core_zlrmm_s::Cn, solver_blok_s::coefind, core_zlrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_zlrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_zlrmm_s::lock, core_zlrmm_s::lowrank, core_zlrmm_s::lwork, core_zlrmm_s::M, core_zlrmm_s::N, core_zlrmm_s::offx, core_zlrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_zlrmm_s::transA, core_zlrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_zlrmm_s::work.

Referenced by cpublok_zgemmsp().

◆ core_zgemmsp_block_lrlr()

static pastix_fixdbl_t core_zgemmsp_block_lrlr ( pastix_trans_t  transB,
pastix_int_t  blok_mk,
pastix_int_t  blok_kn,
pastix_int_t  blok_mn,
const SolverCblk cblk,
SolverCblk fcblk,
const pastix_lrblock_t lrA,
const pastix_lrblock_t lrB,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks.

This is used to perform an update:

                 C_mn = C_mn - A_mk * op(B_kn)

where A_mk is the set of blocks in cblk k, facing the diagonal block of the cblk m; B_kn is the set of blocks in cblk n facing the diagonal block of the cblk k; and C_mn is the set of blocks impacted by this update, it necessarily belongs to the set of block of the cblk n facing the diagonal block of the cblk m.

In this routine, all the matrices are low-rank

Parameters
[in]transBSpecify the transposition used for the B matrices. It has to be either PastixTrans or PastixConjTrans.
[in]blok_mkIndex of the first off-diagonal block in cblk, that is used for A.
[in]blok_knIndex of the first off-diagonal block in cblk, that is used for B.
[in]blok_mnIndex of the first off-diagonal block in fcblk, that is used for C.
[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]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in,out]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in,out]lrBPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in,out]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 901 of file core_zgemmsp.c.

References core_zlrmm_s::A, core_zlrmm_s::alpha, core_zlrmm_s::B, core_zlrmm_s::beta, blok_rownbr(), core_zlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_zlrmm_s::Cm, core_zlrmm_s::Cn, core_zlrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_zlrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_zlrmm_s::lock, core_zlrmm_s::lowrank, core_zlrmm_s::lwork, core_zlrmm_s::M, core_zlrmm_s::N, core_zlrmm_s::offx, core_zlrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, core_zlrmm_s::transA, core_zlrmm_s::transB, and core_zlrmm_s::work.

Referenced by cpublok_zgemmsp().

◆ core_zgemmsp_fulllr()

static pastix_fixdbl_t core_zgemmsp_fulllr ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_complex64_t *  A,
const pastix_complex64_t *  B,
pastix_lrblock_t lrC,
pastix_complex64_t *  work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C.
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]workTemporary memory buffer.
[in]lworkTODO
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk

Definition at line 1074 of file core_zgemmsp.c.

References core_zlrmm_s::A, core_zlrmm_s::alpha, core_zlrmm_s::B, core_zlrmm_s::beta, blok_rownbr(), core_zlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_zlrmm_s::Cm, core_zlrmm_s::Cn, solver_blok_s::coefind, core_zlrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_zlrmm_s::K, solver_cblk_s::lock, core_zlrmm_s::lock, core_zlrmm_s::lowrank, core_zlrmm_s::lwork, core_zlrmm_s::M, core_zlrmm_s::N, core_zlrmm_s::offx, core_zlrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, core_zlrmm_s::transA, core_zlrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_zlrmm_s::work.

Referenced by cpucblk_zgemmsp().

◆ core_zgemmsp_lr()

static pastix_fixdbl_t core_zgemmsp_lr ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_lrblock_t lrA,
const pastix_lrblock_t lrB,
pastix_lrblock_t lrC,
pastix_complex64_t *  work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C.
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in]lrBPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in]lrCPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in]workTemporary memory buffer.
[in]lworkTODO
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 1228 of file core_zgemmsp.c.

References core_zlrmm_s::A, core_zlrmm_s::alpha, core_zlrmm_s::B, core_zlrmm_s::beta, blok_rownbr(), core_zlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_zlrmm_s::Cm, core_zlrmm_s::Cn, core_zlrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_zlrmm_s::K, solver_cblk_s::lock, core_zlrmm_s::lock, core_zlrmm_s::lowrank, core_zlrmm_s::lwork, core_zlrmm_s::lwused, core_zlrmm_s::M, core_zlrmm_s::N, core_zlrmm_s::offx, core_zlrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, core_zlrmm_s::transA, core_zlrmm_s::transB, and core_zlrmm_s::work.

Referenced by cpucblk_zgemmsp().

◆ core_zgemmsp_lrfr()

static pastix_fixdbl_t core_zgemmsp_lrfr ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_lrblock_t lrA,
const pastix_lrblock_t lrB,
pastix_complex64_t *  C,
pastix_complex64_t *  work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C.
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in]lrBPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
[in]workTemporary memory buffer.
[in]lworkThe length of work. On entry, if trans = PastixTrans lwork >= max(1, K*N). Otherwise lwork >= max(1, M*K).
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 1375 of file core_zgemmsp.c.

References core_zlrmm_s::A, core_zlrmm_s::alpha, core_zlrmm_s::B, core_zlrmm_s::beta, blok_rownbr(), core_zlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_zlrmm_s::Cm, core_zlrmm_s::Cn, solver_blok_s::coefind, core_zlrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_zlrmm_s::K, solver_cblk_s::lock, core_zlrmm_s::lock, core_zlrmm_s::lowrank, core_zlrmm_s::lwork, core_zlrmm_s::lwused, core_zlrmm_s::M, core_zlrmm_s::N, core_zlrmm_s::offx, core_zlrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_zlrmm_s::transA, core_zlrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_zlrmm_s::work.

Referenced by cpucblk_zgemmsp().

◆ core_sgemmsp_1d1d()

static void core_sgemmsp_1d1d ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const float *  A,
const float *  B,
float *  C,
float *  work 
)
inlinestatic

Compute the updates that are generated by the transposition of one single off-diagonal block.

Both cblk involved in the computation are stored with the 1D storage: Column Major Layout with blocks interleaved.

All the off-diagonal block below block are multiplied by the selected block and added to the facing cblk.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C. The pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
[in]workTemporary memory buffer that is at least equal to the height of the block B by the sum of the height of all the blocks below the block B.
See also
core_sgemmsp_1d2d
core_sgemmsp_2d2d

Definition at line 106 of file core_sgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, pastix_int_t, PastixUCoef, and solver_cblk_s::stride.

Referenced by cpucblk_sgemmsp().

◆ core_sgemmsp_1d2d()

static void core_sgemmsp_1d2d ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const float *  A,
const float *  B,
float *  C 
)
inlinestatic

Compute the updates that are generated by the transposition of one single off-diagonal block.

The cblk involved in the matrices A and B are stored with the 1D storage: Column Major Layout with blocks interleaved. The facing cblk of the atrix C, is stored with the 2D storage where each block is stored continuously one after another. (Similar to dense tile storage with variant tile size)

All the off-diagonal block below block are multiplied by the selected block and added to the facing cblk.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C. The pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
See also
core_sgemmsp_1d1d
core_sgemmsp_2d2d

Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk

Definition at line 264 of file core_sgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PastixUCoef, and solver_cblk_s::stride.

Referenced by cpucblk_sgemmsp().

◆ core_sgemmsp_2d2d()

static void core_sgemmsp_2d2d ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const float *  A,
const float *  B,
float *  C 
)
inlinestatic

Compute the updates that are generated by the transposition of one single off-diagonal block.

Both cblk involved in the matrices A, B and C are stored with the 2D storage where each block is stored continuously one after another. (Similar to dense tile storage with variant tile size)

All the off-diagonal block below block are multiplied by the selected block and added to the facing cblk.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C. The pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
See also
core_sgemmsp_1d1d
core_sgemmsp_1d2d

Definition at line 404 of file core_sgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, and PastixUCoef.

Referenced by cpucblk_sgemmsp().

◆ core_sgemmsp_block_frfr()

static pastix_fixdbl_t core_sgemmsp_block_frfr ( pastix_trans_t  trans,
pastix_int_t  blok_mk,
pastix_int_t  blok_kn,
pastix_int_t  blok_mn,
const SolverCblk cblk,
SolverCblk fcblk,
const float *  A,
const float *  B,
float *  C 
)
inlinestatic

Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks.

This is used to performed an update:

                 C_mn = C_mn - A_mk * op(B_kn)

where A_mk is the set of blocks in cblk k, facing the diagonal block of the cblk m; B_kn is the set of blocks in cblk n facing the diagonal block of the cblk k; and C_mn is the set of blocks impacted by this update, it necessarily belongs to the set of block of the cblk n facing the diagonal block of the cblk m.

Parameters
[in]transSpecify the transposition used for the B matrices. It has to be either PastixTrans or PastixTrans.
[in]blok_mkIndex of the first off-diagonal block in cblk, that is used for A.
[in]blok_knIndex of the first off-diagonal block in cblk, that is used for B.
[in]blok_mnIndex of the first off-diagonal block in fcblk, that is used for C.
[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]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
Returns
The number of flops performed
See also
core_sgemmsp_block_frlr
core_sgemmsp_block_lrlr

Definition at line 545 of file core_sgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, pastix_int_t, and PastixKernelGEMMBlok2d2d.

Referenced by cpublok_sgemmsp().

◆ core_sgemmsp_block_frlr()

static pastix_fixdbl_t core_sgemmsp_block_frlr ( pastix_trans_t  transB,
pastix_int_t  blok_mk,
pastix_int_t  blok_kn,
pastix_int_t  blok_mn,
const SolverCblk cblk,
SolverCblk fcblk,
const float *  A,
const float *  B,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks.

This is used to perform an update:

                 C_mn = C_mn - A_mk * op(B_kn)

where A_mk is the set of blocks in cblk k, facing the diagonal block of the cblk m; B_kn is the set of blocks in cblk n facing the diagonal block of the cblk k; and C_mn is the set of blocks impacted by this update, it necessarily belongs to the set of block of the cblk n facing the diagonal block of the cblk m.

In this routine, all the matrices are low-rank

Parameters
[in]transBSpecify the transposition used for the B matrices. It has to be either PastixTrans or PastixTrans.
[in]blok_mkIndex of the first off-diagonal block in cblk, that is used for A.
[in]blok_knIndex of the first off-diagonal block in cblk, that is used for B.
[in]blok_mnIndex of the first off-diagonal block in fcblk, that is used for C.
[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]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 712 of file core_sgemmsp.c.

References core_slrmm_s::A, core_slrmm_s::alpha, core_slrmm_s::B, core_slrmm_s::beta, blok_rownbr(), core_slrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_slrmm_s::Cm, core_slrmm_s::Cn, solver_blok_s::coefind, core_slrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_slrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_slrmm_s::lock, core_slrmm_s::lowrank, core_slrmm_s::lwork, core_slrmm_s::M, core_slrmm_s::N, core_slrmm_s::offx, core_slrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_slrmm_s::transA, core_slrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_slrmm_s::work.

Referenced by cpublok_sgemmsp().

◆ core_sgemmsp_block_lrlr()

static pastix_fixdbl_t core_sgemmsp_block_lrlr ( pastix_trans_t  transB,
pastix_int_t  blok_mk,
pastix_int_t  blok_kn,
pastix_int_t  blok_mn,
const SolverCblk cblk,
SolverCblk fcblk,
const pastix_lrblock_t lrA,
const pastix_lrblock_t lrB,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks.

This is used to perform an update:

                 C_mn = C_mn - A_mk * op(B_kn)

where A_mk is the set of blocks in cblk k, facing the diagonal block of the cblk m; B_kn is the set of blocks in cblk n facing the diagonal block of the cblk k; and C_mn is the set of blocks impacted by this update, it necessarily belongs to the set of block of the cblk n facing the diagonal block of the cblk m.

In this routine, all the matrices are low-rank

Parameters
[in]transBSpecify the transposition used for the B matrices. It has to be either PastixTrans or PastixTrans.
[in]blok_mkIndex of the first off-diagonal block in cblk, that is used for A.
[in]blok_knIndex of the first off-diagonal block in cblk, that is used for B.
[in]blok_mnIndex of the first off-diagonal block in fcblk, that is used for C.
[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]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in,out]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in,out]lrBPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in,out]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 901 of file core_sgemmsp.c.

References core_slrmm_s::A, core_slrmm_s::alpha, core_slrmm_s::B, core_slrmm_s::beta, blok_rownbr(), core_slrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_slrmm_s::Cm, core_slrmm_s::Cn, core_slrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_slrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_slrmm_s::lock, core_slrmm_s::lowrank, core_slrmm_s::lwork, core_slrmm_s::M, core_slrmm_s::N, core_slrmm_s::offx, core_slrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, core_slrmm_s::transA, core_slrmm_s::transB, and core_slrmm_s::work.

Referenced by cpublok_sgemmsp().

◆ core_sgemmsp_fulllr()

static pastix_fixdbl_t core_sgemmsp_fulllr ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const float *  A,
const float *  B,
pastix_lrblock_t lrC,
float *  work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C.
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]workTemporary memory buffer.
[in]lworkTODO
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk

Definition at line 1074 of file core_sgemmsp.c.

References core_slrmm_s::A, core_slrmm_s::alpha, core_slrmm_s::B, core_slrmm_s::beta, blok_rownbr(), core_slrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_slrmm_s::Cm, core_slrmm_s::Cn, solver_blok_s::coefind, core_slrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_slrmm_s::K, solver_cblk_s::lock, core_slrmm_s::lock, core_slrmm_s::lowrank, core_slrmm_s::lwork, core_slrmm_s::M, core_slrmm_s::N, core_slrmm_s::offx, core_slrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, core_slrmm_s::transA, core_slrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_slrmm_s::work.

Referenced by cpucblk_sgemmsp().

◆ core_sgemmsp_lr()

static pastix_fixdbl_t core_sgemmsp_lr ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_lrblock_t lrA,
const pastix_lrblock_t lrB,
pastix_lrblock_t lrC,
float *  work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C.
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in]lrBPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in]lrCPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in]workTemporary memory buffer.
[in]lworkTODO
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 1228 of file core_sgemmsp.c.

References core_slrmm_s::A, core_slrmm_s::alpha, core_slrmm_s::B, core_slrmm_s::beta, blok_rownbr(), core_slrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_slrmm_s::Cm, core_slrmm_s::Cn, core_slrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_slrmm_s::K, solver_cblk_s::lock, core_slrmm_s::lock, core_slrmm_s::lowrank, core_slrmm_s::lwork, core_slrmm_s::lwused, core_slrmm_s::M, core_slrmm_s::N, core_slrmm_s::offx, core_slrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, core_slrmm_s::transA, core_slrmm_s::transB, and core_slrmm_s::work.

Referenced by cpucblk_sgemmsp().

◆ core_sgemmsp_lrfr()

static pastix_fixdbl_t core_sgemmsp_lrfr ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_lrblock_t lrA,
const pastix_lrblock_t lrB,
float *  C,
float *  work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C.
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in]lrBPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
[in]workTemporary memory buffer.
[in]lworkThe length of work. On entry, if trans = PastixTrans lwork >= max(1, K*N). Otherwise lwork >= max(1, M*K).
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 1375 of file core_sgemmsp.c.

References core_slrmm_s::A, core_slrmm_s::alpha, core_slrmm_s::B, core_slrmm_s::beta, blok_rownbr(), core_slrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_slrmm_s::Cm, core_slrmm_s::Cn, solver_blok_s::coefind, core_slrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_slrmm_s::K, solver_cblk_s::lock, core_slrmm_s::lock, core_slrmm_s::lowrank, core_slrmm_s::lwork, core_slrmm_s::lwused, core_slrmm_s::M, core_slrmm_s::N, core_slrmm_s::offx, core_slrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_slrmm_s::transA, core_slrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_slrmm_s::work.

Referenced by cpucblk_sgemmsp().

◆ core_dgemmsp_1d1d()

static void core_dgemmsp_1d1d ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const double *  A,
const double *  B,
double *  C,
double *  work 
)
inlinestatic

Compute the updates that are generated by the transposition of one single off-diagonal block.

Both cblk involved in the computation are stored with the 1D storage: Column Major Layout with blocks interleaved.

All the off-diagonal block below block are multiplied by the selected block and added to the facing cblk.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C. The pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
[in]workTemporary memory buffer that is at least equal to the height of the block B by the sum of the height of all the blocks below the block B.
See also
core_dgemmsp_1d2d
core_dgemmsp_2d2d

Definition at line 106 of file core_dgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, pastix_int_t, PastixUCoef, and solver_cblk_s::stride.

Referenced by cpucblk_dgemmsp().

◆ core_dgemmsp_1d2d()

static void core_dgemmsp_1d2d ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const double *  A,
const double *  B,
double *  C 
)
inlinestatic

Compute the updates that are generated by the transposition of one single off-diagonal block.

The cblk involved in the matrices A and B are stored with the 1D storage: Column Major Layout with blocks interleaved. The facing cblk of the atrix C, is stored with the 2D storage where each block is stored continuously one after another. (Similar to dense tile storage with variant tile size)

All the off-diagonal block below block are multiplied by the selected block and added to the facing cblk.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C. The pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
See also
core_dgemmsp_1d1d
core_dgemmsp_2d2d

Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk

Definition at line 264 of file core_dgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PastixUCoef, and solver_cblk_s::stride.

Referenced by cpucblk_dgemmsp().

◆ core_dgemmsp_2d2d()

static void core_dgemmsp_2d2d ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const double *  A,
const double *  B,
double *  C 
)
inlinestatic

Compute the updates that are generated by the transposition of one single off-diagonal block.

Both cblk involved in the matrices A, B and C are stored with the 2D storage where each block is stored continuously one after another. (Similar to dense tile storage with variant tile size)

All the off-diagonal block below block are multiplied by the selected block and added to the facing cblk.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C. The pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
See also
core_dgemmsp_1d1d
core_dgemmsp_1d2d

Definition at line 404 of file core_dgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, and PastixUCoef.

Referenced by cpucblk_dgemmsp().

◆ core_dgemmsp_block_frfr()

static pastix_fixdbl_t core_dgemmsp_block_frfr ( pastix_trans_t  trans,
pastix_int_t  blok_mk,
pastix_int_t  blok_kn,
pastix_int_t  blok_mn,
const SolverCblk cblk,
SolverCblk fcblk,
const double *  A,
const double *  B,
double *  C 
)
inlinestatic

Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks.

This is used to performed an update:

                 C_mn = C_mn - A_mk * op(B_kn)

where A_mk is the set of blocks in cblk k, facing the diagonal block of the cblk m; B_kn is the set of blocks in cblk n facing the diagonal block of the cblk k; and C_mn is the set of blocks impacted by this update, it necessarily belongs to the set of block of the cblk n facing the diagonal block of the cblk m.

Parameters
[in]transSpecify the transposition used for the B matrices. It has to be either PastixTrans or PastixTrans.
[in]blok_mkIndex of the first off-diagonal block in cblk, that is used for A.
[in]blok_knIndex of the first off-diagonal block in cblk, that is used for B.
[in]blok_mnIndex of the first off-diagonal block in fcblk, that is used for C.
[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]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
Returns
The number of flops performed
See also
core_dgemmsp_block_frlr
core_dgemmsp_block_lrlr

Definition at line 545 of file core_dgemmsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, pastix_int_t, and PastixKernelGEMMBlok2d2d.

Referenced by cpublok_dgemmsp().

◆ core_dgemmsp_block_frlr()

static pastix_fixdbl_t core_dgemmsp_block_frlr ( pastix_trans_t  transB,
pastix_int_t  blok_mk,
pastix_int_t  blok_kn,
pastix_int_t  blok_mn,
const SolverCblk cblk,
SolverCblk fcblk,
const double *  A,
const double *  B,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks.

This is used to perform an update:

                 C_mn = C_mn - A_mk * op(B_kn)

where A_mk is the set of blocks in cblk k, facing the diagonal block of the cblk m; B_kn is the set of blocks in cblk n facing the diagonal block of the cblk k; and C_mn is the set of blocks impacted by this update, it necessarily belongs to the set of block of the cblk n facing the diagonal block of the cblk m.

In this routine, all the matrices are low-rank

Parameters
[in]transBSpecify the transposition used for the B matrices. It has to be either PastixTrans or PastixTrans.
[in]blok_mkIndex of the first off-diagonal block in cblk, that is used for A.
[in]blok_knIndex of the first off-diagonal block in cblk, that is used for B.
[in]blok_mnIndex of the first off-diagonal block in fcblk, that is used for C.
[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]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 712 of file core_dgemmsp.c.

References core_dlrmm_s::A, core_dlrmm_s::alpha, core_dlrmm_s::B, core_dlrmm_s::beta, blok_rownbr(), core_dlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_dlrmm_s::Cm, core_dlrmm_s::Cn, solver_blok_s::coefind, core_dlrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_dlrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_dlrmm_s::lock, core_dlrmm_s::lowrank, core_dlrmm_s::lwork, core_dlrmm_s::M, core_dlrmm_s::N, core_dlrmm_s::offx, core_dlrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_dlrmm_s::transA, core_dlrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_dlrmm_s::work.

Referenced by cpublok_dgemmsp().

◆ core_dgemmsp_block_lrlr()

static pastix_fixdbl_t core_dgemmsp_block_lrlr ( pastix_trans_t  transB,
pastix_int_t  blok_mk,
pastix_int_t  blok_kn,
pastix_int_t  blok_mn,
const SolverCblk cblk,
SolverCblk fcblk,
const pastix_lrblock_t lrA,
const pastix_lrblock_t lrB,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates that are generated by the transposition of all the blocks facing a common diagonal block, by another similar set of blocks.

This is used to perform an update:

                 C_mn = C_mn - A_mk * op(B_kn)

where A_mk is the set of blocks in cblk k, facing the diagonal block of the cblk m; B_kn is the set of blocks in cblk n facing the diagonal block of the cblk k; and C_mn is the set of blocks impacted by this update, it necessarily belongs to the set of block of the cblk n facing the diagonal block of the cblk m.

In this routine, all the matrices are low-rank

Parameters
[in]transBSpecify the transposition used for the B matrices. It has to be either PastixTrans or PastixTrans.
[in]blok_mkIndex of the first off-diagonal block in cblk, that is used for A.
[in]blok_knIndex of the first off-diagonal block in cblk, that is used for B.
[in]blok_mnIndex of the first off-diagonal block in fcblk, that is used for C.
[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]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in,out]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in,out]lrBPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in,out]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 901 of file core_dgemmsp.c.

References core_dlrmm_s::A, core_dlrmm_s::alpha, core_dlrmm_s::B, core_dlrmm_s::beta, blok_rownbr(), core_dlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_dlrmm_s::Cm, core_dlrmm_s::Cn, core_dlrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_dlrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_dlrmm_s::lock, core_dlrmm_s::lowrank, core_dlrmm_s::lwork, core_dlrmm_s::M, core_dlrmm_s::N, core_dlrmm_s::offx, core_dlrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, core_dlrmm_s::transA, core_dlrmm_s::transB, and core_dlrmm_s::work.

Referenced by cpublok_dgemmsp().

◆ core_dgemmsp_fulllr()

static pastix_fixdbl_t core_dgemmsp_fulllr ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const double *  A,
const double *  B,
pastix_lrblock_t lrC,
double *  work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C.
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]BThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]workTemporary memory buffer.
[in]lworkTODO
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk

Definition at line 1074 of file core_dgemmsp.c.

References core_dlrmm_s::A, core_dlrmm_s::alpha, core_dlrmm_s::B, core_dlrmm_s::beta, blok_rownbr(), core_dlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_dlrmm_s::Cm, core_dlrmm_s::Cn, solver_blok_s::coefind, core_dlrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_dlrmm_s::K, solver_cblk_s::lock, core_dlrmm_s::lock, core_dlrmm_s::lowrank, core_dlrmm_s::lwork, core_dlrmm_s::M, core_dlrmm_s::N, core_dlrmm_s::offx, core_dlrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, core_dlrmm_s::transA, core_dlrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_dlrmm_s::work.

Referenced by cpucblk_dgemmsp().

◆ core_dgemmsp_lr()

static pastix_fixdbl_t core_dgemmsp_lr ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_lrblock_t lrA,
const pastix_lrblock_t lrB,
pastix_lrblock_t lrC,
double *  work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C.
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in]lrBPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in]lrCPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in]workTemporary memory buffer.
[in]lworkTODO
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 1228 of file core_dgemmsp.c.

References core_dlrmm_s::A, core_dlrmm_s::alpha, core_dlrmm_s::B, core_dlrmm_s::beta, blok_rownbr(), core_dlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_dlrmm_s::Cm, core_dlrmm_s::Cn, core_dlrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_dlrmm_s::K, solver_cblk_s::lock, core_dlrmm_s::lock, core_dlrmm_s::lowrank, core_dlrmm_s::lwork, core_dlrmm_s::lwused, core_dlrmm_s::M, core_dlrmm_s::N, core_dlrmm_s::offx, core_dlrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, core_dlrmm_s::transA, core_dlrmm_s::transB, and core_dlrmm_s::work.

Referenced by cpucblk_dgemmsp().

◆ core_dgemmsp_lrfr()

static pastix_fixdbl_t core_dgemmsp_lrfr ( pastix_coefside_t  sideA,
pastix_trans_t  trans,
const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_lrblock_t lrA,
const pastix_lrblock_t lrB,
double *  C,
double *  work,
pastix_int_t  lwork,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block.

Parameters
[in]sideASpecify if A and C belong to the lower part, or to the upper part. If sideA == PastixLCoef, the contribution of: (block .. (cblk[1].fblokptr-1)) -by- block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr-1)) -by- block is computed and added to C.
[in]transSpecify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans.
[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]blokThe block from which we compute the contributions.
[in,out]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. The C pointer must be one of the coeftab from this fcblk. Next column blok must be accessible through fcblk[1].
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in]lrBPointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks.
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
[in]workTemporary memory buffer.
[in]lworkThe length of work. On entry, if trans = PastixTrans lwork >= max(1, K*N). Otherwise lwork >= max(1, M*K).
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 1375 of file core_dgemmsp.c.

References core_dlrmm_s::A, core_dlrmm_s::alpha, core_dlrmm_s::B, core_dlrmm_s::beta, blok_rownbr(), core_dlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_dlrmm_s::Cm, core_dlrmm_s::Cn, solver_blok_s::coefind, core_dlrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_dlrmm_s::K, solver_cblk_s::lock, core_dlrmm_s::lock, core_dlrmm_s::lowrank, core_dlrmm_s::lwork, core_dlrmm_s::lwused, core_dlrmm_s::M, core_dlrmm_s::N, core_dlrmm_s::offx, core_dlrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_dlrmm_s::transA, core_dlrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_dlrmm_s::work.

Referenced by cpucblk_dgemmsp().

◆ core_ctrsmsp_1d()

static void core_ctrsmsp_1d ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
const pastix_complex32_t A,
pastix_complex32_t C 
)
inlinestatic

Apply all the trsm updates on a panel stored in 1D layout.

Parameters
[in]sideSpecify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the A matrix. It has to be either PastixTrans or PastixConjTrans.
[in]diagSpecify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.

Definition at line 72 of file core_ctrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, and solver_cblk_s::stride.

◆ core_ctrsmsp_2d()

static void core_ctrsmsp_2d ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
const pastix_complex32_t A,
pastix_complex32_t C 
)
inlinestatic

Compute the updates associated to one off-diagonal block between two cblk stored in 2D.

Parameters
[in]sideSpecify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the A matrix. It has to be either PastixTrans or PastixConjTrans.
[in]diagSpecify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.

Definition at line 149 of file core_ctrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, and pastix_int_t.

◆ core_ctrsmsp_lr()

static pastix_fixdbl_t core_ctrsmsp_lr ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
const pastix_lrblock_t lrA,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Computes the updates associated to one off-diagonal block between two cblk stored in low-rank format.

Parameters
[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]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 233 of file core_ctrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_ccompress(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.

◆ core_ctrsmsp_2dsub()

static pastix_fixdbl_t core_ctrsmsp_2dsub ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
pastix_int_t  blok_m,
const pastix_complex32_t A,
pastix_complex32_t C 
)
inlinestatic

Compute the updates associated to one off-diagonal block between two cblk stored in 2D.

Parameters
[in]sideSpecify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the A matrix. It has to be either PastixTrans or PastixConjTrans.
[in]diagSpecify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]blok_mIndex of the first off-diagonal block in cblk that is solved. The TRSM is also applied to all the folowing blocks which are facing the same diagonal block
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
Return values
TODO

Definition at line 452 of file core_ctrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, and PastixKernelTRSMBlok2d.

Referenced by cpublok_ctrsmsp().

◆ core_ctrsmsp_lrsub()

static pastix_fixdbl_t core_ctrsmsp_lrsub ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
pastix_int_t  blok_m,
const pastix_lrblock_t lrA,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block between two cblk stored in low-rank format.

Parameters
[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]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]blok_mIndex of the first off-diagonal block in cblk that is solved. The TRSM is also applied to all the folowing blocks which are facing the same diagonal block
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in,out]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Return values
TODO

Definition at line 554 of file core_ctrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_ccompress(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelTRSMBlokLR, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by cpublok_ctrsmsp().

◆ core_ztrsmsp_1d()

static void core_ztrsmsp_1d ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
const pastix_complex64_t *  A,
pastix_complex64_t *  C 
)
inlinestatic

Apply all the trsm updates on a panel stored in 1D layout.

Parameters
[in]sideSpecify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the A matrix. It has to be either PastixTrans or PastixConjTrans.
[in]diagSpecify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.

Definition at line 72 of file core_ztrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, and solver_cblk_s::stride.

◆ core_ztrsmsp_2d()

static void core_ztrsmsp_2d ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
const pastix_complex64_t *  A,
pastix_complex64_t *  C 
)
inlinestatic

Compute the updates associated to one off-diagonal block between two cblk stored in 2D.

Parameters
[in]sideSpecify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the A matrix. It has to be either PastixTrans or PastixConjTrans.
[in]diagSpecify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.

Definition at line 149 of file core_ztrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, and pastix_int_t.

◆ core_ztrsmsp_lr()

static pastix_fixdbl_t core_ztrsmsp_lr ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
const pastix_lrblock_t lrA,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Computes the updates associated to one off-diagonal block between two cblk stored in low-rank format.

Parameters
[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]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 233 of file core_ztrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_zcompress(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.

◆ core_ztrsmsp_2dsub()

static pastix_fixdbl_t core_ztrsmsp_2dsub ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
pastix_int_t  blok_m,
const pastix_complex64_t *  A,
pastix_complex64_t *  C 
)
inlinestatic

Compute the updates associated to one off-diagonal block between two cblk stored in 2D.

Parameters
[in]sideSpecify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the A matrix. It has to be either PastixTrans or PastixConjTrans.
[in]diagSpecify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]blok_mIndex of the first off-diagonal block in cblk that is solved. The TRSM is also applied to all the folowing blocks which are facing the same diagonal block
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
Return values
TODO

Definition at line 452 of file core_ztrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, and PastixKernelTRSMBlok2d.

Referenced by cpublok_ztrsmsp().

◆ core_ztrsmsp_lrsub()

static pastix_fixdbl_t core_ztrsmsp_lrsub ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
pastix_int_t  blok_m,
const pastix_lrblock_t lrA,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block between two cblk stored in low-rank format.

Parameters
[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]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]blok_mIndex of the first off-diagonal block in cblk that is solved. The TRSM is also applied to all the folowing blocks which are facing the same diagonal block
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in,out]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Return values
TODO

Definition at line 554 of file core_ztrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_zcompress(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelTRSMBlokLR, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by cpublok_ztrsmsp().

◆ core_strsmsp_1d()

static void core_strsmsp_1d ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
const float *  A,
float *  C 
)
inlinestatic

Apply all the trsm updates on a panel stored in 1D layout.

Parameters
[in]sideSpecify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the A matrix. It has to be either PastixTrans or PastixTrans.
[in]diagSpecify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.

Definition at line 72 of file core_strsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, and solver_cblk_s::stride.

◆ core_strsmsp_2d()

static void core_strsmsp_2d ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
const float *  A,
float *  C 
)
inlinestatic

Compute the updates associated to one off-diagonal block between two cblk stored in 2D.

Parameters
[in]sideSpecify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the A matrix. It has to be either PastixTrans or PastixTrans.
[in]diagSpecify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.

Definition at line 149 of file core_strsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, and pastix_int_t.

◆ core_strsmsp_lr()

static pastix_fixdbl_t core_strsmsp_lr ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
const pastix_lrblock_t lrA,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Computes the updates associated to one off-diagonal block between two cblk stored in low-rank format.

Parameters
[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]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 233 of file core_strsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_scompress(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.

◆ core_strsmsp_2dsub()

static pastix_fixdbl_t core_strsmsp_2dsub ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
pastix_int_t  blok_m,
const float *  A,
float *  C 
)
inlinestatic

Compute the updates associated to one off-diagonal block between two cblk stored in 2D.

Parameters
[in]sideSpecify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the A matrix. It has to be either PastixTrans or PastixTrans.
[in]diagSpecify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]blok_mIndex of the first off-diagonal block in cblk that is solved. The TRSM is also applied to all the folowing blocks which are facing the same diagonal block
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
Return values
TODO

Definition at line 452 of file core_strsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, and PastixKernelTRSMBlok2d.

Referenced by cpublok_strsmsp().

◆ core_strsmsp_lrsub()

static pastix_fixdbl_t core_strsmsp_lrsub ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
pastix_int_t  blok_m,
const pastix_lrblock_t lrA,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block between two cblk stored in low-rank format.

Parameters
[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]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]blok_mIndex of the first off-diagonal block in cblk that is solved. The TRSM is also applied to all the folowing blocks which are facing the same diagonal block
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in,out]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Return values
TODO

Definition at line 554 of file core_strsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_scompress(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelTRSMBlokLR, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by cpublok_strsmsp().

◆ core_dtrsmsp_1d()

static void core_dtrsmsp_1d ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
const double *  A,
double *  C 
)
inlinestatic

Apply all the trsm updates on a panel stored in 1D layout.

Parameters
[in]sideSpecify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the A matrix. It has to be either PastixTrans or PastixTrans.
[in]diagSpecify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.

Definition at line 72 of file core_dtrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, and solver_cblk_s::stride.

◆ core_dtrsmsp_2d()

static void core_dtrsmsp_2d ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
const double *  A,
double *  C 
)
inlinestatic

Compute the updates associated to one off-diagonal block between two cblk stored in 2D.

Parameters
[in]sideSpecify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the A matrix. It has to be either PastixTrans or PastixTrans.
[in]diagSpecify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.

Definition at line 149 of file core_dtrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, and pastix_int_t.

◆ core_dtrsmsp_lr()

static pastix_fixdbl_t core_dtrsmsp_lr ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
const pastix_lrblock_t lrA,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Computes the updates associated to one off-diagonal block between two cblk stored in low-rank format.

Parameters
[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]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 233 of file core_dtrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_dcompress(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.

◆ core_dtrsmsp_2dsub()

static pastix_fixdbl_t core_dtrsmsp_2dsub ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
pastix_int_t  blok_m,
const double *  A,
double *  C 
)
inlinestatic

Compute the updates associated to one off-diagonal block between two cblk stored in 2D.

Parameters
[in]sideSpecify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight.
[in]uploSpecify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower.
[in]transSpecify the transposition used for the A matrix. It has to be either PastixTrans or PastixTrans.
[in]diagSpecify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit.
[in]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]blok_mIndex of the first off-diagonal block in cblk that is solved. The TRSM is also applied to all the folowing blocks which are facing the same diagonal block
[in]AThe pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise.
Return values
TODO

Definition at line 452 of file core_dtrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, and PastixKernelTRSMBlok2d.

Referenced by cpublok_dtrsmsp().

◆ core_dtrsmsp_lrsub()

static pastix_fixdbl_t core_dtrsmsp_lrsub ( pastix_side_t  side,
pastix_uplo_t  uplo,
pastix_trans_t  trans,
pastix_diag_t  diag,
const SolverCblk cblk,
pastix_int_t  blok_m,
const pastix_lrblock_t lrA,
pastix_lrblock_t lrC,
const pastix_lr_t lowrank 
)
inlinestatic

Compute the updates associated to one off-diagonal block between two cblk stored in low-rank format.

Parameters
[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]cblkThe cblk structure to which block belongs to. The A and C pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1].
[in]blok_mIndex of the first off-diagonal block in cblk that is solved. The TRSM is also applied to all the folowing blocks which are facing the same diagonal block
[in]lrAPointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks.
[in,out]lrCPointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks.
[in]lowrankThe structure with low-rank parameters.
Return values
TODO

Definition at line 554 of file core_dtrsmsp.c.

References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_dcompress(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelTRSMBlokLR, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by cpublok_dtrsmsp().

◆ core_csytrfsp1d_gemm()

void core_csytrfsp1d_gemm ( const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_complex32_t L,
pastix_complex32_t C,
pastix_complex32_t work 
)

core_csytrfsp1d_gemm - Computes the LDL^t factorization of one panel and apply all the trsm updates to this panel.

Parameters
[in]cblkThe pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]blokThe pointer to the data structure that describes the blok from which we compute the contributions.
[in]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. Next column blok must be accessible through fcblk[1].
[in,out]LThe pointer to the matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the matrix storing the coefficients of the target.
[in,out]workTemporary buffer used in core_cgemdm().

Definition at line 316 of file core_csytrfsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_cgemdm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PASTIX_SUCCESS, PastixConjTrans, PastixNoTrans, and solver_cblk_s::stride.

Referenced by cpucblk_csytrfsp1d(), and cpucblk_csytrfsp1dplus_update().

◆ cpucblk_cpotrfsp1dplus()

int cpucblk_cpotrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 391 of file core_cpotrfsp.c.

References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_cpotrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.

Referenced by thread_cpotrf_dynamic().

◆ cpucblk_cpotrfsp1dplus_update()

void cpucblk_cpotrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
pastix_complex32_t work,
pastix_int_t  lwork 
)

Apply the updates of the cholesky factorisation of a given panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]blokPointer to the blok where the update start.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.

Definition at line 444 of file core_cpotrfsp.c.

References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_calloc(), cpucblk_cgemmsp(), cpucblk_crelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixConjTrans, and PastixLCoef.

Referenced by thread_cpotrf_dynamic().

◆ cpucblk_csytrfsp1dplus()

int cpucblk_csytrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 566 of file core_csytrfsp.c.

References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_csytrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.

Referenced by thread_csytrf_dynamic().

◆ cpucblk_csytrfsp1dplus_update()

void cpucblk_csytrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
pastix_complex32_t work 
)

Apply the updates of the LDL^t factorisation of a given panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]blokPointer to the blok where the update start.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.

Definition at line 619 of file core_csytrfsp.c.

References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_csytrfsp1d_gemm(), cpucblk_calloc(), cpucblk_crelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_cblk_s::lcoeftab, and PastixLCoef.

Referenced by thread_csytrf_dynamic().

◆ cpucblk_cgetrfsp1dplus()

int cpucblk_cgetrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the LU factorization of a given panel and submit tasks for the subsequent updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 421 of file core_cgetrfsp.c.

References solver_matrix_s::bloktab, cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_cgetrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.

Referenced by thread_cgetrf_dynamic().

◆ cpucblk_cgetrfsp1dplus_update()

void cpucblk_cgetrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
pastix_complex32_t work,
pastix_int_t  lwork 
)

Apply the updates of the LU factorisation of a given panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]blokPointer to the blok where the update start.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.

Definition at line 475 of file core_cgetrfsp.c.

References cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_calloc(), cpucblk_cgemmsp(), cpucblk_crelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, PastixLUCoef, PastixTrans, and PastixUCoef.

Referenced by thread_cgetrf_dynamic().

◆ core_ssytrfsp1d_gemm()

void core_ssytrfsp1d_gemm ( const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const float *  L,
float *  C,
float *  work 
)

core_ssytrfsp1d_gemm - Computes the LDL^t factorization of one panel and apply all the trsm updates to this panel.

Parameters
[in]cblkThe pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]blokThe pointer to the data structure that describes the blok from which we compute the contributions.
[in]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. Next column blok must be accessible through fcblk[1].
[in,out]LThe pointer to the matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the matrix storing the coefficients of the target.
[in,out]workTemporary buffer used in core_sgemdm().

Definition at line 316 of file core_ssytrfsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_sgemdm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PASTIX_SUCCESS, PastixNoTrans, PastixTrans, and solver_cblk_s::stride.

Referenced by cpucblk_ssytrfsp1d(), and cpucblk_ssytrfsp1dplus_update().

◆ cpucblk_spotrfsp1dplus()

int cpucblk_spotrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 391 of file core_spotrfsp.c.

References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_spotrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.

Referenced by thread_spotrf_dynamic().

◆ cpucblk_spotrfsp1dplus_update()

void cpucblk_spotrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
float *  work,
pastix_int_t  lwork 
)

Apply the updates of the cholesky factorisation of a given panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]blokPointer to the blok where the update start.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.

Definition at line 444 of file core_spotrfsp.c.

References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_salloc(), cpucblk_sgemmsp(), cpucblk_srelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, and PastixTrans.

Referenced by thread_spotrf_dynamic().

◆ cpucblk_ssytrfsp1dplus()

int cpucblk_ssytrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 566 of file core_ssytrfsp.c.

References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_ssytrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.

Referenced by thread_ssytrf_dynamic().

◆ cpucblk_ssytrfsp1dplus_update()

void cpucblk_ssytrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
float *  work 
)

Apply the updates of the LDL^t factorisation of a given panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]blokPointer to the blok where the update start.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.

Definition at line 619 of file core_ssytrfsp.c.

References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_ssytrfsp1d_gemm(), cpucblk_salloc(), cpucblk_srelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_cblk_s::lcoeftab, and PastixLCoef.

Referenced by thread_ssytrf_dynamic().

◆ cpucblk_sgetrfsp1dplus()

int cpucblk_sgetrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the LU factorization of a given panel and submit tasks for the subsequent updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 421 of file core_sgetrfsp.c.

References solver_matrix_s::bloktab, cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_sgetrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.

Referenced by thread_sgetrf_dynamic().

◆ cpucblk_sgetrfsp1dplus_update()

void cpucblk_sgetrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
float *  work,
pastix_int_t  lwork 
)

Apply the updates of the LU factorisation of a given panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]blokPointer to the blok where the update start.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.

Definition at line 475 of file core_sgetrfsp.c.

References cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_salloc(), cpucblk_sgemmsp(), cpucblk_srelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, PastixLUCoef, PastixTrans, and PastixUCoef.

Referenced by thread_sgetrf_dynamic().

◆ core_dsytrfsp1d_gemm()

void core_dsytrfsp1d_gemm ( const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const double *  L,
double *  C,
double *  work 
)

core_dsytrfsp1d_gemm - Computes the LDL^t factorization of one panel and apply all the trsm updates to this panel.

Parameters
[in]cblkThe pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]blokThe pointer to the data structure that describes the blok from which we compute the contributions.
[in]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. Next column blok must be accessible through fcblk[1].
[in,out]LThe pointer to the matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the matrix storing the coefficients of the target.
[in,out]workTemporary buffer used in core_dgemdm().

Definition at line 316 of file core_dsytrfsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_dgemdm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PASTIX_SUCCESS, PastixNoTrans, PastixTrans, and solver_cblk_s::stride.

Referenced by cpucblk_dsytrfsp1d(), and cpucblk_dsytrfsp1dplus_update().

◆ cpucblk_dpotrfsp1dplus()

int cpucblk_dpotrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 391 of file core_dpotrfsp.c.

References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_dpotrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.

Referenced by thread_dpotrf_dynamic().

◆ cpucblk_dpotrfsp1dplus_update()

void cpucblk_dpotrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
double *  work,
pastix_int_t  lwork 
)

Apply the updates of the cholesky factorisation of a given panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]blokPointer to the blok where the update start.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.

Definition at line 444 of file core_dpotrfsp.c.

References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_dalloc(), cpucblk_dgemmsp(), cpucblk_drelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, and PastixTrans.

Referenced by thread_dpotrf_dynamic().

◆ cpucblk_dsytrfsp1dplus()

int cpucblk_dsytrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 566 of file core_dsytrfsp.c.

References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_dsytrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.

Referenced by thread_dsytrf_dynamic().

◆ cpucblk_dsytrfsp1dplus_update()

void cpucblk_dsytrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
double *  work 
)

Apply the updates of the LDL^t factorisation of a given panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]blokPointer to the blok where the update start.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.

Definition at line 619 of file core_dsytrfsp.c.

References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_dsytrfsp1d_gemm(), cpucblk_dalloc(), cpucblk_drelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_cblk_s::lcoeftab, and PastixLCoef.

Referenced by thread_dsytrf_dynamic().

◆ cpucblk_dgetrfsp1dplus()

int cpucblk_dgetrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the LU factorization of a given panel and submit tasks for the subsequent updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 421 of file core_dgetrfsp.c.

References solver_matrix_s::bloktab, cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_dgetrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.

Referenced by thread_dgetrf_dynamic().

◆ cpucblk_dgetrfsp1dplus_update()

void cpucblk_dgetrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
double *  work,
pastix_int_t  lwork 
)

Apply the updates of the LU factorisation of a given panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]blokPointer to the blok where the update start.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.

Definition at line 475 of file core_dgetrfsp.c.

References cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_dalloc(), cpucblk_dgemmsp(), cpucblk_drelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, PastixLUCoef, PastixTrans, and PastixUCoef.

Referenced by thread_dgetrf_dynamic().

◆ core_zsytrfsp1d_gemm()

void core_zsytrfsp1d_gemm ( const SolverCblk cblk,
const SolverBlok blok,
SolverCblk fcblk,
const pastix_complex64_t *  L,
pastix_complex64_t *  C,
pastix_complex64_t *  work 
)

core_zsytrfsp1d_gemm - Computes the LDL^t factorization of one panel and apply all the trsm updates to this panel.

Parameters
[in]cblkThe pointer to the data structure that describes the panel from which we compute the contributions. Next column blok must be accessible through cblk[1].
[in]blokThe pointer to the data structure that describes the blok from which we compute the contributions.
[in]fcblkThe pointer to the data structure that describes the panel on which we compute the contributions. Next column blok must be accessible through fcblk[1].
[in,out]LThe pointer to the matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width
[in,out]CThe pointer to the matrix storing the coefficients of the target.
[in,out]workTemporary buffer used in core_zgemdm().

Definition at line 316 of file core_zsytrfsp.c.

References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_zgemdm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PASTIX_SUCCESS, PastixConjTrans, PastixNoTrans, and solver_cblk_s::stride.

Referenced by cpucblk_zsytrfsp1d(), and cpucblk_zsytrfsp1dplus_update().

◆ cpucblk_zpotrfsp1dplus()

int cpucblk_zpotrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 391 of file core_zpotrfsp.c.

References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zpotrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.

Referenced by thread_zpotrf_dynamic().

◆ cpucblk_zpotrfsp1dplus_update()

void cpucblk_zpotrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
pastix_complex64_t *  work,
pastix_int_t  lwork 
)

Apply the updates of the cholesky factorisation of a given panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]blokPointer to the blok where the update start.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.

Definition at line 444 of file core_zpotrfsp.c.

References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zalloc(), cpucblk_zgemmsp(), cpucblk_zrelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixConjTrans, and PastixLCoef.

Referenced by thread_zpotrf_dynamic().

◆ cpucblk_zsytrfsp1dplus()

int cpucblk_zsytrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 566 of file core_zsytrfsp.c.

References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zsytrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.

Referenced by thread_zsytrf_dynamic().

◆ cpucblk_zsytrfsp1dplus_update()

void cpucblk_zsytrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
pastix_complex64_t *  work 
)

Apply the updates of the LDL^t factorisation of a given panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]blokPointer to the blok where the update start.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.

Definition at line 619 of file core_zsytrfsp.c.

References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_zsytrfsp1d_gemm(), cpucblk_zalloc(), cpucblk_zrelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_cblk_s::lcoeftab, and PastixLCoef.

Referenced by thread_zsytrf_dynamic().

◆ cpucblk_zgetrfsp1dplus()

int cpucblk_zgetrfsp1dplus ( SolverMatrix solvmtx,
SolverCblk cblk 
)

Perform the LU factorization of a given panel and submit tasks for the subsequent updates.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]cblkPointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1].
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 421 of file core_zgetrfsp.c.

References solver_matrix_s::bloktab, cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zgetrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.

Referenced by thread_zgetrf_dynamic().

◆ cpucblk_zgetrfsp1dplus_update()

void cpucblk_zgetrfsp1dplus_update ( SolverMatrix solvmtx,
SolverBlok blok,
pastix_complex64_t *  work,
pastix_int_t  lwork 
)

Apply the updates of the LU factorisation of a given panel.

Parameters
[in]solvmtxSolver Matrix structure of the problem
[in]blokPointer to the blok where the update start.
[in]workTemporary memory buffer.
[in]lworkTemporary workspace dimension.

Definition at line 475 of file core_zgetrfsp.c.

References cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zalloc(), cpucblk_zgemmsp(), cpucblk_zrelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, PastixLUCoef, PastixTrans, and PastixUCoef.

Referenced by thread_zgetrf_dynamic().