PaStiX Handbook  6.2.1

Functions

void core_ssytrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const float *L, float *C, float *work)
 
void core_dsytrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const double *L, double *C, double *work)
 
void core_chetrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex32_t *L, pastix_complex32_t *C, pastix_complex32_t *work)
 
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)
 
void core_zhetrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex64_t *L, pastix_complex64_t *C, pastix_complex64_t *work)
 
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)
 
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_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_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_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...
 
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_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...
 

Detailed Description

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

Function Documentation

◆ 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().
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 319 of file core_ssytrfsp.c.

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

◆ 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().
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 319 of file core_dsytrfsp.c.

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

◆ core_chetrfsp1d_gemm()

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

core_chetrfsp1d_gemm - Computes the LDL^h 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().
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 321 of file core_chetrfsp.c.

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

◆ 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().
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 319 of file core_csytrfsp.c.

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

◆ core_zhetrfsp1d_gemm()

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

core_zhetrfsp1d_gemm - Computes the LDL^h 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().
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 321 of file core_zhetrfsp.c.

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

◆ 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().
Returns
The number of static pivoting during factorization of the diagonal block.

Definition at line 319 of file core_zsytrfsp.c.

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

◆ 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 104 of file core_dgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 261 of file core_dgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 400 of file core_dgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 540 of file core_dgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 706 of file core_dgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 894 of file core_dgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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]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 1063 of file core_dgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 1214 of file core_dgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 1361 of file core_dgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 104 of file core_zgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 261 of file core_zgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 400 of file core_zgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 540 of file core_zgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 706 of file core_zgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 894 of file core_zgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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]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 1063 of file core_zgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 1214 of file core_zgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 1361 of file core_zgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 104 of file core_sgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 261 of file core_sgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 400 of file core_sgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 540 of file core_sgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 706 of file core_sgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 894 of file core_sgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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]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 1063 of file core_sgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 1214 of file core_sgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 1361 of file core_sgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 104 of file core_cgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 261 of file core_cgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 400 of file core_cgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 540 of file core_cgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 706 of file core_cgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 894 of file core_cgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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]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 1063 of file core_cgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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]lowrankThe structure with low-rank parameters.
Returns
The number of flops performed

Definition at line 1214 of file core_cgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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 1361 of file core_cgemmsp.c.

References solver_cblk_s::cblktype.

◆ 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_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, 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_cblk_s::fblokptr, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.

◆ 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, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, 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.

Definition at line 448 of file core_dtrsmsp.c.

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

◆ 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.

Definition at line 546 of file core_dtrsmsp.c.

References solver_cblk_s::cblktype, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.

◆ 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_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, 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_cblk_s::fblokptr, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.

◆ 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, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, 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.

Definition at line 448 of file core_ztrsmsp.c.

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

◆ 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.

Definition at line 546 of file core_ztrsmsp.c.

References solver_cblk_s::cblktype, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.

◆ 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_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, 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_cblk_s::fblokptr, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.

◆ 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, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, 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.

Definition at line 448 of file core_strsmsp.c.

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

◆ 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.

Definition at line 546 of file core_strsmsp.c.

References solver_cblk_s::cblktype, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.

◆ 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_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, 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_cblk_s::fblokptr, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.

◆ 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, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, 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.

Definition at line 448 of file core_ctrsmsp.c.

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

◆ 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.

Definition at line 546 of file core_ctrsmsp.c.

References solver_cblk_s::cblktype, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.