PaStiX Handbook
6.4.0
|
Functions | |
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_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_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_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_ctrsmsp_1d (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const pastix_complex32_t *A, pastix_complex32_t *C) |
Apply all the trsm updates on a panel stored in 1D layout. More... | |
static void | core_ctrsmsp_2d (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const pastix_complex32_t *A, pastix_complex32_t *C) |
Compute the updates associated to one off-diagonal block between two cblk stored in 2D. More... | |
static pastix_fixdbl_t | core_ctrsmsp_lr (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const pastix_lrblock_t *lrA, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank) |
Computes the updates associated to one off-diagonal block between two cblk stored in low-rank format. More... | |
static pastix_fixdbl_t | core_ctrsmsp_2dsub (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t blok_m, const pastix_complex32_t *A, pastix_complex32_t *C) |
Compute the updates associated to one off-diagonal block between two cblk stored in 2D. More... | |
static pastix_fixdbl_t | core_ctrsmsp_lrsub (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t blok_m, const pastix_lrblock_t *lrA, pastix_lrblock_t *lrC, const pastix_lr_t *lowrank) |
Compute the updates associated to one off-diagonal block between two cblk stored in low-rank format. More... | |
static void | core_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... | |
void | core_csytrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex32_t *L, pastix_complex32_t *C, pastix_complex32_t *work) |
int | cpucblk_cpotrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_cpotrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex32_t *work, pastix_int_t lwork) |
Apply the updates of the cholesky factorisation of a given panel. More... | |
int | cpucblk_csytrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_csytrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex32_t *work) |
Apply the updates of the LDL^t factorisation of a given panel. More... | |
int | cpucblk_cgetrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the LU factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_cgetrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex32_t *work, pastix_int_t lwork) |
Apply the updates of the LU factorisation of a given panel. More... | |
void | core_ssytrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const float *L, float *C, float *work) |
int | cpucblk_spotrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_spotrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, float *work, pastix_int_t lwork) |
Apply the updates of the cholesky factorisation of a given panel. More... | |
int | cpucblk_ssytrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_ssytrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, float *work) |
Apply the updates of the LDL^t factorisation of a given panel. More... | |
int | cpucblk_sgetrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the LU factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_sgetrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, float *work, pastix_int_t lwork) |
Apply the updates of the LU factorisation of a given panel. More... | |
void | core_zsytrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex64_t *L, pastix_complex64_t *C, pastix_complex64_t *work) |
int | cpucblk_zpotrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_zpotrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex64_t *work, pastix_int_t lwork) |
Apply the updates of the cholesky factorisation of a given panel. More... | |
int | cpucblk_zsytrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_zsytrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex64_t *work) |
Apply the updates of the LDL^t factorisation of a given panel. More... | |
int | cpucblk_zgetrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the LU factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_zgetrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex64_t *work, pastix_int_t lwork) |
Apply the updates of the LU factorisation of a given panel. More... | |
void | core_dsytrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const double *L, double *C, double *work) |
int | cpucblk_dpotrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_dpotrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, double *work, pastix_int_t lwork) |
Apply the updates of the cholesky factorisation of a given panel. More... | |
int | cpucblk_dsytrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_dsytrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, double *work) |
Apply the updates of the LDL^t factorisation of a given panel. More... | |
int | cpucblk_dgetrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the LU factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_dgetrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, double *work, pastix_int_t lwork) |
Apply the updates of the LU factorisation of a given panel. More... | |
This module contains the three terms update functions for the LDL^t and LDL^h factorizations.
|
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.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
[in] | work | Temporary 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. |
Definition at line 106 of file core_dgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, pastix_int_t, PastixUCoef, and solver_cblk_s::stride.
Referenced by cpucblk_dgemmsp().
|
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.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk
Definition at line 264 of file core_dgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PastixUCoef, and solver_cblk_s::stride.
Referenced by cpucblk_dgemmsp().
|
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.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 404 of file core_dgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, and PastixUCoef.
Referenced by cpucblk_dgemmsp().
|
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.
[in] | trans | Specify the transposition used for the B matrices. It has to be either PastixTrans or PastixTrans. |
[in] | blok_mk | Index of the first off-diagonal block in cblk, that is used for A. |
[in] | blok_kn | Index of the first off-diagonal block in cblk, that is used for B. |
[in] | blok_mn | Index of the first off-diagonal block in fcblk, that is used for C. |
[in] | cblk | The 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] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 545 of file core_dgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, pastix_int_t, and PastixKernelGEMMBlok2d2d.
Referenced by cpublok_dgemmsp().
|
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
[in] | transB | Specify the transposition used for the B matrices. It has to be either PastixTrans or PastixTrans. |
[in] | blok_mk | Index of the first off-diagonal block in cblk, that is used for A. |
[in] | blok_kn | Index of the first off-diagonal block in cblk, that is used for B. |
[in] | blok_mn | Index of the first off-diagonal block in fcblk, that is used for C. |
[in] | cblk | The 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] | fcblk | The 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] | A | The 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] | B | The 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] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 712 of file core_dgemmsp.c.
References core_dlrmm_s::A, core_dlrmm_s::alpha, core_dlrmm_s::B, core_dlrmm_s::beta, blok_rownbr(), core_dlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_dlrmm_s::Cm, core_dlrmm_s::Cn, solver_blok_s::coefind, core_dlrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_dlrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_dlrmm_s::lock, core_dlrmm_s::lowrank, core_dlrmm_s::lwork, core_dlrmm_s::M, core_dlrmm_s::N, core_dlrmm_s::offx, core_dlrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_dlrmm_s::transA, core_dlrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_dlrmm_s::work.
Referenced by cpublok_dgemmsp().
|
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
[in] | transB | Specify the transposition used for the B matrices. It has to be either PastixTrans or PastixTrans. |
[in] | blok_mk | Index of the first off-diagonal block in cblk, that is used for A. |
[in] | blok_kn | Index of the first off-diagonal block in cblk, that is used for B. |
[in] | blok_mn | Index of the first off-diagonal block in fcblk, that is used for C. |
[in] | cblk | The 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] | fcblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in,out] | lrB | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in,out] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 901 of file core_dgemmsp.c.
References core_dlrmm_s::A, core_dlrmm_s::alpha, core_dlrmm_s::B, core_dlrmm_s::beta, blok_rownbr(), core_dlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_dlrmm_s::Cm, core_dlrmm_s::Cn, core_dlrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_dlrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_dlrmm_s::lock, core_dlrmm_s::lowrank, core_dlrmm_s::lwork, core_dlrmm_s::M, core_dlrmm_s::N, core_dlrmm_s::offx, core_dlrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, core_dlrmm_s::transA, core_dlrmm_s::transB, and core_dlrmm_s::work.
Referenced by cpublok_dgemmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | work | Temporary memory buffer. |
[in] | lwork | TODO |
[in] | lowrank | The structure with low-rank parameters. |
Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk
Definition at line 1074 of file core_dgemmsp.c.
References core_dlrmm_s::A, core_dlrmm_s::alpha, core_dlrmm_s::B, core_dlrmm_s::beta, blok_rownbr(), core_dlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_dlrmm_s::Cm, core_dlrmm_s::Cn, solver_blok_s::coefind, core_dlrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_dlrmm_s::K, solver_cblk_s::lock, core_dlrmm_s::lock, core_dlrmm_s::lowrank, core_dlrmm_s::lwork, core_dlrmm_s::M, core_dlrmm_s::N, core_dlrmm_s::offx, core_dlrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, core_dlrmm_s::transA, core_dlrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_dlrmm_s::work.
Referenced by cpucblk_dgemmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in] | lrB | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in] | lrC | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in] | work | Temporary memory buffer. |
[in] | lwork | TODO |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 1228 of file core_dgemmsp.c.
References core_dlrmm_s::A, core_dlrmm_s::alpha, core_dlrmm_s::B, core_dlrmm_s::beta, blok_rownbr(), core_dlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_dlrmm_s::Cm, core_dlrmm_s::Cn, core_dlrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_dlrmm_s::K, solver_cblk_s::lock, core_dlrmm_s::lock, core_dlrmm_s::lowrank, core_dlrmm_s::lwork, core_dlrmm_s::lwused, core_dlrmm_s::M, core_dlrmm_s::N, core_dlrmm_s::offx, core_dlrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, core_dlrmm_s::transA, core_dlrmm_s::transB, and core_dlrmm_s::work.
Referenced by cpucblk_dgemmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in] | lrB | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in,out] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
[in] | work | Temporary memory buffer. |
[in] | lwork | The length of work. On entry, if trans = PastixTrans lwork >= max(1, K*N). Otherwise lwork >= max(1, M*K). |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 1375 of file core_dgemmsp.c.
References core_dlrmm_s::A, core_dlrmm_s::alpha, core_dlrmm_s::B, core_dlrmm_s::beta, blok_rownbr(), core_dlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_dlrmm_s::Cm, core_dlrmm_s::Cn, solver_blok_s::coefind, core_dlrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_dlrmm_s::K, solver_cblk_s::lock, core_dlrmm_s::lock, core_dlrmm_s::lowrank, core_dlrmm_s::lwork, core_dlrmm_s::lwused, core_dlrmm_s::M, core_dlrmm_s::N, core_dlrmm_s::offx, core_dlrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_dlrmm_s::transA, core_dlrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_dlrmm_s::work.
Referenced by cpucblk_dgemmsp().
|
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.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
[in] | work | Temporary 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. |
Definition at line 106 of file core_zgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, pastix_int_t, PastixUCoef, and solver_cblk_s::stride.
Referenced by cpucblk_zgemmsp().
|
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.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk
Definition at line 264 of file core_zgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PastixUCoef, and solver_cblk_s::stride.
Referenced by cpucblk_zgemmsp().
|
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.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 404 of file core_zgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, and PastixUCoef.
Referenced by cpucblk_zgemmsp().
|
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.
[in] | trans | Specify the transposition used for the B matrices. It has to be either PastixTrans or PastixConjTrans. |
[in] | blok_mk | Index of the first off-diagonal block in cblk, that is used for A. |
[in] | blok_kn | Index of the first off-diagonal block in cblk, that is used for B. |
[in] | blok_mn | Index of the first off-diagonal block in fcblk, that is used for C. |
[in] | cblk | The 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] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 545 of file core_zgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, pastix_int_t, and PastixKernelGEMMBlok2d2d.
Referenced by cpublok_zgemmsp().
|
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
[in] | transB | Specify the transposition used for the B matrices. It has to be either PastixTrans or PastixConjTrans. |
[in] | blok_mk | Index of the first off-diagonal block in cblk, that is used for A. |
[in] | blok_kn | Index of the first off-diagonal block in cblk, that is used for B. |
[in] | blok_mn | Index of the first off-diagonal block in fcblk, that is used for C. |
[in] | cblk | The 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] | fcblk | The 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] | A | The 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] | B | The 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] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 712 of file core_zgemmsp.c.
References core_zlrmm_s::A, core_zlrmm_s::alpha, core_zlrmm_s::B, core_zlrmm_s::beta, blok_rownbr(), core_zlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_zlrmm_s::Cm, core_zlrmm_s::Cn, solver_blok_s::coefind, core_zlrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_zlrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_zlrmm_s::lock, core_zlrmm_s::lowrank, core_zlrmm_s::lwork, core_zlrmm_s::M, core_zlrmm_s::N, core_zlrmm_s::offx, core_zlrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_zlrmm_s::transA, core_zlrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_zlrmm_s::work.
Referenced by cpublok_zgemmsp().
|
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
[in] | transB | Specify the transposition used for the B matrices. It has to be either PastixTrans or PastixConjTrans. |
[in] | blok_mk | Index of the first off-diagonal block in cblk, that is used for A. |
[in] | blok_kn | Index of the first off-diagonal block in cblk, that is used for B. |
[in] | blok_mn | Index of the first off-diagonal block in fcblk, that is used for C. |
[in] | cblk | The 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] | fcblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in,out] | lrB | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in,out] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 901 of file core_zgemmsp.c.
References core_zlrmm_s::A, core_zlrmm_s::alpha, core_zlrmm_s::B, core_zlrmm_s::beta, blok_rownbr(), core_zlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_zlrmm_s::Cm, core_zlrmm_s::Cn, core_zlrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_zlrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_zlrmm_s::lock, core_zlrmm_s::lowrank, core_zlrmm_s::lwork, core_zlrmm_s::M, core_zlrmm_s::N, core_zlrmm_s::offx, core_zlrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, core_zlrmm_s::transA, core_zlrmm_s::transB, and core_zlrmm_s::work.
Referenced by cpublok_zgemmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | work | Temporary memory buffer. |
[in] | lwork | TODO |
[in] | lowrank | The structure with low-rank parameters. |
Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk
Definition at line 1074 of file core_zgemmsp.c.
References core_zlrmm_s::A, core_zlrmm_s::alpha, core_zlrmm_s::B, core_zlrmm_s::beta, blok_rownbr(), core_zlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_zlrmm_s::Cm, core_zlrmm_s::Cn, solver_blok_s::coefind, core_zlrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_zlrmm_s::K, solver_cblk_s::lock, core_zlrmm_s::lock, core_zlrmm_s::lowrank, core_zlrmm_s::lwork, core_zlrmm_s::M, core_zlrmm_s::N, core_zlrmm_s::offx, core_zlrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, core_zlrmm_s::transA, core_zlrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_zlrmm_s::work.
Referenced by cpucblk_zgemmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in] | lrB | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in] | lrC | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in] | work | Temporary memory buffer. |
[in] | lwork | TODO |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 1228 of file core_zgemmsp.c.
References core_zlrmm_s::A, core_zlrmm_s::alpha, core_zlrmm_s::B, core_zlrmm_s::beta, blok_rownbr(), core_zlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_zlrmm_s::Cm, core_zlrmm_s::Cn, core_zlrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_zlrmm_s::K, solver_cblk_s::lock, core_zlrmm_s::lock, core_zlrmm_s::lowrank, core_zlrmm_s::lwork, core_zlrmm_s::lwused, core_zlrmm_s::M, core_zlrmm_s::N, core_zlrmm_s::offx, core_zlrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, core_zlrmm_s::transA, core_zlrmm_s::transB, and core_zlrmm_s::work.
Referenced by cpucblk_zgemmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in] | lrB | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in,out] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
[in] | work | Temporary memory buffer. |
[in] | lwork | The length of work. On entry, if trans = PastixTrans lwork >= max(1, K*N). Otherwise lwork >= max(1, M*K). |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 1375 of file core_zgemmsp.c.
References core_zlrmm_s::A, core_zlrmm_s::alpha, core_zlrmm_s::B, core_zlrmm_s::beta, blok_rownbr(), core_zlrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_zlrmm_s::Cm, core_zlrmm_s::Cn, solver_blok_s::coefind, core_zlrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_zlrmm_s::K, solver_cblk_s::lock, core_zlrmm_s::lock, core_zlrmm_s::lowrank, core_zlrmm_s::lwork, core_zlrmm_s::lwused, core_zlrmm_s::M, core_zlrmm_s::N, core_zlrmm_s::offx, core_zlrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_zlrmm_s::transA, core_zlrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_zlrmm_s::work.
Referenced by cpucblk_zgemmsp().
|
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.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
[in] | work | Temporary 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. |
Definition at line 106 of file core_cgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, pastix_int_t, PastixUCoef, and solver_cblk_s::stride.
Referenced by cpucblk_cgemmsp().
|
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.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk
Definition at line 264 of file core_cgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PastixUCoef, and solver_cblk_s::stride.
Referenced by cpucblk_cgemmsp().
|
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.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 404 of file core_cgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, and PastixUCoef.
Referenced by cpucblk_cgemmsp().
|
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.
[in] | trans | Specify the transposition used for the B matrices. It has to be either PastixTrans or PastixConjTrans. |
[in] | blok_mk | Index of the first off-diagonal block in cblk, that is used for A. |
[in] | blok_kn | Index of the first off-diagonal block in cblk, that is used for B. |
[in] | blok_mn | Index of the first off-diagonal block in fcblk, that is used for C. |
[in] | cblk | The 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] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 545 of file core_cgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, pastix_int_t, and PastixKernelGEMMBlok2d2d.
Referenced by cpublok_cgemmsp().
|
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
[in] | transB | Specify the transposition used for the B matrices. It has to be either PastixTrans or PastixConjTrans. |
[in] | blok_mk | Index of the first off-diagonal block in cblk, that is used for A. |
[in] | blok_kn | Index of the first off-diagonal block in cblk, that is used for B. |
[in] | blok_mn | Index of the first off-diagonal block in fcblk, that is used for C. |
[in] | cblk | The 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] | fcblk | The 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] | A | The 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] | B | The 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] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 712 of file core_cgemmsp.c.
References core_clrmm_s::A, core_clrmm_s::alpha, core_clrmm_s::B, core_clrmm_s::beta, blok_rownbr(), core_clrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_clrmm_s::Cm, core_clrmm_s::Cn, solver_blok_s::coefind, core_clrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_clrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_clrmm_s::lock, core_clrmm_s::lowrank, core_clrmm_s::lwork, core_clrmm_s::M, core_clrmm_s::N, core_clrmm_s::offx, core_clrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_clrmm_s::transA, core_clrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_clrmm_s::work.
Referenced by cpublok_cgemmsp().
|
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
[in] | transB | Specify the transposition used for the B matrices. It has to be either PastixTrans or PastixConjTrans. |
[in] | blok_mk | Index of the first off-diagonal block in cblk, that is used for A. |
[in] | blok_kn | Index of the first off-diagonal block in cblk, that is used for B. |
[in] | blok_mn | Index of the first off-diagonal block in fcblk, that is used for C. |
[in] | cblk | The 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] | fcblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in,out] | lrB | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in,out] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 901 of file core_cgemmsp.c.
References core_clrmm_s::A, core_clrmm_s::alpha, core_clrmm_s::B, core_clrmm_s::beta, blok_rownbr(), core_clrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_clrmm_s::Cm, core_clrmm_s::Cn, core_clrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_clrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_clrmm_s::lock, core_clrmm_s::lowrank, core_clrmm_s::lwork, core_clrmm_s::M, core_clrmm_s::N, core_clrmm_s::offx, core_clrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, core_clrmm_s::transA, core_clrmm_s::transB, and core_clrmm_s::work.
Referenced by cpublok_cgemmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | work | Temporary memory buffer. |
[in] | lwork | TODO |
[in] | lowrank | The structure with low-rank parameters. |
Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk
Definition at line 1074 of file core_cgemmsp.c.
References core_clrmm_s::A, core_clrmm_s::alpha, core_clrmm_s::B, core_clrmm_s::beta, blok_rownbr(), core_clrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_clrmm_s::Cm, core_clrmm_s::Cn, solver_blok_s::coefind, core_clrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_clrmm_s::K, solver_cblk_s::lock, core_clrmm_s::lock, core_clrmm_s::lowrank, core_clrmm_s::lwork, core_clrmm_s::M, core_clrmm_s::N, core_clrmm_s::offx, core_clrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, core_clrmm_s::transA, core_clrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_clrmm_s::work.
Referenced by cpucblk_cgemmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in] | lrB | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in] | lrC | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in] | work | Temporary memory buffer. |
[in] | lwork | TODO |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 1228 of file core_cgemmsp.c.
References core_clrmm_s::A, core_clrmm_s::alpha, core_clrmm_s::B, core_clrmm_s::beta, blok_rownbr(), core_clrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_clrmm_s::Cm, core_clrmm_s::Cn, core_clrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_clrmm_s::K, solver_cblk_s::lock, core_clrmm_s::lock, core_clrmm_s::lowrank, core_clrmm_s::lwork, core_clrmm_s::lwused, core_clrmm_s::M, core_clrmm_s::N, core_clrmm_s::offx, core_clrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, core_clrmm_s::transA, core_clrmm_s::transB, and core_clrmm_s::work.
Referenced by cpucblk_cgemmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in] | lrB | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in,out] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
[in] | work | Temporary memory buffer. |
[in] | lwork | The length of work. On entry, if trans = PastixTrans lwork >= max(1, K*N). Otherwise lwork >= max(1, M*K). |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 1375 of file core_cgemmsp.c.
References core_clrmm_s::A, core_clrmm_s::alpha, core_clrmm_s::B, core_clrmm_s::beta, blok_rownbr(), core_clrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_clrmm_s::Cm, core_clrmm_s::Cn, solver_blok_s::coefind, core_clrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_clrmm_s::K, solver_cblk_s::lock, core_clrmm_s::lock, core_clrmm_s::lowrank, core_clrmm_s::lwork, core_clrmm_s::lwused, core_clrmm_s::M, core_clrmm_s::N, core_clrmm_s::offx, core_clrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_clrmm_s::transA, core_clrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_clrmm_s::work.
Referenced by cpucblk_cgemmsp().
|
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.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
[in] | work | Temporary 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. |
Definition at line 106 of file core_sgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, pastix_int_t, PastixUCoef, and solver_cblk_s::stride.
Referenced by cpucblk_sgemmsp().
|
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.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk
Definition at line 264 of file core_sgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PastixUCoef, and solver_cblk_s::stride.
Referenced by cpucblk_sgemmsp().
|
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.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 404 of file core_sgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, and PastixUCoef.
Referenced by cpucblk_sgemmsp().
|
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.
[in] | trans | Specify the transposition used for the B matrices. It has to be either PastixTrans or PastixTrans. |
[in] | blok_mk | Index of the first off-diagonal block in cblk, that is used for A. |
[in] | blok_kn | Index of the first off-diagonal block in cblk, that is used for B. |
[in] | blok_mn | Index of the first off-diagonal block in fcblk, that is used for C. |
[in] | cblk | The 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] | fcblk | The 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] | A | The 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] | B | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 545 of file core_sgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, pastix_int_t, and PastixKernelGEMMBlok2d2d.
Referenced by cpublok_sgemmsp().
|
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
[in] | transB | Specify the transposition used for the B matrices. It has to be either PastixTrans or PastixTrans. |
[in] | blok_mk | Index of the first off-diagonal block in cblk, that is used for A. |
[in] | blok_kn | Index of the first off-diagonal block in cblk, that is used for B. |
[in] | blok_mn | Index of the first off-diagonal block in fcblk, that is used for C. |
[in] | cblk | The 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] | fcblk | The 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] | A | The 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] | B | The 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] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 712 of file core_sgemmsp.c.
References core_slrmm_s::A, core_slrmm_s::alpha, core_slrmm_s::B, core_slrmm_s::beta, blok_rownbr(), core_slrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_slrmm_s::Cm, core_slrmm_s::Cn, solver_blok_s::coefind, core_slrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_slrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_slrmm_s::lock, core_slrmm_s::lowrank, core_slrmm_s::lwork, core_slrmm_s::M, core_slrmm_s::N, core_slrmm_s::offx, core_slrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_slrmm_s::transA, core_slrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_slrmm_s::work.
Referenced by cpublok_sgemmsp().
|
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
[in] | transB | Specify the transposition used for the B matrices. It has to be either PastixTrans or PastixTrans. |
[in] | blok_mk | Index of the first off-diagonal block in cblk, that is used for A. |
[in] | blok_kn | Index of the first off-diagonal block in cblk, that is used for B. |
[in] | blok_mn | Index of the first off-diagonal block in fcblk, that is used for C. |
[in] | cblk | The 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] | fcblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in,out] | lrB | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in,out] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 901 of file core_sgemmsp.c.
References core_slrmm_s::A, core_slrmm_s::alpha, core_slrmm_s::B, core_slrmm_s::beta, blok_rownbr(), core_slrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_slrmm_s::Cm, core_slrmm_s::Cn, core_slrmm(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_blok_s::inlast, is_block_inside_fblock(), core_slrmm_s::K, kernel_trace_start(), kernel_trace_stop(), solver_blok_s::lcblknm, core_slrmm_s::lock, core_slrmm_s::lowrank, core_slrmm_s::lwork, core_slrmm_s::M, core_slrmm_s::N, core_slrmm_s::offx, core_slrmm_s::offy, pastix_int_t, PastixKernelGEMMBlok2d2d, PastixKernelGEMMBlokLRLR, PastixNoTrans, core_slrmm_s::transA, core_slrmm_s::transB, and core_slrmm_s::work.
Referenced by cpublok_sgemmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | A | The 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] | B | The 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] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | work | Temporary memory buffer. |
[in] | lwork | TODO |
[in] | lowrank | The structure with low-rank parameters. |
Add contribution to C in fcblk: Get the first facing block of the distant panel, and the last block of the current cblk
Definition at line 1074 of file core_sgemmsp.c.
References core_slrmm_s::A, core_slrmm_s::alpha, core_slrmm_s::B, core_slrmm_s::beta, blok_rownbr(), core_slrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_slrmm_s::Cm, core_slrmm_s::Cn, solver_blok_s::coefind, core_slrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_slrmm_s::K, solver_cblk_s::lock, core_slrmm_s::lock, core_slrmm_s::lowrank, core_slrmm_s::lwork, core_slrmm_s::M, core_slrmm_s::N, core_slrmm_s::offx, core_slrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, core_slrmm_s::transA, core_slrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_slrmm_s::work.
Referenced by cpucblk_sgemmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in] | lrB | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in] | lrC | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in] | work | Temporary memory buffer. |
[in] | lwork | TODO |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 1228 of file core_sgemmsp.c.
References core_slrmm_s::A, core_slrmm_s::alpha, core_slrmm_s::B, core_slrmm_s::beta, blok_rownbr(), core_slrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_slrmm_s::Cm, core_slrmm_s::Cn, core_slrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_slrmm_s::K, solver_cblk_s::lock, core_slrmm_s::lock, core_slrmm_s::lowrank, core_slrmm_s::lwork, core_slrmm_s::lwused, core_slrmm_s::M, core_slrmm_s::N, core_slrmm_s::offx, core_slrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, core_slrmm_s::transA, core_slrmm_s::transB, and core_slrmm_s::work.
Referenced by cpucblk_sgemmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block.
[in] | sideA | Specify 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] | trans | Specify the transposition used for the B matrix. It has to be either PastixTrans or PastixTrans. |
[in] | cblk | The 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] | blok | The block from which we compute the contributions. |
[in,out] | fcblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in] | lrB | Pointer to the low-rank representation of the block B. Must be followed by the low-rank representation of the following blocks. |
[in,out] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
[in] | work | Temporary memory buffer. |
[in] | lwork | The length of work. On entry, if trans = PastixTrans lwork >= max(1, K*N). Otherwise lwork >= max(1, M*K). |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 1375 of file core_sgemmsp.c.
References core_slrmm_s::A, core_slrmm_s::alpha, core_slrmm_s::B, core_slrmm_s::beta, blok_rownbr(), core_slrmm_s::C, cblk_colnbr(), solver_cblk_s::cblktype, core_slrmm_s::Cm, core_slrmm_s::Cn, solver_blok_s::coefind, core_slrmm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), core_slrmm_s::K, solver_cblk_s::lock, core_slrmm_s::lock, core_slrmm_s::lowrank, core_slrmm_s::lwork, core_slrmm_s::lwused, core_slrmm_s::M, core_slrmm_s::N, core_slrmm_s::offx, core_slrmm_s::offy, pastix_int_t, PastixNoTrans, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, core_slrmm_s::transA, core_slrmm_s::transB, pastix_lrblock_s::u, pastix_lrblock_s::v, and core_slrmm_s::work.
Referenced by cpucblk_sgemmsp().
|
inlinestatic |
Apply all the trsm updates on a panel stored in 1D layout.
[in] | side | Specify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the A matrix. It has to be either PastixTrans or PastixTrans. |
[in] | diag | Specify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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] | A | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 72 of file core_dtrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, and solver_cblk_s::stride.
|
inlinestatic |
Compute the updates associated to one off-diagonal block between two cblk stored in 2D.
[in] | side | Specify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the A matrix. It has to be either PastixTrans or PastixTrans. |
[in] | diag | Specify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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] | A | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 149 of file core_dtrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, and pastix_int_t.
|
inlinestatic |
Computes the updates associated to one off-diagonal block between two cblk stored in low-rank format.
[in] | side | Specify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixTrans. |
[in] | diag | Specify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 233 of file core_dtrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_dcompress(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.
|
inlinestatic |
Compute the updates associated to one off-diagonal block between two cblk stored in 2D.
[in] | side | Specify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the A matrix. It has to be either PastixTrans or PastixTrans. |
[in] | diag | Specify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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_m | Index 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] | A | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
TODO |
Definition at line 452 of file core_dtrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, and PastixKernelTRSMBlok2d.
Referenced by cpublok_dtrsmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block between two cblk stored in low-rank format.
[in] | side | Specify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixTrans. |
[in] | diag | Specify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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_m | Index 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in,out] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
TODO |
Definition at line 554 of file core_dtrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_dcompress(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelTRSMBlokLR, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by cpublok_dtrsmsp().
|
inlinestatic |
Apply all the trsm updates on a panel stored in 1D layout.
[in] | side | Specify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the A matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | diag | Specify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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] | A | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 72 of file core_ztrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, and solver_cblk_s::stride.
|
inlinestatic |
Compute the updates associated to one off-diagonal block between two cblk stored in 2D.
[in] | side | Specify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the A matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | diag | Specify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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] | A | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 149 of file core_ztrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, and pastix_int_t.
|
inlinestatic |
Computes the updates associated to one off-diagonal block between two cblk stored in low-rank format.
[in] | side | Specify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixConjTrans. |
[in] | diag | Specify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 233 of file core_ztrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_zcompress(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.
|
inlinestatic |
Compute the updates associated to one off-diagonal block between two cblk stored in 2D.
[in] | side | Specify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the A matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | diag | Specify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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_m | Index 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] | A | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
TODO |
Definition at line 452 of file core_ztrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, and PastixKernelTRSMBlok2d.
Referenced by cpublok_ztrsmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block between two cblk stored in low-rank format.
[in] | side | Specify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixConjTrans. |
[in] | diag | Specify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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_m | Index 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in,out] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
TODO |
Definition at line 554 of file core_ztrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_zcompress(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelTRSMBlokLR, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by cpublok_ztrsmsp().
|
inlinestatic |
Apply all the trsm updates on a panel stored in 1D layout.
[in] | side | Specify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the A matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | diag | Specify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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] | A | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 72 of file core_ctrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, and solver_cblk_s::stride.
|
inlinestatic |
Compute the updates associated to one off-diagonal block between two cblk stored in 2D.
[in] | side | Specify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the A matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | diag | Specify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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] | A | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 149 of file core_ctrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, and pastix_int_t.
|
inlinestatic |
Computes the updates associated to one off-diagonal block between two cblk stored in low-rank format.
[in] | side | Specify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixConjTrans. |
[in] | diag | Specify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 233 of file core_ctrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_ccompress(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.
|
inlinestatic |
Compute the updates associated to one off-diagonal block between two cblk stored in 2D.
[in] | side | Specify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the A matrix. It has to be either PastixTrans or PastixConjTrans. |
[in] | diag | Specify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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_m | Index 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] | A | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
TODO |
Definition at line 452 of file core_ctrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, and PastixKernelTRSMBlok2d.
Referenced by cpublok_ctrsmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block between two cblk stored in low-rank format.
[in] | side | Specify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixConjTrans. |
[in] | diag | Specify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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_m | Index 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in,out] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
TODO |
Definition at line 554 of file core_ctrsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_ccompress(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelTRSMBlokLR, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by cpublok_ctrsmsp().
|
inlinestatic |
Apply all the trsm updates on a panel stored in 1D layout.
[in] | side | Specify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the A matrix. It has to be either PastixTrans or PastixTrans. |
[in] | diag | Specify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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] | A | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 72 of file core_strsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, pastix_int_t, and solver_cblk_s::stride.
|
inlinestatic |
Compute the updates associated to one off-diagonal block between two cblk stored in 2D.
[in] | side | Specify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the A matrix. It has to be either PastixTrans or PastixTrans. |
[in] | diag | Specify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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] | A | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
Definition at line 149 of file core_strsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_cblk_s::lcolnum, and pastix_int_t.
|
inlinestatic |
Computes the updates associated to one off-diagonal block between two cblk stored in low-rank format.
[in] | side | Specify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixTrans. |
[in] | diag | Specify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 233 of file core_strsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_scompress(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_cblk_s::lcolnum, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.
|
inlinestatic |
Compute the updates associated to one off-diagonal block between two cblk stored in 2D.
[in] | side | Specify whether the A matrix appears on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the A matrix is upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the A matrix. It has to be either PastixTrans or PastixTrans. |
[in] | diag | Specify if the A matrix is unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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_m | Index 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] | A | The 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] | C | The pointer to the fcblk.lcoeftab if the lower part is computed, fcblk.ucoeftab otherwise. |
TODO |
Definition at line 452 of file core_strsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, and PastixKernelTRSMBlok2d.
Referenced by cpublok_strsmsp().
|
inlinestatic |
Compute the updates associated to one off-diagonal block between two cblk stored in low-rank format.
[in] | side | Specify whether the off-diagonal blocks appear on the left or right in the equation. It has to be either PastixLeft or PastixRight. |
[in] | uplo | Specify whether the off-diagonal blocks are upper or lower triangular. It has to be either PastixUpper or PastixLower. |
[in] | trans | Specify the transposition used for the off-diagonal blocks. It has to be either PastixTrans or PastixTrans. |
[in] | diag | Specify if the off-diagonal blocks are unit triangular. It has to be either PastixUnit or PastixNonUnit. |
[in] | cblk | The 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_m | Index 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] | lrA | Pointer to the low-rank representation of the block A. Must be followed by the low-rank representation of the following blocks. |
[in,out] | lrC | Pointer to the low-rank representation of the block C. Must be followed by the low-rank representation of the following blocks. |
[in] | lowrank | The structure with low-rank parameters. |
TODO |
Definition at line 554 of file core_strsmsp.c.
References blok_rownbr(), solver_cblk_s::cblktype, pastix_lr_s::compress_min_height, pastix_lr_s::compress_min_width, pastix_lr_s::compress_preselect, cpublok_scompress(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_cblk_s::fcolnum, pastix_lr_s::ilu_lvl, solver_blok_s::iluklvl, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelTRSMBlokLR, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by cpublok_strsmsp().
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.
[in] | cblk | 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] | blok | The pointer to the data structure that describes the blok from which we compute the contributions. |
[in] | fcblk | The 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] | L | The pointer to the matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width |
[in,out] | C | The pointer to the matrix storing the coefficients of the target. |
[in,out] | work | Temporary buffer used in core_cgemdm(). |
Definition at line 316 of file core_csytrfsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_cgemdm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PASTIX_SUCCESS, PastixConjTrans, PastixNoTrans, and solver_cblk_s::stride.
Referenced by cpucblk_csytrfsp1d(), and cpucblk_csytrfsp1dplus_update().
int cpucblk_cpotrfsp1dplus | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk | ||
) |
Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
Definition at line 391 of file core_cpotrfsp.c.
References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_cpotrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by thread_cpotrf_dynamic().
void cpucblk_cpotrfsp1dplus_update | ( | SolverMatrix * | solvmtx, |
SolverBlok * | blok, | ||
pastix_complex32_t * | work, | ||
pastix_int_t | lwork | ||
) |
Apply the updates of the cholesky factorisation of a given panel.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | blok | Pointer to the blok where the update start. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 444 of file core_cpotrfsp.c.
References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_calloc(), cpucblk_cgemmsp(), cpucblk_crelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixConjTrans, and PastixLCoef.
Referenced by thread_cpotrf_dynamic().
int cpucblk_csytrfsp1dplus | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk | ||
) |
Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
Definition at line 566 of file core_csytrfsp.c.
References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_csytrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by thread_csytrf_dynamic().
void cpucblk_csytrfsp1dplus_update | ( | SolverMatrix * | solvmtx, |
SolverBlok * | blok, | ||
pastix_complex32_t * | work | ||
) |
Apply the updates of the LDL^t factorisation of a given panel.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | blok | Pointer to the blok where the update start. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 619 of file core_csytrfsp.c.
References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_csytrfsp1d_gemm(), cpucblk_calloc(), cpucblk_crelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_cblk_s::lcoeftab, and PastixLCoef.
Referenced by thread_csytrf_dynamic().
int cpucblk_cgetrfsp1dplus | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk | ||
) |
Perform the LU factorization of a given panel and submit tasks for the subsequent updates.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
Definition at line 421 of file core_cgetrfsp.c.
References solver_matrix_s::bloktab, cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_cgetrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by thread_cgetrf_dynamic().
void cpucblk_cgetrfsp1dplus_update | ( | SolverMatrix * | solvmtx, |
SolverBlok * | blok, | ||
pastix_complex32_t * | work, | ||
pastix_int_t | lwork | ||
) |
Apply the updates of the LU factorisation of a given panel.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | blok | Pointer to the blok where the update start. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 475 of file core_cgetrfsp.c.
References cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_calloc(), cpucblk_cgemmsp(), cpucblk_crelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, PastixLUCoef, PastixTrans, and PastixUCoef.
Referenced by thread_cgetrf_dynamic().
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.
[in] | cblk | 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] | blok | The pointer to the data structure that describes the blok from which we compute the contributions. |
[in] | fcblk | The 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] | L | The pointer to the matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width |
[in,out] | C | The pointer to the matrix storing the coefficients of the target. |
[in,out] | work | Temporary buffer used in core_sgemdm(). |
Definition at line 316 of file core_ssytrfsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_sgemdm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PASTIX_SUCCESS, PastixNoTrans, PastixTrans, and solver_cblk_s::stride.
Referenced by cpucblk_ssytrfsp1d(), and cpucblk_ssytrfsp1dplus_update().
int cpucblk_spotrfsp1dplus | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk | ||
) |
Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
Definition at line 391 of file core_spotrfsp.c.
References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_spotrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by thread_spotrf_dynamic().
void cpucblk_spotrfsp1dplus_update | ( | SolverMatrix * | solvmtx, |
SolverBlok * | blok, | ||
float * | work, | ||
pastix_int_t | lwork | ||
) |
Apply the updates of the cholesky factorisation of a given panel.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | blok | Pointer to the blok where the update start. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 444 of file core_spotrfsp.c.
References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_salloc(), cpucblk_sgemmsp(), cpucblk_srelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, and PastixTrans.
Referenced by thread_spotrf_dynamic().
int cpucblk_ssytrfsp1dplus | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk | ||
) |
Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
Definition at line 566 of file core_ssytrfsp.c.
References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_ssytrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by thread_ssytrf_dynamic().
void cpucblk_ssytrfsp1dplus_update | ( | SolverMatrix * | solvmtx, |
SolverBlok * | blok, | ||
float * | work | ||
) |
Apply the updates of the LDL^t factorisation of a given panel.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | blok | Pointer to the blok where the update start. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 619 of file core_ssytrfsp.c.
References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_ssytrfsp1d_gemm(), cpucblk_salloc(), cpucblk_srelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_cblk_s::lcoeftab, and PastixLCoef.
Referenced by thread_ssytrf_dynamic().
int cpucblk_sgetrfsp1dplus | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk | ||
) |
Perform the LU factorization of a given panel and submit tasks for the subsequent updates.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
Definition at line 421 of file core_sgetrfsp.c.
References solver_matrix_s::bloktab, cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_sgetrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by thread_sgetrf_dynamic().
void cpucblk_sgetrfsp1dplus_update | ( | SolverMatrix * | solvmtx, |
SolverBlok * | blok, | ||
float * | work, | ||
pastix_int_t | lwork | ||
) |
Apply the updates of the LU factorisation of a given panel.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | blok | Pointer to the blok where the update start. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 475 of file core_sgetrfsp.c.
References cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_salloc(), cpucblk_sgemmsp(), cpucblk_srelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, PastixLUCoef, PastixTrans, and PastixUCoef.
Referenced by thread_sgetrf_dynamic().
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.
[in] | cblk | 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] | blok | The pointer to the data structure that describes the blok from which we compute the contributions. |
[in] | fcblk | The 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] | L | The pointer to the matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width |
[in,out] | C | The pointer to the matrix storing the coefficients of the target. |
[in,out] | work | Temporary buffer used in core_zgemdm(). |
Definition at line 316 of file core_zsytrfsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_zgemdm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PASTIX_SUCCESS, PastixConjTrans, PastixNoTrans, and solver_cblk_s::stride.
Referenced by cpucblk_zsytrfsp1d(), and cpucblk_zsytrfsp1dplus_update().
int cpucblk_zpotrfsp1dplus | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk | ||
) |
Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
Definition at line 391 of file core_zpotrfsp.c.
References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zpotrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by thread_zpotrf_dynamic().
void cpucblk_zpotrfsp1dplus_update | ( | SolverMatrix * | solvmtx, |
SolverBlok * | blok, | ||
pastix_complex64_t * | work, | ||
pastix_int_t | lwork | ||
) |
Apply the updates of the cholesky factorisation of a given panel.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | blok | Pointer to the blok where the update start. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 444 of file core_zpotrfsp.c.
References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zalloc(), cpucblk_zgemmsp(), cpucblk_zrelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixConjTrans, and PastixLCoef.
Referenced by thread_zpotrf_dynamic().
int cpucblk_zsytrfsp1dplus | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk | ||
) |
Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
Definition at line 566 of file core_zsytrfsp.c.
References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zsytrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by thread_zsytrf_dynamic().
void cpucblk_zsytrfsp1dplus_update | ( | SolverMatrix * | solvmtx, |
SolverBlok * | blok, | ||
pastix_complex64_t * | work | ||
) |
Apply the updates of the LDL^t factorisation of a given panel.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | blok | Pointer to the blok where the update start. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 619 of file core_zsytrfsp.c.
References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_zsytrfsp1d_gemm(), cpucblk_zalloc(), cpucblk_zrelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_cblk_s::lcoeftab, and PastixLCoef.
Referenced by thread_zsytrf_dynamic().
int cpucblk_zgetrfsp1dplus | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk | ||
) |
Perform the LU factorization of a given panel and submit tasks for the subsequent updates.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
Definition at line 421 of file core_zgetrfsp.c.
References solver_matrix_s::bloktab, cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zgetrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by thread_zgetrf_dynamic().
void cpucblk_zgetrfsp1dplus_update | ( | SolverMatrix * | solvmtx, |
SolverBlok * | blok, | ||
pastix_complex64_t * | work, | ||
pastix_int_t | lwork | ||
) |
Apply the updates of the LU factorisation of a given panel.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | blok | Pointer to the blok where the update start. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 475 of file core_zgetrfsp.c.
References cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zalloc(), cpucblk_zgemmsp(), cpucblk_zrelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, PastixLUCoef, PastixTrans, and PastixUCoef.
Referenced by thread_zgetrf_dynamic().
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.
[in] | cblk | 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] | blok | The pointer to the data structure that describes the blok from which we compute the contributions. |
[in] | fcblk | The 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] | L | The pointer to the matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width |
[in,out] | C | The pointer to the matrix storing the coefficients of the target. |
[in,out] | work | Temporary buffer used in core_dgemdm(). |
Definition at line 316 of file core_dsytrfsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_dgemdm(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), pastix_int_t, PASTIX_SUCCESS, PastixNoTrans, PastixTrans, and solver_cblk_s::stride.
Referenced by cpucblk_dsytrfsp1d(), and cpucblk_dsytrfsp1dplus_update().
int cpucblk_dpotrfsp1dplus | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk | ||
) |
Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
Definition at line 391 of file core_dpotrfsp.c.
References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_dpotrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by thread_dpotrf_dynamic().
void cpucblk_dpotrfsp1dplus_update | ( | SolverMatrix * | solvmtx, |
SolverBlok * | blok, | ||
double * | work, | ||
pastix_int_t | lwork | ||
) |
Apply the updates of the cholesky factorisation of a given panel.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | blok | Pointer to the blok where the update start. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 444 of file core_dpotrfsp.c.
References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_dalloc(), cpucblk_dgemmsp(), cpucblk_drelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, and PastixTrans.
Referenced by thread_dpotrf_dynamic().
int cpucblk_dsytrfsp1dplus | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk | ||
) |
Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
Definition at line 566 of file core_dsytrfsp.c.
References solver_matrix_s::bloktab, cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_dsytrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by thread_dsytrf_dynamic().
void cpucblk_dsytrfsp1dplus_update | ( | SolverMatrix * | solvmtx, |
SolverBlok * | blok, | ||
double * | work | ||
) |
Apply the updates of the LDL^t factorisation of a given panel.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | blok | Pointer to the blok where the update start. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 619 of file core_dsytrfsp.c.
References cblk_getdataL(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_dsytrfsp1d_gemm(), cpucblk_dalloc(), cpucblk_drelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_cblk_s::lcoeftab, and PastixLCoef.
Referenced by thread_dsytrf_dynamic().
int cpucblk_dgetrfsp1dplus | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk | ||
) |
Perform the LU factorization of a given panel and submit tasks for the subsequent updates.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
Definition at line 421 of file core_dgetrfsp.c.
References solver_matrix_s::bloktab, cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_dgetrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by thread_dgetrf_dynamic().
void cpucblk_dgetrfsp1dplus_update | ( | SolverMatrix * | solvmtx, |
SolverBlok * | blok, | ||
double * | work, | ||
pastix_int_t | lwork | ||
) |
Apply the updates of the LU factorisation of a given panel.
[in] | solvmtx | Solver Matrix structure of the problem |
[in] | blok | Pointer to the blok where the update start. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 475 of file core_dgetrfsp.c.
References cblk_getdataL(), cblk_getdataU(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_dalloc(), cpucblk_dgemmsp(), cpucblk_drelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::lcblknm, solver_matrix_s::lowrank, PastixLCoef, PastixLUCoef, PastixTrans, and PastixUCoef.
Referenced by thread_dgetrf_dynamic().