PaStiX Handbook
6.2.1
|
Modules | |
Internal functions for numerical factorization kernels | |
Solve kernels | |
PastixFloat cblk-BLAS CPU kernels | |
int | cpucblk_sgeaddsp1d (const SolverCblk *cblk1, SolverCblk *cblk2, const float *L1, float *L2, const float *U1, float *U2) |
Add two column blocks together. More... | |
pastix_fixdbl_t | cpucblk_sgemmsp (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const void *A, const void *B, void *C, float *work, pastix_int_t lwork, const pastix_lr_t *lowrank) |
Compute the updates associated to one off-diagonal block. More... | |
void | cpucblk_strsmsp (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const void *A, void *C, const pastix_lr_t *lowrank) |
Compute the updates associated to a column of off-diagonal blocks. More... | |
void | cpucblk_sscalo (pastix_trans_t trans, SolverCblk *cblk, void *dataL, void *dataLD) |
Copy the L term with scaling for the two-terms algorithm. More... | |
pastix_fixdbl_t | cpublok_sgemmsp (pastix_trans_t trans, const SolverCblk *cblk, SolverCblk *fcblk, pastix_int_t blok_mk, pastix_int_t blok_nk, pastix_int_t blok_mn, const void *A, const void *B, void *C, const pastix_lr_t *lowrank) |
Compute the CPU gemm associated to a couple of off-diagonal blocks. More... | |
pastix_fixdbl_t | cpublok_strsmsp (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 void *A, void *C, const pastix_lr_t *lowrank) |
Compute the updates associated to one off-diagonal block. More... | |
void | cpublok_sscalo (pastix_trans_t trans, SolverCblk *cblk, pastix_int_t blok_m, const void *A, const void *dataD, void *dataB) |
Copy the lower terms of the block with scaling for the two-terms algorithm. More... | |
PastixFloat cblk LU kernels | |
int | cpucblk_sgetrfsp1d_getrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *U) |
Compute the LU factorization of the diagonal block in a panel. More... | |
int | cpucblk_sgetrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *U) |
Compute the LU factorization of one panel. More... | |
int | cpucblk_sgetrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, float *work, pastix_int_t lwork) |
Perform the LU factorization of a given panel and apply all its updates. More... | |
PastixFloat cblk Cholesky kernels | |
int | cpucblk_spotrfsp1d_potrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
Compute the Cholesky factorization of the diagonal block in a panel. More... | |
int | cpucblk_spotrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
Compute the Cholesky factorization of one panel. More... | |
int | cpucblk_spotrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, float *work, pastix_int_t lwork) |
Perform the Cholesky factorization of a given panel and apply all its updates. More... | |
PastixFloat cblk LDL^h kernels | |
int | cpucblk_ssytrfsp1d_sytrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *L) |
Computes the LDL^t factorization of the diagonal block in a panel. More... | |
int | cpucblk_ssytrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *DLh) |
Compute the LDL^t factorization of one panel. More... | |
int | cpucblk_ssytrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, float *work1, float *work2, pastix_int_t lwork) |
Perform the LDL^t factorization of a given panel and apply all its updates. More... | |
PastixFloat cblk LL^t kernels | |
int | cpucblk_spotrfsp1d_pxtrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
PastixFloat initialization and additionnal routines | |
void | cpucblk_salloc_lrws (const SolverCblk *cblk, pastix_lrblock_t *lrblok, float *ws) |
Initialize lrblock structure from a workspace from all blocks of the cblk associated. More... | |
void | cpucblk_salloc_lr (pastix_coefside_t side, SolverCblk *cblk, int rkmax) |
Allocate the cblk structure to store the coefficient. More... | |
void | cpucblk_salloc_fr (pastix_coefside_t side, SolverCblk *cblk) |
Allocate the cblk structure to store the coefficient. More... | |
void | cpucblk_salloc (pastix_coefside_t side, SolverCblk *cblk) |
Allocate the cblk structure to store the coefficient. More... | |
void | cpucblk_sfree (pastix_coefside_t side, SolverCblk *cblk) |
Free the cblk structure that store the coefficient. More... | |
void | cpucblk_sfillin (pastix_coefside_t side, const SolverMatrix *solvmtx, const pastix_bcsc_t *bcsc, pastix_int_t itercblk) |
Initialize the coeftab structure from the internal bcsc. More... | |
void | cpucblk_sinit (pastix_coefside_t side, const SolverMatrix *solvmtx, const pastix_bcsc_t *bcsc, pastix_int_t itercblk, const char *directory) |
Fully initialize a single cblk. More... | |
void | cpucblk_sgetschur (const SolverCblk *cblk, int upper_part, float *S, pastix_int_t lds) |
Extract a cblk panel of the Schur complement to a dense lapack form. More... | |
void | cpucblk_sdump (pastix_coefside_t side, const SolverCblk *cblk, FILE *stream) |
Dump a single column block into a FILE in a human readale format. More... | |
int | cpucblk_sdiff (pastix_coefside_t side, const SolverCblk *cblkA, SolverCblk *cblkB) |
Compare two column blocks in full-rank format. More... | |
void | cpucblk_sadd (pastix_coefside_t side, float alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const pastix_lr_t *lowrank) |
Add two column bloks in full rank format. More... | |
void | cpucblk_sadd_recv (pastix_coefside_t side, float alpha, SolverCblk *cblk) |
PastixFloat MPI routines | |
int | cpucblk_sincoming_deps (int mt_flag, pastix_coefside_t side, SolverMatrix *solvmtx, SolverCblk *cblk) |
Wait for incoming dependencies, and return when cblk->ctrbcnt has reached 0. More... | |
void | cpucblk_srelease_deps (pastix_coefside_t side, SolverMatrix *solvmtx, const SolverCblk *cblk, SolverCblk *fcbk) |
Release the dependencies of the given cblk after an update. More... | |
void | cpucblk_srequest_cleanup (pastix_coefside_t side, pastix_int_t sched, SolverMatrix *solvmtx) |
Waitall routine for current cblk request. More... | |
void | cpucblk_smpi_progress (pastix_coefside_t side, SolverMatrix *solvmtx, int threadid) |
void | cpucblk_ssend_rhs_forward (const SolverMatrix *solvmtx, SolverCblk *cblk, float *b) |
Send the rhs associated to a cblk->lcolidx to the remote node. More... | |
void | cpucblk_srecv_rhs_forward (const SolverMatrix *solvmtx, SolverCblk *cblk, float *work, pastix_int_t nrhs, float *b, pastix_int_t ldb) |
Receive the rhs associated to a cblk->lcolidx to the remote node. More... | |
void | cpucblk_ssend_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, float *b) |
Send the rhs associated to a cblk->lcolidx to the remote node. More... | |
void | cpucblk_srecv_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, float *b) |
Receive the rhs associated to a cblk->lcolidx to the remote node. More... | |
PastixFloat compression/uncompression routines | |
pastix_fixdbl_t | cpublok_scompress (const pastix_lr_t *lowrank, pastix_int_t M, pastix_int_t N, pastix_lrblock_t *blok) |
Compress a single block from full-rank to low-rank format. More... | |
pastix_int_t | cpucblk_scompress (const SolverMatrix *solvmtx, pastix_coefside_t side, int max_ilulvl, SolverCblk *cblk) |
Compress a single column block from full-rank to low-rank format. More... | |
void | cpucblk_suncompress (pastix_coefside_t side, SolverCblk *cblk) |
Uncompress a single column block from low-rank format to full-rank format. More... | |
void | cpucblk_smemory (pastix_coefside_t side, SolverMatrix *solvmtx, SolverCblk *cblk, pastix_int_t *orig, pastix_int_t *gain) |
Return the memory gain of the low-rank form over the full-rank form for a single column-block. More... | |
PastixDouble cblk-BLAS CPU kernels | |
int | cpucblk_dgeaddsp1d (const SolverCblk *cblk1, SolverCblk *cblk2, const double *L1, double *L2, const double *U1, double *U2) |
Add two column blocks together. More... | |
pastix_fixdbl_t | cpucblk_dgemmsp (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const void *A, const void *B, void *C, double *work, pastix_int_t lwork, const pastix_lr_t *lowrank) |
Compute the updates associated to one off-diagonal block. More... | |
void | cpucblk_dtrsmsp (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const void *A, void *C, const pastix_lr_t *lowrank) |
Compute the updates associated to a column of off-diagonal blocks. More... | |
void | cpucblk_dscalo (pastix_trans_t trans, SolverCblk *cblk, void *dataL, void *dataLD) |
Copy the L term with scaling for the two-terms algorithm. More... | |
pastix_fixdbl_t | cpublok_dgemmsp (pastix_trans_t trans, const SolverCblk *cblk, SolverCblk *fcblk, pastix_int_t blok_mk, pastix_int_t blok_nk, pastix_int_t blok_mn, const void *A, const void *B, void *C, const pastix_lr_t *lowrank) |
Compute the CPU gemm associated to a couple of off-diagonal blocks. More... | |
pastix_fixdbl_t | cpublok_dtrsmsp (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 void *A, void *C, const pastix_lr_t *lowrank) |
Compute the updates associated to one off-diagonal block. More... | |
void | cpublok_dscalo (pastix_trans_t trans, SolverCblk *cblk, pastix_int_t blok_m, const void *A, const void *dataD, void *dataB) |
Copy the lower terms of the block with scaling for the two-terms algorithm. More... | |
PastixDouble cblk LU kernels | |
int | cpucblk_dgetrfsp1d_getrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *U) |
Compute the LU factorization of the diagonal block in a panel. More... | |
int | cpucblk_dgetrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *U) |
Compute the LU factorization of one panel. More... | |
int | cpucblk_dgetrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, double *work, pastix_int_t lwork) |
Perform the LU factorization of a given panel and apply all its updates. More... | |
PastixDouble cblk Cholesky kernels | |
int | cpucblk_dpotrfsp1d_potrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
Compute the Cholesky factorization of the diagonal block in a panel. More... | |
int | cpucblk_dpotrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
Compute the Cholesky factorization of one panel. More... | |
int | cpucblk_dpotrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, double *work, pastix_int_t lwork) |
Perform the Cholesky factorization of a given panel and apply all its updates. More... | |
PastixDouble cblk LDL^h kernels | |
int | cpucblk_dsytrfsp1d_sytrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *L) |
Computes the LDL^t factorization of the diagonal block in a panel. More... | |
int | cpucblk_dsytrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *DLh) |
Compute the LDL^t factorization of one panel. More... | |
int | cpucblk_dsytrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, double *work1, double *work2, pastix_int_t lwork) |
Perform the LDL^t factorization of a given panel and apply all its updates. More... | |
PastixDouble cblk LL^t kernels | |
int | cpucblk_dpotrfsp1d_pxtrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
PastixDouble initialization and additionnal routines | |
void | cpucblk_dalloc_lrws (const SolverCblk *cblk, pastix_lrblock_t *lrblok, double *ws) |
Initialize lrblock structure from a workspace from all blocks of the cblk associated. More... | |
void | cpucblk_dalloc_lr (pastix_coefside_t side, SolverCblk *cblk, int rkmax) |
Allocate the cblk structure to store the coefficient. More... | |
void | cpucblk_dalloc_fr (pastix_coefside_t side, SolverCblk *cblk) |
Allocate the cblk structure to store the coefficient. More... | |
void | cpucblk_dalloc (pastix_coefside_t side, SolverCblk *cblk) |
Allocate the cblk structure to store the coefficient. More... | |
void | cpucblk_dfree (pastix_coefside_t side, SolverCblk *cblk) |
Free the cblk structure that store the coefficient. More... | |
void | cpucblk_dfillin (pastix_coefside_t side, const SolverMatrix *solvmtx, const pastix_bcsc_t *bcsc, pastix_int_t itercblk) |
Initialize the coeftab structure from the internal bcsc. More... | |
void | cpucblk_dinit (pastix_coefside_t side, const SolverMatrix *solvmtx, const pastix_bcsc_t *bcsc, pastix_int_t itercblk, const char *directory) |
Fully initialize a single cblk. More... | |
void | cpucblk_dgetschur (const SolverCblk *cblk, int upper_part, double *S, pastix_int_t lds) |
Extract a cblk panel of the Schur complement to a dense lapack form. More... | |
void | cpucblk_ddump (pastix_coefside_t side, const SolverCblk *cblk, FILE *stream) |
Dump a single column block into a FILE in a human readale format. More... | |
int | cpucblk_ddiff (pastix_coefside_t side, const SolverCblk *cblkA, SolverCblk *cblkB) |
Compare two column blocks in full-rank format. More... | |
void | cpucblk_dadd (pastix_coefside_t side, double alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const pastix_lr_t *lowrank) |
Add two column bloks in full rank format. More... | |
void | cpucblk_dadd_recv (pastix_coefside_t side, double alpha, SolverCblk *cblk) |
PastixDouble MPI routines | |
int | cpucblk_dincoming_deps (int mt_flag, pastix_coefside_t side, SolverMatrix *solvmtx, SolverCblk *cblk) |
Wait for incoming dependencies, and return when cblk->ctrbcnt has reached 0. More... | |
void | cpucblk_drelease_deps (pastix_coefside_t side, SolverMatrix *solvmtx, const SolverCblk *cblk, SolverCblk *fcbk) |
Release the dependencies of the given cblk after an update. More... | |
void | cpucblk_drequest_cleanup (pastix_coefside_t side, pastix_int_t sched, SolverMatrix *solvmtx) |
Waitall routine for current cblk request. More... | |
void | cpucblk_dmpi_progress (pastix_coefside_t side, SolverMatrix *solvmtx, int threadid) |
void | cpucblk_dsend_rhs_forward (const SolverMatrix *solvmtx, SolverCblk *cblk, double *b) |
Send the rhs associated to a cblk->lcolidx to the remote node. More... | |
void | cpucblk_drecv_rhs_forward (const SolverMatrix *solvmtx, SolverCblk *cblk, double *work, pastix_int_t nrhs, double *b, pastix_int_t ldb) |
Receive the rhs associated to a cblk->lcolidx to the remote node. More... | |
void | cpucblk_dsend_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, double *b) |
Send the rhs associated to a cblk->lcolidx to the remote node. More... | |
void | cpucblk_drecv_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, double *b) |
Receive the rhs associated to a cblk->lcolidx to the remote node. More... | |
PastixDouble compression/uncompression routines | |
pastix_fixdbl_t | cpublok_dcompress (const pastix_lr_t *lowrank, pastix_int_t M, pastix_int_t N, pastix_lrblock_t *blok) |
Compress a single block from full-rank to low-rank format. More... | |
pastix_int_t | cpucblk_dcompress (const SolverMatrix *solvmtx, pastix_coefside_t side, int max_ilulvl, SolverCblk *cblk) |
Compress a single column block from full-rank to low-rank format. More... | |
void | cpucblk_duncompress (pastix_coefside_t side, SolverCblk *cblk) |
Uncompress a single column block from low-rank format to full-rank format. More... | |
void | cpucblk_dmemory (pastix_coefside_t side, SolverMatrix *solvmtx, SolverCblk *cblk, pastix_int_t *orig, pastix_int_t *gain) |
Return the memory gain of the low-rank form over the full-rank form for a single column-block. More... | |
PastixComplex32 cblk-BLAS CPU kernels | |
int | cpucblk_cgeaddsp1d (const SolverCblk *cblk1, SolverCblk *cblk2, const pastix_complex32_t *L1, pastix_complex32_t *L2, const pastix_complex32_t *U1, pastix_complex32_t *U2) |
Add two column blocks together. More... | |
pastix_fixdbl_t | cpucblk_cgemmsp (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const void *A, const void *B, void *C, pastix_complex32_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank) |
Compute the updates associated to one off-diagonal block. More... | |
void | cpucblk_ctrsmsp (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const void *A, void *C, const pastix_lr_t *lowrank) |
Compute the updates associated to a column of off-diagonal blocks. More... | |
void | cpucblk_cscalo (pastix_trans_t trans, SolverCblk *cblk, void *dataL, void *dataLD) |
Copy the L term with scaling for the two-terms algorithm. More... | |
pastix_fixdbl_t | cpublok_cgemmsp (pastix_trans_t trans, const SolverCblk *cblk, SolverCblk *fcblk, pastix_int_t blok_mk, pastix_int_t blok_nk, pastix_int_t blok_mn, const void *A, const void *B, void *C, const pastix_lr_t *lowrank) |
Compute the CPU gemm associated to a couple of off-diagonal blocks. More... | |
pastix_fixdbl_t | cpublok_ctrsmsp (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 void *A, void *C, const pastix_lr_t *lowrank) |
Compute the updates associated to one off-diagonal block. More... | |
void | cpublok_cscalo (pastix_trans_t trans, SolverCblk *cblk, pastix_int_t blok_m, const void *A, const void *dataD, void *dataB) |
Copy the lower terms of the block with scaling for the two-terms algorithm. More... | |
PastixComplex32 cblk LU kernels | |
int | cpucblk_cgetrfsp1d_getrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *U) |
Compute the LU factorization of the diagonal block in a panel. More... | |
int | cpucblk_cgetrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *U) |
Compute the LU factorization of one panel. More... | |
int | cpucblk_cgetrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex32_t *work, pastix_int_t lwork) |
Perform the LU factorization of a given panel and apply all its updates. More... | |
PastixComplex32 cblk Cholesky kernels | |
int | cpucblk_cpotrfsp1d_potrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
Compute the Cholesky factorization of the diagonal block in a panel. More... | |
int | cpucblk_cpotrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
Compute the Cholesky factorization of one panel. More... | |
int | cpucblk_cpotrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex32_t *work, pastix_int_t lwork) |
Perform the Cholesky factorization of a given panel and apply all its updates. More... | |
PastixComplex32 cblk LDL^h kernels | |
int | cpucblk_chetrfsp1d_hetrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *L) |
Computes the LDL^h factorization of the diagonal block in a panel. More... | |
int | cpucblk_chetrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *DLh) |
Compute the LDL^h factorization of one panel. More... | |
int | cpucblk_chetrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex32_t *work1, pastix_complex32_t *work2, pastix_int_t lwork) |
Perform the LDL^h factorization of a given panel and apply all its updates. More... | |
PastixComplex32 cblk LL^t kernels | |
int | cpucblk_cpxtrfsp1d_pxtrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
Compute the LL^t factorization of the diagonal block in a panel. More... | |
int | cpucblk_cpxtrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
Compute the LL^t factorization of one panel. More... | |
int | cpucblk_cpxtrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex32_t *work, pastix_int_t lwork) |
Perform the LL^t factorization of a given panel and apply all its updates. More... | |
PastixComplex32 cblk LDL^t kernels | |
int | cpucblk_csytrfsp1d_sytrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *L) |
Computes the LDL^t factorization of the diagonal block in a panel. More... | |
int | cpucblk_csytrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *DLt) |
Compute the LDL^t factorization of one panel. More... | |
int | cpucblk_csytrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex32_t *work1, pastix_complex32_t *work2, pastix_int_t lwork) |
Perform the LDL^t factorization of a given panel and apply all its updates. More... | |
PastixComplex32 initialization and additionnal routines | |
void | cpucblk_calloc_lrws (const SolverCblk *cblk, pastix_lrblock_t *lrblok, pastix_complex32_t *ws) |
Initialize lrblock structure from a workspace from all blocks of the cblk associated. More... | |
void | cpucblk_calloc_lr (pastix_coefside_t side, SolverCblk *cblk, int rkmax) |
Allocate the cblk structure to store the coefficient. More... | |
void | cpucblk_calloc_fr (pastix_coefside_t side, SolverCblk *cblk) |
Allocate the cblk structure to store the coefficient. More... | |
void | cpucblk_calloc (pastix_coefside_t side, SolverCblk *cblk) |
Allocate the cblk structure to store the coefficient. More... | |
void | cpucblk_cfree (pastix_coefside_t side, SolverCblk *cblk) |
Free the cblk structure that store the coefficient. More... | |
void | cpucblk_cfillin (pastix_coefside_t side, const SolverMatrix *solvmtx, const pastix_bcsc_t *bcsc, pastix_int_t itercblk) |
Initialize the coeftab structure from the internal bcsc. More... | |
void | cpucblk_cinit (pastix_coefside_t side, const SolverMatrix *solvmtx, const pastix_bcsc_t *bcsc, pastix_int_t itercblk, const char *directory) |
Fully initialize a single cblk. More... | |
void | cpucblk_cgetschur (const SolverCblk *cblk, int upper_part, pastix_complex32_t *S, pastix_int_t lds) |
Extract a cblk panel of the Schur complement to a dense lapack form. More... | |
void | cpucblk_cdump (pastix_coefside_t side, const SolverCblk *cblk, FILE *stream) |
Dump a single column block into a FILE in a human readale format. More... | |
int | cpucblk_cdiff (pastix_coefside_t side, const SolverCblk *cblkA, SolverCblk *cblkB) |
Compare two column blocks in full-rank format. More... | |
void | cpucblk_cadd (pastix_coefside_t side, float alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const pastix_lr_t *lowrank) |
Add two column bloks in full rank format. More... | |
void | cpucblk_cadd_recv (pastix_coefside_t side, float alpha, SolverCblk *cblk) |
PastixComplex32 MPI routines | |
int | cpucblk_cincoming_deps (int mt_flag, pastix_coefside_t side, SolverMatrix *solvmtx, SolverCblk *cblk) |
Wait for incoming dependencies, and return when cblk->ctrbcnt has reached 0. More... | |
void | cpucblk_crelease_deps (pastix_coefside_t side, SolverMatrix *solvmtx, const SolverCblk *cblk, SolverCblk *fcbk) |
Release the dependencies of the given cblk after an update. More... | |
void | cpucblk_crequest_cleanup (pastix_coefside_t side, pastix_int_t sched, SolverMatrix *solvmtx) |
Waitall routine for current cblk request. More... | |
void | cpucblk_cmpi_progress (pastix_coefside_t side, SolverMatrix *solvmtx, int threadid) |
void | cpucblk_csend_rhs_forward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex32_t *b) |
Send the rhs associated to a cblk->lcolidx to the remote node. More... | |
void | cpucblk_crecv_rhs_forward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex32_t *work, pastix_int_t nrhs, pastix_complex32_t *b, pastix_int_t ldb) |
Receive the rhs associated to a cblk->lcolidx to the remote node. More... | |
void | cpucblk_csend_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex32_t *b) |
Send the rhs associated to a cblk->lcolidx to the remote node. More... | |
void | cpucblk_crecv_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex32_t *b) |
Receive the rhs associated to a cblk->lcolidx to the remote node. More... | |
PastixComplex32 compression/uncompression routines | |
pastix_fixdbl_t | cpublok_ccompress (const pastix_lr_t *lowrank, pastix_int_t M, pastix_int_t N, pastix_lrblock_t *blok) |
Compress a single block from full-rank to low-rank format. More... | |
pastix_int_t | cpucblk_ccompress (const SolverMatrix *solvmtx, pastix_coefside_t side, int max_ilulvl, SolverCblk *cblk) |
Compress a single column block from full-rank to low-rank format. More... | |
void | cpucblk_cuncompress (pastix_coefside_t side, SolverCblk *cblk) |
Uncompress a single column block from low-rank format to full-rank format. More... | |
void | cpucblk_cmemory (pastix_coefside_t side, SolverMatrix *solvmtx, SolverCblk *cblk, pastix_int_t *orig, pastix_int_t *gain) |
Return the memory gain of the low-rank form over the full-rank form for a single column-block. More... | |
PastixComplex64 cblk-BLAS CPU kernels | |
int | cpucblk_zgeaddsp1d (const SolverCblk *cblk1, SolverCblk *cblk2, const pastix_complex64_t *L1, pastix_complex64_t *L2, const pastix_complex64_t *U1, pastix_complex64_t *U2) |
Add two column blocks together. More... | |
pastix_fixdbl_t | cpucblk_zgemmsp (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const void *A, const void *B, void *C, pastix_complex64_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank) |
Compute the updates associated to one off-diagonal block. More... | |
void | cpucblk_ztrsmsp (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const void *A, void *C, const pastix_lr_t *lowrank) |
Compute the updates associated to a column of off-diagonal blocks. More... | |
void | cpucblk_zscalo (pastix_trans_t trans, SolverCblk *cblk, void *dataL, void *dataLD) |
Copy the L term with scaling for the two-terms algorithm. More... | |
pastix_fixdbl_t | cpublok_zgemmsp (pastix_trans_t trans, const SolverCblk *cblk, SolverCblk *fcblk, pastix_int_t blok_mk, pastix_int_t blok_nk, pastix_int_t blok_mn, const void *A, const void *B, void *C, const pastix_lr_t *lowrank) |
Compute the CPU gemm associated to a couple of off-diagonal blocks. More... | |
pastix_fixdbl_t | cpublok_ztrsmsp (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 void *A, void *C, const pastix_lr_t *lowrank) |
Compute the updates associated to one off-diagonal block. More... | |
void | cpublok_zscalo (pastix_trans_t trans, SolverCblk *cblk, pastix_int_t blok_m, const void *A, const void *dataD, void *dataB) |
Copy the lower terms of the block with scaling for the two-terms algorithm. More... | |
PastixComplex64 cblk LU kernels | |
int | cpucblk_zgetrfsp1d_getrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *U) |
Compute the LU factorization of the diagonal block in a panel. More... | |
int | cpucblk_zgetrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *U) |
Compute the LU factorization of one panel. More... | |
int | cpucblk_zgetrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *work, pastix_int_t lwork) |
Perform the LU factorization of a given panel and apply all its updates. More... | |
PastixComplex64 cblk Cholesky kernels | |
int | cpucblk_zpotrfsp1d_potrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
Compute the Cholesky factorization of the diagonal block in a panel. More... | |
int | cpucblk_zpotrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
Compute the Cholesky factorization of one panel. More... | |
int | cpucblk_zpotrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *work, pastix_int_t lwork) |
Perform the Cholesky factorization of a given panel and apply all its updates. More... | |
PastixComplex64 cblk LDL^h kernels | |
int | cpucblk_zhetrfsp1d_hetrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *L) |
Computes the LDL^h factorization of the diagonal block in a panel. More... | |
int | cpucblk_zhetrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *DLh) |
Compute the LDL^h factorization of one panel. More... | |
int | cpucblk_zhetrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *work1, pastix_complex64_t *work2, pastix_int_t lwork) |
Perform the LDL^h factorization of a given panel and apply all its updates. More... | |
PastixComplex64 cblk LL^t kernels | |
int | cpucblk_zpxtrfsp1d_pxtrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
Compute the LL^t factorization of the diagonal block in a panel. More... | |
int | cpucblk_zpxtrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) |
Compute the LL^t factorization of one panel. More... | |
int | cpucblk_zpxtrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *work, pastix_int_t lwork) |
Perform the LL^t factorization of a given panel and apply all its updates. More... | |
PastixComplex64 cblk LDL^t kernels | |
int | cpucblk_zsytrfsp1d_sytrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *L) |
Computes the LDL^t factorization of the diagonal block in a panel. More... | |
int | cpucblk_zsytrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *DLt) |
Compute the LDL^t factorization of one panel. More... | |
int | cpucblk_zsytrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *work1, pastix_complex64_t *work2, pastix_int_t lwork) |
Perform the LDL^t factorization of a given panel and apply all its updates. More... | |
PastixComplex64 initialization and additionnal routines | |
void | cpucblk_zalloc_lrws (const SolverCblk *cblk, pastix_lrblock_t *lrblok, pastix_complex64_t *ws) |
Initialize lrblock structure from a workspace from all blocks of the cblk associated. More... | |
void | cpucblk_zalloc_lr (pastix_coefside_t side, SolverCblk *cblk, int rkmax) |
Allocate the cblk structure to store the coefficient. More... | |
void | cpucblk_zalloc_fr (pastix_coefside_t side, SolverCblk *cblk) |
Allocate the cblk structure to store the coefficient. More... | |
void | cpucblk_zalloc (pastix_coefside_t side, SolverCblk *cblk) |
Allocate the cblk structure to store the coefficient. More... | |
void | cpucblk_zfree (pastix_coefside_t side, SolverCblk *cblk) |
Free the cblk structure that store the coefficient. More... | |
void | cpucblk_zfillin (pastix_coefside_t side, const SolverMatrix *solvmtx, const pastix_bcsc_t *bcsc, pastix_int_t itercblk) |
Initialize the coeftab structure from the internal bcsc. More... | |
void | cpucblk_zinit (pastix_coefside_t side, const SolverMatrix *solvmtx, const pastix_bcsc_t *bcsc, pastix_int_t itercblk, const char *directory) |
Fully initialize a single cblk. More... | |
void | cpucblk_zgetschur (const SolverCblk *cblk, int upper_part, pastix_complex64_t *S, pastix_int_t lds) |
Extract a cblk panel of the Schur complement to a dense lapack form. More... | |
void | cpucblk_zdump (pastix_coefside_t side, const SolverCblk *cblk, FILE *stream) |
Dump a single column block into a FILE in a human readale format. More... | |
int | cpucblk_zdiff (pastix_coefside_t side, const SolverCblk *cblkA, SolverCblk *cblkB) |
Compare two column blocks in full-rank format. More... | |
void | cpucblk_zadd (pastix_coefside_t side, double alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const pastix_lr_t *lowrank) |
Add two column bloks in full rank format. More... | |
void | cpucblk_zadd_recv (pastix_coefside_t side, double alpha, SolverCblk *cblk) |
PastixComplex64 MPI routines | |
int | cpucblk_zincoming_deps (int mt_flag, pastix_coefside_t side, SolverMatrix *solvmtx, SolverCblk *cblk) |
Wait for incoming dependencies, and return when cblk->ctrbcnt has reached 0. More... | |
void | cpucblk_zrelease_deps (pastix_coefside_t side, SolverMatrix *solvmtx, const SolverCblk *cblk, SolverCblk *fcbk) |
Release the dependencies of the given cblk after an update. More... | |
void | cpucblk_zrequest_cleanup (pastix_coefside_t side, pastix_int_t sched, SolverMatrix *solvmtx) |
Waitall routine for current cblk request. More... | |
void | cpucblk_zmpi_progress (pastix_coefside_t side, SolverMatrix *solvmtx, int threadid) |
void | cpucblk_zsend_rhs_forward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *b) |
Send the rhs associated to a cblk->lcolidx to the remote node. More... | |
void | cpucblk_zrecv_rhs_forward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *work, pastix_int_t nrhs, pastix_complex64_t *b, pastix_int_t ldb) |
Receive the rhs associated to a cblk->lcolidx to the remote node. More... | |
void | cpucblk_zsend_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *b) |
Send the rhs associated to a cblk->lcolidx to the remote node. More... | |
void | cpucblk_zrecv_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex64_t *b) |
Receive the rhs associated to a cblk->lcolidx to the remote node. More... | |
PastixComplex64 compression/uncompression routines | |
pastix_fixdbl_t | cpublok_zcompress (const pastix_lr_t *lowrank, pastix_int_t M, pastix_int_t N, pastix_lrblock_t *blok) |
Compress a single block from full-rank to low-rank format. More... | |
pastix_int_t | cpucblk_zcompress (const SolverMatrix *solvmtx, pastix_coefside_t side, int max_ilulvl, SolverCblk *cblk) |
Compress a single column block from full-rank to low-rank format. More... | |
void | cpucblk_zuncompress (pastix_coefside_t side, SolverCblk *cblk) |
Uncompress a single column block from low-rank format to full-rank format. More... | |
void | cpucblk_zmemory (pastix_coefside_t side, SolverMatrix *solvmtx, SolverCblk *cblk, pastix_int_t *orig, pastix_int_t *gain) |
Return the memory gain of the low-rank form over the full-rank form for a single column-block. More... | |
This module contains all the kernel working at the solver matrix structure level for the numerical factorization step.
int cpucblk_sgeaddsp1d | ( | const SolverCblk * | cblk1, |
SolverCblk * | cblk2, | ||
const float * | L, | ||
float * | Cl, | ||
const float * | U, | ||
float * | Cu | ||
) |
Add two column blocks together.
Perform the operation: cblk2 <- cblk1 + cblk2 using core_sgeadd().
[in] | cblk1 | The pointer to the data structure that describes the panel to add. Next column blok must be accessible through cblk1[1]. |
[in] | cblk2 | The pointer to the data structure that describes the panel in which we add. Next column blok must be accessible through cblk2[1]. |
[in] | L | The pointer to the lower matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width |
[in,out] | Cl | The pointer to the lower matrix storing the coefficients of the updated panel. Must be of size cblk.stride -by- cblk.width On exit Cl = Cl + L. |
[in] | U | The pointer to the upper matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width. Ignored if NULL. |
[in,out] | Cu | The pointer to the upper matrix storing the coefficients of the updated panel. Must be of size cblk.stride -by- cblk.width On exit Cu = Cu + U. |
PASTIX_SUCCESS | on success. |
Definition at line 245 of file core_sgeadd.c.
References solver_blok_s::coefind, core_sgeadd(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), solver_cblk_s::lcolnum, solver_blok_s::lrownum, PASTIX_SUCCESS, PastixNoTrans, and solver_cblk_s::stride.
pastix_fixdbl_t cpucblk_sgemmsp | ( | pastix_coefside_t | sideA, |
pastix_trans_t | trans, | ||
const SolverCblk * | cblk, | ||
const SolverBlok * | blok, | ||
SolverCblk * | fcblk, | ||
const void * | A, | ||
const void * | B, | ||
void * | C, | ||
float * | work, | ||
pastix_int_t | lwork, | ||
const pastix_lr_t * | lowrank | ||
) |
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. 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 correct representation of A.
|
[in] | B | The pointer to the correct representation of B.
|
[in,out] | C | The pointer to the correct representation of C.
|
[in] | work | Temporary memory buffer. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 1512 of file core_sgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::stride.
void cpucblk_strsmsp | ( | pastix_side_t | side, |
pastix_uplo_t | uplo, | ||
pastix_trans_t | trans, | ||
pastix_diag_t | diag, | ||
const SolverCblk * | cblk, | ||
const void * | A, | ||
void * | C, | ||
const pastix_lr_t * | lowrank | ||
) |
Compute the updates associated to a column of off-diagonal blocks.
[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 B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1]. |
[in] | A | The pointer to the correct representation of A.
|
[in,out] | C | The pointer to the correct representation of C.
|
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 356 of file core_strsmsp.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::stride.
Referenced by cpucblk_sgetrfsp1d_panel(), cpucblk_spotrfsp1d_panel(), and cpucblk_ssytrfsp1d_panel().
void cpucblk_sscalo | ( | pastix_trans_t | trans, |
SolverCblk * | cblk, | ||
void * | dataL, | ||
void * | dataLD | ||
) |
Copy the L term with scaling for the two-terms algorithm.
Performs LD = op(L) * D
[in] | trans |
|
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
[in,out] | dataL | The pointer to the correct representation of lower part of the data.
|
[in,out] | dataLD | The pointer to the correct representation of LD.
|
Definition at line 170 of file core_sscalo.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
pastix_fixdbl_t cpublok_sgemmsp | ( | pastix_trans_t | transB, |
const SolverCblk * | cblk, | ||
SolverCblk * | fcblk, | ||
pastix_int_t | blok_mk, | ||
pastix_int_t | blok_nk, | ||
pastix_int_t | blok_mn, | ||
const void * | A, | ||
const void * | B, | ||
void * | C, | ||
const pastix_lr_t * | lowrank | ||
) |
Compute the CPU gemm associated to a couple of off-diagonal blocks.
C_l = C_l - A_l * op(B_s), with B_s = B_l, or B_u or C_u = C_u - A_u * op(B_s), with B_s = B_l, or B_u
[in] | transB | Specify wheter B should be used as PastixNoTrans, PastixTrans, or PastixTrans in the computations. |
[in] | cblk | The cblk structure to which block A and B belong to. The A and B pointers must be one of the [lu]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 [lu]coeftab from this fcblk. Next column blok must be accessible through fcblk[1]. |
[in] | blok_mk | Specify the index of the A block in the cblk column. This index is 0-based for the diagonal block. |
[in] | blok_nk | Specify the index of the B block in the cblk column. This index is 0-based for the diagonal block. |
[in] | blok_mn | Specify the index of the C block in the fcblk column. This index is 0-based for the diagonal block. |
[in] | A | The pointer to the correct representation of A.
|
[in] | B | The pointer to the correct representation of B.
|
[in] | C | The pointer to the correct representation of C.
|
[in] | lowrank | The structure with the low-rank parameters. |
Definition at line 1655 of file core_sgemmsp.c.
References solver_cblk_s::cblktype.
pastix_fixdbl_t cpublok_strsmsp | ( | 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 void * | A, | ||
void * | C, | ||
const pastix_lr_t * | lowrank | ||
) |
Compute the updates associated to one off-diagonal block.
[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 B 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 correct representation of A.
|
[in,out] | C | The pointer to the correct representation of C.
|
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 678 of file core_strsmsp.c.
References solver_cblk_s::cblktype.
void cpublok_sscalo | ( | pastix_trans_t | trans, |
SolverCblk * | cblk, | ||
pastix_int_t | blok_m, | ||
const void * | dataA, | ||
const void * | dataD, | ||
void * | dataB | ||
) |
Copy the lower terms of the block with scaling for the two-terms algorithm.
Performs B = op(A) * D
[in] | trans |
|
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
[in] | blok_m | Index of the off-diagonal block to be solved in the cblk. All blocks facing the same cblk, in the current column block will be solved. |
[in] | dataA | The pointer to the correct representation of data of A.
|
[in] | dataD | The pointer to the correct representation of data of D.
|
[in,out] | dataB | The pointer to the correct representation of data of B.
|
Definition at line 315 of file core_sscalo.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
int cpucblk_sgetrfsp1d_getrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL, | ||
void * | dataU | ||
) |
Compute the LU factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of the lower part of the data.
|
[in,out] | dataU | The pointer to the correct representation of the upper part of the data.
|
Definition at line 217 of file core_sgetrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_sgetrfsp1d_panel().
int cpucblk_sgetrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L, | ||
void * | U | ||
) |
Compute the LU factorization of one panel.
[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]. |
[in,out] | L | The pointer to the correct representation of the lower part of the data.
|
[in,out] | U | The pointer to the correct representation of the upper part of the data.
|
Definition at line 305 of file core_sgetrfsp.c.
References cpucblk_sgetrfsp1d_getrf(), cpucblk_strsmsp(), PastixNonUnit, PastixNoTrans, PastixRight, PastixUnit, and PastixUpper.
Referenced by cpucblk_sgetrfsp1d().
int cpucblk_sgetrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
float * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the LU factorization of a given panel and apply all its 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]. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 355 of file core_sgetrfsp.c.
References cblk_getdataL(), cblk_getdataU(), solver_cblk_s::cblktype, cpucblk_sgetrfsp1d_panel(), solver_cblk_s::fblokptr, and solver_blok_s::fcblknm.
int cpucblk_spotrfsp1d_potrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL | ||
) |
Compute the Cholesky factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of the lower part of the data.
|
Definition at line 220 of file core_spotrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_spotrfsp1d_panel().
int cpucblk_spotrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L | ||
) |
Compute the Cholesky factorization of one panel.
[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]. |
[in,out] | L | The pointer to the correct representation of lower part of the data.
|
Definition at line 292 of file core_spotrfsp.c.
References cpucblk_spotrfsp1d_potrf(), cpucblk_strsmsp(), PastixLower, PastixNonUnit, PastixRight, and PastixTrans.
Referenced by cpucblk_spotrfsp1d().
int cpucblk_spotrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
float * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the Cholesky factorization of a given panel and apply all its 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]. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 334 of file core_spotrfsp.c.
References cblk_getdataL(), solver_cblk_s::cblktype, cpucblk_spotrfsp1d_panel(), solver_cblk_s::fblokptr, and solver_blok_s::fcblknm.
int cpucblk_ssytrfsp1d_sytrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL | ||
) |
Computes the LDL^t factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of lower part of the data.
|
Definition at line 232 of file core_ssytrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_ssytrfsp1d_panel().
int cpucblk_ssytrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L, | ||
void * | DLt | ||
) |
Compute the LDL^t factorization of one panel.
[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]. |
[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] | DLt | The pointer to the upper matrix storing the coefficients the temporary DL^t product. Must be of size cblk.stride -by- cblk.width |
Definition at line 432 of file core_ssytrfsp.c.
References solver_cblk_s::cblktype, cpucblk_ssytrfsp1d_sytrf(), cpucblk_strsmsp(), PastixNonUnit, PastixNoTrans, PastixRight, and PastixUpper.
int cpucblk_ssytrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
float * | DLt, | ||
float * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the LDL^t factorization of a given panel and apply all its 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]. |
[in] | DLt | Temporary memory buffer to store the transpose of DLt. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 487 of file core_ssytrfsp.c.
References cblk_getdataL(), cblk_getdataU(), and solver_cblk_s::cblktype.
void cpucblk_salloc_lrws | ( | const SolverCblk * | cblk, |
pastix_lrblock_t * | lrblok, | ||
float * | ws | ||
) |
Initialize lrblock structure from a workspace from all blocks of the cblk associated.
The lrblock structure must be allocated before.
[in,out] | cblk | The column block associated to the initialization. |
[in] | lrblok | The structure blok to initialize. Must be allocated before. |
[in] | ws | The workspace associated with the data that will be used for initialize lrblok. |
Definition at line 96 of file cpucblk_sinit.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
void cpucblk_salloc_lr | ( | pastix_coefside_t | side, |
SolverCblk * | cblk, | ||
int | rkmax | ||
) |
Allocate the cblk structure to store the coefficient.
When stored in low-rank format, the data pointer in the low-rank structure of each block must be initialized. This routines performs only the allocation and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to allocate. |
Definition at line 143 of file cpucblk_sinit.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
void cpucblk_salloc_fr | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Allocate the cblk structure to store the coefficient.
When stored in low-rank format, the data pointer in the low-rank structure of each block must be initialized. This routines performs only the allocation and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to allocate. |
Definition at line 217 of file cpucblk_sinit.c.
References cblk_colnbr(), solver_cblk_s::lcoeftab, PastixLCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
void cpucblk_salloc | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Allocate the cblk structure to store the coefficient.
When stored in low-rank format, the data pointer in the low-rank structure of each block must be initialized. This routines performs only the allocation and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to allocate. |
Definition at line 264 of file cpucblk_sinit.c.
References solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_sinit().
void cpucblk_sfree | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Free the cblk structure that store the coefficient.
This routines performs the free and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to free. |
Definition at line 317 of file cpucblk_sinit.c.
References solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, and PastixUCoef.
void cpucblk_sfillin | ( | pastix_coefside_t | side, |
const SolverMatrix * | solvmtx, | ||
const pastix_bcsc_t * | bcsc, | ||
pastix_int_t | itercblk | ||
) |
Initialize the coeftab structure from the internal bcsc.
[in] | side | Define which side of the matrix must be initialized.
|
[in] | solvmtx | PaStiX structure to store numerical data and flags |
[in] | bcsc | The internal bcsc structure that hold the graph with permutation stored by cblk. |
[in] | itercblk | The index of the cblk to fill in both bcsc and solvmtx structures. |
Definition at line 604 of file cpucblk_sinit.c.
Referenced by cpucblk_sinit().
void cpucblk_sinit | ( | pastix_coefside_t | side, |
const SolverMatrix * | solvmtx, | ||
const pastix_bcsc_t * | bcsc, | ||
pastix_int_t | itercblk, | ||
const char * | directory | ||
) |
Fully initialize a single cblk.
The cblk is allocated, intialized from the bcsc, and compressed if necessary.
[in] | side | Define which side of the matrix must be initialized.
|
[in] | solvmtx | The solver matrix data structure. |
[in] | bcsc | The internal block CSC structure to fill-in the matrix. |
[in] | itercblk | The index of the cblk to initialize. |
[in,out] | directory | The pointer to the temporary directory where to store the output files. Used only if PASTIX_DEBUG_DUMP_COEFTAB is defined. |
Try to compress the cblk if needs to be compressed
Definition at line 251 of file coeftab_sinit.c.
References cpucblk_salloc(), cpucblk_sdump(), cpucblk_sfillin(), solver_cblk_s::ctrbcnt, pastix_fopenw(), PastixLCoef, and PastixUCoef.
void cpucblk_sgetschur | ( | const SolverCblk * | cblk, |
int | upper_part, | ||
float * | S, | ||
pastix_int_t | lds | ||
) |
Extract a cblk panel of the Schur complement to a dense lapack form.
[in] | cblk | The column block to extract in the Schur array |
[in] | upper_part | If true, the upper part is also extracted in S. |
[in,out] | S | The pointer to the top of the column of the cblk in the Schur array. On exit, the computed coefficient are copy to this array. |
[in] | lds | The leading dimension of the S array. |
Definition at line 178 of file cpucblk_sschur.c.
References solver_cblk_s::cblktype.
void cpucblk_sdump | ( | pastix_coefside_t | side, |
const SolverCblk * | cblk, | ||
FILE * | stream | ||
) |
Dump a single column block into a FILE in a human readale format.
All non-zeroes coefficients are dumped in the format: i j val with one value per row.
[in] | side | Define which side of the cblk must be printed.
|
[in] | cblk | The column block to dump into the file. |
[in,out] | stream | The FILE structure opened in write mode. |
Definition at line 51 of file coeftab_sinit.c.
References solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_sinit().
int cpucblk_sdiff | ( | pastix_coefside_t | side, |
const SolverCblk * | cblkA, | ||
SolverCblk * | cblkB | ||
) |
Compare two column blocks in full-rank format.
The second cblk is overwritten by the difference of the two column blocks. The frobenius norm of the difference is computed and the functions returns 0 if the result: || B - A || / ( || A || * eps )
is below 10. Otherwise, an error message is printed and 1 is returned.
[in] | side | Define which side of the cblk must be tested.
|
[in] | cblkA | The column block of the A matrix. |
[in,out] | cblkB | The column block of the B matrix that matches the A matrix in stucture. On exit, cblkB coefficient arrays are overwritten by the result of (B-A). |
Definition at line 63 of file cpucblk_sdiff.c.
References cblk_colnbr(), core_sgeadd(), solver_cblk_s::lcoeftab, PastixLCoef, PastixNoTrans, PastixUCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by coeftab_sdiff().
void cpucblk_sadd | ( | pastix_coefside_t | side, |
float | alpha, | ||
const SolverCblk * | cblkA, | ||
SolverCblk * | cblkB, | ||
const pastix_lr_t * | lowrank | ||
) |
Add two column bloks in full rank format.
The second cblk is overwritten by the sum of the two column blocks. B <- alpha * A + B
[in] | side | Define which side of the cblk must be tested.
|
[in] | alpha | The scalar alpha |
[in] | cblkA | The column block of the A matrix. |
[in,out] | cblkB | The column block of the B matrix On exit, cblkB coefficient arrays are overwritten by the result of alpha * A + B. |
Definition at line 358 of file cpucblk_sadd.c.
References cblk_colnbr(), solver_cblk_s::cblktype, PastixLUCoef, and solver_cblk_s::stride.
int cpucblk_sincoming_deps | ( | int | rank, |
pastix_coefside_t | side, | ||
SolverMatrix * | solvmtx, | ||
SolverCblk * | cblk | ||
) |
Wait for incoming dependencies, and return when cblk->ctrbcnt has reached 0.
[in] | mt_flag |
|
[in] | side | Define which side of the cblk must be released.
|
[in,out] | solvmtx | The solver matrix structure. |
[in,out] | cblk | The column block that contribute to fcblk. |
Definition at line 499 of file cpucblk_smpi_coeftab.c.
References solver_cblk_s::cblktype.
void cpucblk_srelease_deps | ( | pastix_coefside_t | side, |
SolverMatrix * | solvmtx, | ||
const SolverCblk * | cblk, | ||
SolverCblk * | fcbk | ||
) |
Release the dependencies of the given cblk after an update.
[in] | side | Define which side of the cblk must be released.
|
[in,out] | solvmtx | The solver matrix structure. |
[in] | cblk | The column block that contribute to fcblk. |
[in,out] | fcbk | The facing column block that is updated by cblk. |
Definition at line 558 of file cpucblk_smpi_coeftab.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
void cpucblk_srequest_cleanup | ( | pastix_coefside_t | side, |
pastix_int_t | sched, | ||
SolverMatrix * | solvmtx | ||
) |
Waitall routine for current cblk request.
It may be possible that some cblk will not be deallocated with the static scheduler. So a cleanup may be necessary.
[in] | side | Define which side of the cblk must be tested.
|
[in] | sched | Define which sched is used
|
[in,out] | solvmtx | The solver matrix structure. |
Definition at line 609 of file cpucblk_smpi_coeftab.c.
References solver_cblk_s::cblktype, PastixSchedDynamic, PastixSchedSequential, and PastixSchedStatic.
void cpucblk_ssend_rhs_forward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
float * | b | ||
) |
Send the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which defines the part to sent. |
[in] | b | The rhs that will be sent to the cblk->ownerid |
Definition at line 42 of file cpucblk_smpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void cpucblk_srecv_rhs_forward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
float * | work, | ||
pastix_int_t | nrhs, | ||
float * | b, | ||
pastix_int_t | ldb | ||
) |
Receive the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which may define the part to sent. |
[in,out] | work | The temporary buffer to receive the remote data |
[in,out] | b | The rhs that will be updated by the reception. |
[in] | ldb | The leading dimension of the matrix b. |
Definition at line 195 of file cpucblk_smpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void cpucblk_ssend_rhs_backward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
float * | b | ||
) |
Send the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which defines the part to sent. |
[in] | b | The rhs that will be sent to the cblk->ownerid |
Definition at line 89 of file cpucblk_smpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void cpucblk_srecv_rhs_backward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
float * | b | ||
) |
Receive the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which may define the part to sent. |
[in,out] | b | The rhs that will be receive from the cblk->ownerid. |
Definition at line 136 of file cpucblk_smpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
pastix_fixdbl_t cpublok_scompress | ( | const pastix_lr_t * | lowrank, |
pastix_int_t | M, | ||
pastix_int_t | N, | ||
pastix_lrblock_t * | lrA | ||
) |
Compress a single block from full-rank to low-rank format.
The compression to low-rank format is parameterized by the input information stored in the low-rank structure.
[in] | lowrank | The pointer to the low-rank structure describing the lo-rank compression parameters. |
[in] | M | The number of rows in the block |
[in] | N | The number of columns in the block |
[in,out] | lrA | The block to compress. On input, it points to a full-rank matrix. On output, if possible the matrix is compressed in block low-rank format. |
Definition at line 57 of file cpucblk_scompress.c.
References pastix_lr_s::core_ge2lr, pastix_lrblock_s::rk, pastix_lr_s::tolerance, pastix_lrblock_s::u, pastix_lr_s::use_reltol, and pastix_lrblock_s::v.
pastix_int_t cpucblk_scompress | ( | const SolverMatrix * | solvmtx, |
pastix_coefside_t | side, | ||
int | max_ilulvl, | ||
SolverCblk * | cblk | ||
) |
Compress a single column block from full-rank to low-rank format.
The compression to low-rank format is parameterized by the input information stored in the low-rank structure.
[in] | solvmtx | The pointer to the solver structure. |
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to compress. |
Definition at line 110 of file cpucblk_scompress.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
void cpucblk_suncompress | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Uncompress a single column block from low-rank format to full-rank format.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to uncompress. |
Definition at line 197 of file cpucblk_scompress.c.
References blok_rownbr(), cblk_colnbr(), core_slr2ge(), core_slralloc(), core_slrfree(), solver_cblk_s::fblokptr, solver_blok_s::LRblock, PastixLCoef, PastixNoTrans, PastixUCoef, and pastix_lrblock_s::u.
void cpucblk_smemory | ( | pastix_coefside_t | side, |
SolverMatrix * | solvmtx, | ||
SolverCblk * | cblk, | ||
pastix_int_t * | orig, | ||
pastix_int_t * | gain | ||
) |
Return the memory gain of the low-rank form over the full-rank form for a single column-block.
This function returns the memory gain in number of elements for a single column block when it is stored in low-rank format compared to a full rank storage.
[in] | side | Define which side of the matrix must be initialized.
|
[in] | solvmtx | The pointer to the solver structure. |
[in] | cblk | The column block to study. |
[in,out] | orig | The structure that counts the original cost of the blocks. |
[in,out] | gain | The structure that counts gain on each type of the blocks. |
Definition at line 277 of file cpucblk_scompress.c.
References cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, and solver_cblk_s::ownerid.
int cpucblk_dgeaddsp1d | ( | const SolverCblk * | cblk1, |
SolverCblk * | cblk2, | ||
const double * | L, | ||
double * | Cl, | ||
const double * | U, | ||
double * | Cu | ||
) |
Add two column blocks together.
Perform the operation: cblk2 <- cblk1 + cblk2 using core_dgeadd().
[in] | cblk1 | The pointer to the data structure that describes the panel to add. Next column blok must be accessible through cblk1[1]. |
[in] | cblk2 | The pointer to the data structure that describes the panel in which we add. Next column blok must be accessible through cblk2[1]. |
[in] | L | The pointer to the lower matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width |
[in,out] | Cl | The pointer to the lower matrix storing the coefficients of the updated panel. Must be of size cblk.stride -by- cblk.width On exit Cl = Cl + L. |
[in] | U | The pointer to the upper matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width. Ignored if NULL. |
[in,out] | Cu | The pointer to the upper matrix storing the coefficients of the updated panel. Must be of size cblk.stride -by- cblk.width On exit Cu = Cu + U. |
PASTIX_SUCCESS | on success. |
Definition at line 245 of file core_dgeadd.c.
References solver_blok_s::coefind, core_dgeadd(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), solver_cblk_s::lcolnum, solver_blok_s::lrownum, PASTIX_SUCCESS, PastixNoTrans, and solver_cblk_s::stride.
pastix_fixdbl_t cpucblk_dgemmsp | ( | pastix_coefside_t | sideA, |
pastix_trans_t | trans, | ||
const SolverCblk * | cblk, | ||
const SolverBlok * | blok, | ||
SolverCblk * | fcblk, | ||
const void * | A, | ||
const void * | B, | ||
void * | C, | ||
double * | work, | ||
pastix_int_t | lwork, | ||
const pastix_lr_t * | lowrank | ||
) |
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. 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 correct representation of A.
|
[in] | B | The pointer to the correct representation of B.
|
[in,out] | C | The pointer to the correct representation of C.
|
[in] | work | Temporary memory buffer. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 1512 of file core_dgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::stride.
void cpucblk_dtrsmsp | ( | pastix_side_t | side, |
pastix_uplo_t | uplo, | ||
pastix_trans_t | trans, | ||
pastix_diag_t | diag, | ||
const SolverCblk * | cblk, | ||
const void * | A, | ||
void * | C, | ||
const pastix_lr_t * | lowrank | ||
) |
Compute the updates associated to a column of off-diagonal blocks.
[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 B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1]. |
[in] | A | The pointer to the correct representation of A.
|
[in,out] | C | The pointer to the correct representation of C.
|
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 356 of file core_dtrsmsp.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::stride.
Referenced by cpucblk_dgetrfsp1d_panel(), cpucblk_dpotrfsp1d_panel(), and cpucblk_dsytrfsp1d_panel().
void cpucblk_dscalo | ( | pastix_trans_t | trans, |
SolverCblk * | cblk, | ||
void * | dataL, | ||
void * | dataLD | ||
) |
Copy the L term with scaling for the two-terms algorithm.
Performs LD = op(L) * D
[in] | trans |
|
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
[in,out] | dataL | The pointer to the correct representation of lower part of the data.
|
[in,out] | dataLD | The pointer to the correct representation of LD.
|
Definition at line 170 of file core_dscalo.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
pastix_fixdbl_t cpublok_dgemmsp | ( | pastix_trans_t | transB, |
const SolverCblk * | cblk, | ||
SolverCblk * | fcblk, | ||
pastix_int_t | blok_mk, | ||
pastix_int_t | blok_nk, | ||
pastix_int_t | blok_mn, | ||
const void * | A, | ||
const void * | B, | ||
void * | C, | ||
const pastix_lr_t * | lowrank | ||
) |
Compute the CPU gemm associated to a couple of off-diagonal blocks.
C_l = C_l - A_l * op(B_s), with B_s = B_l, or B_u or C_u = C_u - A_u * op(B_s), with B_s = B_l, or B_u
[in] | transB | Specify wheter B should be used as PastixNoTrans, PastixTrans, or PastixTrans in the computations. |
[in] | cblk | The cblk structure to which block A and B belong to. The A and B pointers must be one of the [lu]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 [lu]coeftab from this fcblk. Next column blok must be accessible through fcblk[1]. |
[in] | blok_mk | Specify the index of the A block in the cblk column. This index is 0-based for the diagonal block. |
[in] | blok_nk | Specify the index of the B block in the cblk column. This index is 0-based for the diagonal block. |
[in] | blok_mn | Specify the index of the C block in the fcblk column. This index is 0-based for the diagonal block. |
[in] | A | The pointer to the correct representation of A.
|
[in] | B | The pointer to the correct representation of B.
|
[in] | C | The pointer to the correct representation of C.
|
[in] | lowrank | The structure with the low-rank parameters. |
Definition at line 1655 of file core_dgemmsp.c.
References solver_cblk_s::cblktype.
pastix_fixdbl_t cpublok_dtrsmsp | ( | 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 void * | A, | ||
void * | C, | ||
const pastix_lr_t * | lowrank | ||
) |
Compute the updates associated to one off-diagonal block.
[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 B 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 correct representation of A.
|
[in,out] | C | The pointer to the correct representation of C.
|
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 678 of file core_dtrsmsp.c.
References solver_cblk_s::cblktype.
void cpublok_dscalo | ( | pastix_trans_t | trans, |
SolverCblk * | cblk, | ||
pastix_int_t | blok_m, | ||
const void * | dataA, | ||
const void * | dataD, | ||
void * | dataB | ||
) |
Copy the lower terms of the block with scaling for the two-terms algorithm.
Performs B = op(A) * D
[in] | trans |
|
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
[in] | blok_m | Index of the off-diagonal block to be solved in the cblk. All blocks facing the same cblk, in the current column block will be solved. |
[in] | dataA | The pointer to the correct representation of data of A.
|
[in] | dataD | The pointer to the correct representation of data of D.
|
[in,out] | dataB | The pointer to the correct representation of data of B.
|
Definition at line 315 of file core_dscalo.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
int cpucblk_dgetrfsp1d_getrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL, | ||
void * | dataU | ||
) |
Compute the LU factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of the lower part of the data.
|
[in,out] | dataU | The pointer to the correct representation of the upper part of the data.
|
Definition at line 217 of file core_dgetrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_dgetrfsp1d_panel().
int cpucblk_dgetrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L, | ||
void * | U | ||
) |
Compute the LU factorization of one panel.
[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]. |
[in,out] | L | The pointer to the correct representation of the lower part of the data.
|
[in,out] | U | The pointer to the correct representation of the upper part of the data.
|
Definition at line 305 of file core_dgetrfsp.c.
References cpucblk_dgetrfsp1d_getrf(), cpucblk_dtrsmsp(), PastixNonUnit, PastixNoTrans, PastixRight, PastixUnit, and PastixUpper.
Referenced by cpucblk_dgetrfsp1d().
int cpucblk_dgetrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
double * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the LU factorization of a given panel and apply all its 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]. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 355 of file core_dgetrfsp.c.
References cblk_getdataL(), cblk_getdataU(), solver_cblk_s::cblktype, cpucblk_dgetrfsp1d_panel(), solver_cblk_s::fblokptr, and solver_blok_s::fcblknm.
int cpucblk_dpotrfsp1d_potrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL | ||
) |
Compute the Cholesky factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of the lower part of the data.
|
Definition at line 220 of file core_dpotrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_dpotrfsp1d_panel().
int cpucblk_dpotrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L | ||
) |
Compute the Cholesky factorization of one panel.
[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]. |
[in,out] | L | The pointer to the correct representation of lower part of the data.
|
Definition at line 292 of file core_dpotrfsp.c.
References cpucblk_dpotrfsp1d_potrf(), cpucblk_dtrsmsp(), PastixLower, PastixNonUnit, PastixRight, and PastixTrans.
Referenced by cpucblk_dpotrfsp1d().
int cpucblk_dpotrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
double * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the Cholesky factorization of a given panel and apply all its 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]. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 334 of file core_dpotrfsp.c.
References cblk_getdataL(), solver_cblk_s::cblktype, cpucblk_dpotrfsp1d_panel(), solver_cblk_s::fblokptr, and solver_blok_s::fcblknm.
int cpucblk_dsytrfsp1d_sytrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL | ||
) |
Computes the LDL^t factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of lower part of the data.
|
Definition at line 232 of file core_dsytrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_dsytrfsp1d_panel().
int cpucblk_dsytrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L, | ||
void * | DLt | ||
) |
Compute the LDL^t factorization of one panel.
[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]. |
[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] | DLt | The pointer to the upper matrix storing the coefficients the temporary DL^t product. Must be of size cblk.stride -by- cblk.width |
Definition at line 432 of file core_dsytrfsp.c.
References solver_cblk_s::cblktype, cpucblk_dsytrfsp1d_sytrf(), cpucblk_dtrsmsp(), PastixNonUnit, PastixNoTrans, PastixRight, and PastixUpper.
int cpucblk_dsytrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
double * | DLt, | ||
double * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the LDL^t factorization of a given panel and apply all its 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]. |
[in] | DLt | Temporary memory buffer to store the transpose of DLt. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 487 of file core_dsytrfsp.c.
References cblk_getdataL(), cblk_getdataU(), and solver_cblk_s::cblktype.
void cpucblk_dalloc_lrws | ( | const SolverCblk * | cblk, |
pastix_lrblock_t * | lrblok, | ||
double * | ws | ||
) |
Initialize lrblock structure from a workspace from all blocks of the cblk associated.
The lrblock structure must be allocated before.
[in,out] | cblk | The column block associated to the initialization. |
[in] | lrblok | The structure blok to initialize. Must be allocated before. |
[in] | ws | The workspace associated with the data that will be used for initialize lrblok. |
Definition at line 96 of file cpucblk_dinit.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
void cpucblk_dalloc_lr | ( | pastix_coefside_t | side, |
SolverCblk * | cblk, | ||
int | rkmax | ||
) |
Allocate the cblk structure to store the coefficient.
When stored in low-rank format, the data pointer in the low-rank structure of each block must be initialized. This routines performs only the allocation and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to allocate. |
Definition at line 143 of file cpucblk_dinit.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
void cpucblk_dalloc_fr | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Allocate the cblk structure to store the coefficient.
When stored in low-rank format, the data pointer in the low-rank structure of each block must be initialized. This routines performs only the allocation and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to allocate. |
Definition at line 217 of file cpucblk_dinit.c.
References cblk_colnbr(), solver_cblk_s::lcoeftab, PastixLCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
void cpucblk_dalloc | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Allocate the cblk structure to store the coefficient.
When stored in low-rank format, the data pointer in the low-rank structure of each block must be initialized. This routines performs only the allocation and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to allocate. |
Definition at line 264 of file cpucblk_dinit.c.
References solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_dinit().
void cpucblk_dfree | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Free the cblk structure that store the coefficient.
This routines performs the free and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to free. |
Definition at line 317 of file cpucblk_dinit.c.
References solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, and PastixUCoef.
void cpucblk_dfillin | ( | pastix_coefside_t | side, |
const SolverMatrix * | solvmtx, | ||
const pastix_bcsc_t * | bcsc, | ||
pastix_int_t | itercblk | ||
) |
Initialize the coeftab structure from the internal bcsc.
[in] | side | Define which side of the matrix must be initialized.
|
[in] | solvmtx | PaStiX structure to store numerical data and flags |
[in] | bcsc | The internal bcsc structure that hold the graph with permutation stored by cblk. |
[in] | itercblk | The index of the cblk to fill in both bcsc and solvmtx structures. |
Definition at line 604 of file cpucblk_dinit.c.
Referenced by cpucblk_dinit().
void cpucblk_dinit | ( | pastix_coefside_t | side, |
const SolverMatrix * | solvmtx, | ||
const pastix_bcsc_t * | bcsc, | ||
pastix_int_t | itercblk, | ||
const char * | directory | ||
) |
Fully initialize a single cblk.
The cblk is allocated, intialized from the bcsc, and compressed if necessary.
[in] | side | Define which side of the matrix must be initialized.
|
[in] | solvmtx | The solver matrix data structure. |
[in] | bcsc | The internal block CSC structure to fill-in the matrix. |
[in] | itercblk | The index of the cblk to initialize. |
[in,out] | directory | The pointer to the temporary directory where to store the output files. Used only if PASTIX_DEBUG_DUMP_COEFTAB is defined. |
Try to compress the cblk if needs to be compressed
Definition at line 251 of file coeftab_dinit.c.
References cpucblk_dalloc(), cpucblk_ddump(), cpucblk_dfillin(), solver_cblk_s::ctrbcnt, pastix_fopenw(), PastixLCoef, and PastixUCoef.
void cpucblk_dgetschur | ( | const SolverCblk * | cblk, |
int | upper_part, | ||
double * | S, | ||
pastix_int_t | lds | ||
) |
Extract a cblk panel of the Schur complement to a dense lapack form.
[in] | cblk | The column block to extract in the Schur array |
[in] | upper_part | If true, the upper part is also extracted in S. |
[in,out] | S | The pointer to the top of the column of the cblk in the Schur array. On exit, the computed coefficient are copy to this array. |
[in] | lds | The leading dimension of the S array. |
Definition at line 178 of file cpucblk_dschur.c.
References solver_cblk_s::cblktype.
void cpucblk_ddump | ( | pastix_coefside_t | side, |
const SolverCblk * | cblk, | ||
FILE * | stream | ||
) |
Dump a single column block into a FILE in a human readale format.
All non-zeroes coefficients are dumped in the format: i j val with one value per row.
[in] | side | Define which side of the cblk must be printed.
|
[in] | cblk | The column block to dump into the file. |
[in,out] | stream | The FILE structure opened in write mode. |
Definition at line 51 of file coeftab_dinit.c.
References solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_dinit().
int cpucblk_ddiff | ( | pastix_coefside_t | side, |
const SolverCblk * | cblkA, | ||
SolverCblk * | cblkB | ||
) |
Compare two column blocks in full-rank format.
The second cblk is overwritten by the difference of the two column blocks. The frobenius norm of the difference is computed and the functions returns 0 if the result: || B - A || / ( || A || * eps )
is below 10. Otherwise, an error message is printed and 1 is returned.
[in] | side | Define which side of the cblk must be tested.
|
[in] | cblkA | The column block of the A matrix. |
[in,out] | cblkB | The column block of the B matrix that matches the A matrix in stucture. On exit, cblkB coefficient arrays are overwritten by the result of (B-A). |
Definition at line 63 of file cpucblk_ddiff.c.
References cblk_colnbr(), core_dgeadd(), solver_cblk_s::lcoeftab, PastixLCoef, PastixNoTrans, PastixUCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by coeftab_ddiff().
void cpucblk_dadd | ( | pastix_coefside_t | side, |
double | alpha, | ||
const SolverCblk * | cblkA, | ||
SolverCblk * | cblkB, | ||
const pastix_lr_t * | lowrank | ||
) |
Add two column bloks in full rank format.
The second cblk is overwritten by the sum of the two column blocks. B <- alpha * A + B
[in] | side | Define which side of the cblk must be tested.
|
[in] | alpha | The scalar alpha |
[in] | cblkA | The column block of the A matrix. |
[in,out] | cblkB | The column block of the B matrix On exit, cblkB coefficient arrays are overwritten by the result of alpha * A + B. |
Definition at line 358 of file cpucblk_dadd.c.
References cblk_colnbr(), solver_cblk_s::cblktype, PastixLUCoef, and solver_cblk_s::stride.
int cpucblk_dincoming_deps | ( | int | rank, |
pastix_coefside_t | side, | ||
SolverMatrix * | solvmtx, | ||
SolverCblk * | cblk | ||
) |
Wait for incoming dependencies, and return when cblk->ctrbcnt has reached 0.
[in] | mt_flag |
|
[in] | side | Define which side of the cblk must be released.
|
[in,out] | solvmtx | The solver matrix structure. |
[in,out] | cblk | The column block that contribute to fcblk. |
Definition at line 499 of file cpucblk_dmpi_coeftab.c.
References solver_cblk_s::cblktype.
void cpucblk_drelease_deps | ( | pastix_coefside_t | side, |
SolverMatrix * | solvmtx, | ||
const SolverCblk * | cblk, | ||
SolverCblk * | fcbk | ||
) |
Release the dependencies of the given cblk after an update.
[in] | side | Define which side of the cblk must be released.
|
[in,out] | solvmtx | The solver matrix structure. |
[in] | cblk | The column block that contribute to fcblk. |
[in,out] | fcbk | The facing column block that is updated by cblk. |
Definition at line 558 of file cpucblk_dmpi_coeftab.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
void cpucblk_drequest_cleanup | ( | pastix_coefside_t | side, |
pastix_int_t | sched, | ||
SolverMatrix * | solvmtx | ||
) |
Waitall routine for current cblk request.
It may be possible that some cblk will not be deallocated with the static scheduler. So a cleanup may be necessary.
[in] | side | Define which side of the cblk must be tested.
|
[in] | sched | Define which sched is used
|
[in,out] | solvmtx | The solver matrix structure. |
Definition at line 609 of file cpucblk_dmpi_coeftab.c.
References solver_cblk_s::cblktype, PastixSchedDynamic, PastixSchedSequential, and PastixSchedStatic.
void cpucblk_dsend_rhs_forward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
double * | b | ||
) |
Send the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which defines the part to sent. |
[in] | b | The rhs that will be sent to the cblk->ownerid |
Definition at line 42 of file cpucblk_dmpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void cpucblk_drecv_rhs_forward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
double * | work, | ||
pastix_int_t | nrhs, | ||
double * | b, | ||
pastix_int_t | ldb | ||
) |
Receive the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which may define the part to sent. |
[in,out] | work | The temporary buffer to receive the remote data |
[in,out] | b | The rhs that will be updated by the reception. |
[in] | ldb | The leading dimension of the matrix b. |
Definition at line 195 of file cpucblk_dmpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void cpucblk_dsend_rhs_backward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
double * | b | ||
) |
Send the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which defines the part to sent. |
[in] | b | The rhs that will be sent to the cblk->ownerid |
Definition at line 89 of file cpucblk_dmpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void cpucblk_drecv_rhs_backward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
double * | b | ||
) |
Receive the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which may define the part to sent. |
[in,out] | b | The rhs that will be receive from the cblk->ownerid. |
Definition at line 136 of file cpucblk_dmpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
pastix_fixdbl_t cpublok_dcompress | ( | const pastix_lr_t * | lowrank, |
pastix_int_t | M, | ||
pastix_int_t | N, | ||
pastix_lrblock_t * | lrA | ||
) |
Compress a single block from full-rank to low-rank format.
The compression to low-rank format is parameterized by the input information stored in the low-rank structure.
[in] | lowrank | The pointer to the low-rank structure describing the lo-rank compression parameters. |
[in] | M | The number of rows in the block |
[in] | N | The number of columns in the block |
[in,out] | lrA | The block to compress. On input, it points to a full-rank matrix. On output, if possible the matrix is compressed in block low-rank format. |
Definition at line 57 of file cpucblk_dcompress.c.
References pastix_lr_s::core_ge2lr, pastix_lrblock_s::rk, pastix_lr_s::tolerance, pastix_lrblock_s::u, pastix_lr_s::use_reltol, and pastix_lrblock_s::v.
pastix_int_t cpucblk_dcompress | ( | const SolverMatrix * | solvmtx, |
pastix_coefside_t | side, | ||
int | max_ilulvl, | ||
SolverCblk * | cblk | ||
) |
Compress a single column block from full-rank to low-rank format.
The compression to low-rank format is parameterized by the input information stored in the low-rank structure.
[in] | solvmtx | The pointer to the solver structure. |
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to compress. |
Definition at line 110 of file cpucblk_dcompress.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
void cpucblk_duncompress | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Uncompress a single column block from low-rank format to full-rank format.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to uncompress. |
Definition at line 197 of file cpucblk_dcompress.c.
References blok_rownbr(), cblk_colnbr(), core_dlr2ge(), core_dlralloc(), core_dlrfree(), solver_cblk_s::fblokptr, solver_blok_s::LRblock, PastixLCoef, PastixNoTrans, PastixUCoef, and pastix_lrblock_s::u.
void cpucblk_dmemory | ( | pastix_coefside_t | side, |
SolverMatrix * | solvmtx, | ||
SolverCblk * | cblk, | ||
pastix_int_t * | orig, | ||
pastix_int_t * | gain | ||
) |
Return the memory gain of the low-rank form over the full-rank form for a single column-block.
This function returns the memory gain in number of elements for a single column block when it is stored in low-rank format compared to a full rank storage.
[in] | side | Define which side of the matrix must be initialized.
|
[in] | solvmtx | The pointer to the solver structure. |
[in] | cblk | The column block to study. |
[in,out] | orig | The structure that counts the original cost of the blocks. |
[in,out] | gain | The structure that counts gain on each type of the blocks. |
Definition at line 277 of file cpucblk_dcompress.c.
References cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, and solver_cblk_s::ownerid.
int cpucblk_cgeaddsp1d | ( | const SolverCblk * | cblk1, |
SolverCblk * | cblk2, | ||
const pastix_complex32_t * | L, | ||
pastix_complex32_t * | Cl, | ||
const pastix_complex32_t * | U, | ||
pastix_complex32_t * | Cu | ||
) |
Add two column blocks together.
Perform the operation: cblk2 <- cblk1 + cblk2 using core_cgeadd().
[in] | cblk1 | The pointer to the data structure that describes the panel to add. Next column blok must be accessible through cblk1[1]. |
[in] | cblk2 | The pointer to the data structure that describes the panel in which we add. Next column blok must be accessible through cblk2[1]. |
[in] | L | The pointer to the lower matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width |
[in,out] | Cl | The pointer to the lower matrix storing the coefficients of the updated panel. Must be of size cblk.stride -by- cblk.width On exit Cl = Cl + L. |
[in] | U | The pointer to the upper matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width. Ignored if NULL. |
[in,out] | Cu | The pointer to the upper matrix storing the coefficients of the updated panel. Must be of size cblk.stride -by- cblk.width On exit Cu = Cu + U. |
PASTIX_SUCCESS | on success. |
Definition at line 245 of file core_cgeadd.c.
References solver_blok_s::coefind, core_cgeadd(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), solver_cblk_s::lcolnum, solver_blok_s::lrownum, PASTIX_SUCCESS, PastixNoTrans, and solver_cblk_s::stride.
pastix_fixdbl_t cpucblk_cgemmsp | ( | pastix_coefside_t | sideA, |
pastix_trans_t | trans, | ||
const SolverCblk * | cblk, | ||
const SolverBlok * | blok, | ||
SolverCblk * | fcblk, | ||
const void * | A, | ||
const void * | B, | ||
void * | C, | ||
pastix_complex32_t * | work, | ||
pastix_int_t | lwork, | ||
const pastix_lr_t * | lowrank | ||
) |
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. 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 correct representation of A.
|
[in] | B | The pointer to the correct representation of B.
|
[in,out] | C | The pointer to the correct representation of C.
|
[in] | work | Temporary memory buffer. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 1512 of file core_cgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::stride.
void cpucblk_ctrsmsp | ( | pastix_side_t | side, |
pastix_uplo_t | uplo, | ||
pastix_trans_t | trans, | ||
pastix_diag_t | diag, | ||
const SolverCblk * | cblk, | ||
const void * | A, | ||
void * | C, | ||
const pastix_lr_t * | lowrank | ||
) |
Compute the updates associated to a column of off-diagonal blocks.
[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 B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1]. |
[in] | A | The pointer to the correct representation of A.
|
[in,out] | C | The pointer to the correct representation of C.
|
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 356 of file core_ctrsmsp.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::stride.
Referenced by cpucblk_cgetrfsp1d_panel(), cpucblk_chetrfsp1d_panel(), cpucblk_cpotrfsp1d_panel(), cpucblk_cpxtrfsp1d_panel(), and cpucblk_csytrfsp1d_panel().
void cpucblk_cscalo | ( | pastix_trans_t | trans, |
SolverCblk * | cblk, | ||
void * | dataL, | ||
void * | dataLD | ||
) |
Copy the L term with scaling for the two-terms algorithm.
Performs LD = op(L) * D
[in] | trans |
|
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
[in,out] | dataL | The pointer to the correct representation of lower part of the data.
|
[in,out] | dataLD | The pointer to the correct representation of LD.
|
Definition at line 170 of file core_cscalo.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
pastix_fixdbl_t cpublok_cgemmsp | ( | pastix_trans_t | transB, |
const SolverCblk * | cblk, | ||
SolverCblk * | fcblk, | ||
pastix_int_t | blok_mk, | ||
pastix_int_t | blok_nk, | ||
pastix_int_t | blok_mn, | ||
const void * | A, | ||
const void * | B, | ||
void * | C, | ||
const pastix_lr_t * | lowrank | ||
) |
Compute the CPU gemm associated to a couple of off-diagonal blocks.
C_l = C_l - A_l * op(B_s), with B_s = B_l, or B_u or C_u = C_u - A_u * op(B_s), with B_s = B_l, or B_u
[in] | transB | Specify wheter B should be used as PastixNoTrans, PastixTrans, or PastixConjTrans in the computations. |
[in] | cblk | The cblk structure to which block A and B belong to. The A and B pointers must be one of the [lu]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 [lu]coeftab from this fcblk. Next column blok must be accessible through fcblk[1]. |
[in] | blok_mk | Specify the index of the A block in the cblk column. This index is 0-based for the diagonal block. |
[in] | blok_nk | Specify the index of the B block in the cblk column. This index is 0-based for the diagonal block. |
[in] | blok_mn | Specify the index of the C block in the fcblk column. This index is 0-based for the diagonal block. |
[in] | A | The pointer to the correct representation of A.
|
[in] | B | The pointer to the correct representation of B.
|
[in] | C | The pointer to the correct representation of C.
|
[in] | lowrank | The structure with the low-rank parameters. |
Definition at line 1655 of file core_cgemmsp.c.
References solver_cblk_s::cblktype.
pastix_fixdbl_t cpublok_ctrsmsp | ( | 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 void * | A, | ||
void * | C, | ||
const pastix_lr_t * | lowrank | ||
) |
Compute the updates associated to one off-diagonal block.
[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 B 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 correct representation of A.
|
[in,out] | C | The pointer to the correct representation of C.
|
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 678 of file core_ctrsmsp.c.
References solver_cblk_s::cblktype.
void cpublok_cscalo | ( | pastix_trans_t | trans, |
SolverCblk * | cblk, | ||
pastix_int_t | blok_m, | ||
const void * | dataA, | ||
const void * | dataD, | ||
void * | dataB | ||
) |
Copy the lower terms of the block with scaling for the two-terms algorithm.
Performs B = op(A) * D
[in] | trans |
|
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
[in] | blok_m | Index of the off-diagonal block to be solved in the cblk. All blocks facing the same cblk, in the current column block will be solved. |
[in] | dataA | The pointer to the correct representation of data of A.
|
[in] | dataD | The pointer to the correct representation of data of D.
|
[in,out] | dataB | The pointer to the correct representation of data of B.
|
Definition at line 315 of file core_cscalo.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
int cpucblk_cgetrfsp1d_getrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL, | ||
void * | dataU | ||
) |
Compute the LU factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of the lower part of the data.
|
[in,out] | dataU | The pointer to the correct representation of the upper part of the data.
|
Definition at line 217 of file core_cgetrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_cgetrfsp1d_panel().
int cpucblk_cgetrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L, | ||
void * | U | ||
) |
Compute the LU factorization of one panel.
[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]. |
[in,out] | L | The pointer to the correct representation of the lower part of the data.
|
[in,out] | U | The pointer to the correct representation of the upper part of the data.
|
Definition at line 305 of file core_cgetrfsp.c.
References cpucblk_cgetrfsp1d_getrf(), cpucblk_ctrsmsp(), PastixNonUnit, PastixNoTrans, PastixRight, PastixUnit, and PastixUpper.
Referenced by cpucblk_cgetrfsp1d().
int cpucblk_cgetrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex32_t * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the LU factorization of a given panel and apply all its 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]. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 355 of file core_cgetrfsp.c.
References cblk_getdataL(), cblk_getdataU(), solver_cblk_s::cblktype, cpucblk_cgetrfsp1d_panel(), solver_cblk_s::fblokptr, and solver_blok_s::fcblknm.
int cpucblk_cpotrfsp1d_potrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL | ||
) |
Compute the Cholesky factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of the lower part of the data.
|
Definition at line 220 of file core_cpotrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_cpotrfsp1d_panel().
int cpucblk_cpotrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L | ||
) |
Compute the Cholesky factorization of one panel.
[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]. |
[in,out] | L | The pointer to the correct representation of lower part of the data.
|
Definition at line 292 of file core_cpotrfsp.c.
References cpucblk_cpotrfsp1d_potrf(), cpucblk_ctrsmsp(), PastixConjTrans, PastixLower, PastixNonUnit, and PastixRight.
Referenced by cpucblk_cpotrfsp1d().
int cpucblk_cpotrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex32_t * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the Cholesky factorization of a given panel and apply all its 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]. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 334 of file core_cpotrfsp.c.
References cblk_getdataL(), solver_cblk_s::cblktype, cpucblk_cpotrfsp1d_panel(), solver_cblk_s::fblokptr, and solver_blok_s::fcblknm.
int cpucblk_chetrfsp1d_hetrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL | ||
) |
Computes the LDL^h factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of lower part of the data.
|
Definition at line 234 of file core_chetrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_chetrfsp1d_panel().
int cpucblk_chetrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L, | ||
void * | DLh | ||
) |
Compute the LDL^h factorization of one panel.
[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]. |
[in,out] | L | The pointer to the correct representation of lower part of the data.
|
[in,out] | DLh | The pointer to the correct representation of Dlh matrix (stored in the upper part bu default).
|
Definition at line 437 of file core_chetrfsp.c.
References solver_cblk_s::cblktype, cpucblk_chetrfsp1d_hetrf(), cpucblk_ctrsmsp(), PastixNonUnit, PastixNoTrans, PastixRight, and PastixUpper.
int cpucblk_chetrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex32_t * | DLh, | ||
pastix_complex32_t * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the LDL^h factorization of a given panel and apply all its 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]. |
[in] | DLh | Temporary memory buffer to store the conjugate transpose of DLh. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 492 of file core_chetrfsp.c.
References cblk_getdataL(), cblk_getdataU(), and solver_cblk_s::cblktype.
int cpucblk_cpxtrfsp1d_pxtrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL | ||
) |
Compute the LL^t factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of the lower part the data.
|
Definition at line 212 of file core_cpxtrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_cpxtrfsp1d_panel().
int cpucblk_cpxtrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L | ||
) |
Compute the LL^t factorization of one panel.
[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]. |
[in,out] | L | The pointer to the correct representation of the lower part the data.
|
Definition at line 284 of file core_cpxtrfsp.c.
References cpucblk_cpxtrfsp1d_pxtrf(), cpucblk_ctrsmsp(), PastixLower, PastixNonUnit, PastixRight, and PastixTrans.
Referenced by cpucblk_cpxtrfsp1d().
int cpucblk_cpxtrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex32_t * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the LL^t factorization of a given panel and apply all its 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]. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 326 of file core_cpxtrfsp.c.
References cblk_getdataL(), solver_cblk_s::cblktype, cpucblk_cpxtrfsp1d_panel(), solver_cblk_s::fblokptr, and solver_blok_s::fcblknm.
int cpucblk_csytrfsp1d_sytrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL | ||
) |
Computes the LDL^t factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of lower part of the data.
|
Definition at line 232 of file core_csytrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_csytrfsp1d_panel().
int cpucblk_csytrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L, | ||
void * | DLt | ||
) |
Compute the LDL^t factorization of one panel.
[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]. |
[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] | DLt | The pointer to the upper matrix storing the coefficients the temporary DL^t product. Must be of size cblk.stride -by- cblk.width |
Definition at line 432 of file core_csytrfsp.c.
References solver_cblk_s::cblktype, cpucblk_csytrfsp1d_sytrf(), cpucblk_ctrsmsp(), PastixNonUnit, PastixNoTrans, PastixRight, and PastixUpper.
int cpucblk_csytrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex32_t * | DLt, | ||
pastix_complex32_t * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the LDL^t factorization of a given panel and apply all its 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]. |
[in] | DLt | Temporary memory buffer to store the transpose of DLt. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 487 of file core_csytrfsp.c.
References cblk_getdataL(), cblk_getdataU(), and solver_cblk_s::cblktype.
void cpucblk_calloc_lrws | ( | const SolverCblk * | cblk, |
pastix_lrblock_t * | lrblok, | ||
pastix_complex32_t * | ws | ||
) |
Initialize lrblock structure from a workspace from all blocks of the cblk associated.
The lrblock structure must be allocated before.
[in,out] | cblk | The column block associated to the initialization. |
[in] | lrblok | The structure blok to initialize. Must be allocated before. |
[in] | ws | The workspace associated with the data that will be used for initialize lrblok. |
Definition at line 96 of file cpucblk_cinit.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
void cpucblk_calloc_lr | ( | pastix_coefside_t | side, |
SolverCblk * | cblk, | ||
int | rkmax | ||
) |
Allocate the cblk structure to store the coefficient.
When stored in low-rank format, the data pointer in the low-rank structure of each block must be initialized. This routines performs only the allocation and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to allocate. |
Definition at line 143 of file cpucblk_cinit.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
void cpucblk_calloc_fr | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Allocate the cblk structure to store the coefficient.
When stored in low-rank format, the data pointer in the low-rank structure of each block must be initialized. This routines performs only the allocation and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to allocate. |
Definition at line 217 of file cpucblk_cinit.c.
References cblk_colnbr(), solver_cblk_s::lcoeftab, PastixLCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
void cpucblk_calloc | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Allocate the cblk structure to store the coefficient.
When stored in low-rank format, the data pointer in the low-rank structure of each block must be initialized. This routines performs only the allocation and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to allocate. |
Definition at line 264 of file cpucblk_cinit.c.
References solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_cinit().
void cpucblk_cfree | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Free the cblk structure that store the coefficient.
This routines performs the free and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to free. |
Definition at line 317 of file cpucblk_cinit.c.
References solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, and PastixUCoef.
void cpucblk_cfillin | ( | pastix_coefside_t | side, |
const SolverMatrix * | solvmtx, | ||
const pastix_bcsc_t * | bcsc, | ||
pastix_int_t | itercblk | ||
) |
Initialize the coeftab structure from the internal bcsc.
[in] | side | Define which side of the matrix must be initialized.
|
[in] | solvmtx | PaStiX structure to store numerical data and flags |
[in] | bcsc | The internal bcsc structure that hold the graph with permutation stored by cblk. |
[in] | itercblk | The index of the cblk to fill in both bcsc and solvmtx structures. |
Definition at line 604 of file cpucblk_cinit.c.
Referenced by cpucblk_cinit().
void cpucblk_cinit | ( | pastix_coefside_t | side, |
const SolverMatrix * | solvmtx, | ||
const pastix_bcsc_t * | bcsc, | ||
pastix_int_t | itercblk, | ||
const char * | directory | ||
) |
Fully initialize a single cblk.
The cblk is allocated, intialized from the bcsc, and compressed if necessary.
[in] | side | Define which side of the matrix must be initialized.
|
[in] | solvmtx | The solver matrix data structure. |
[in] | bcsc | The internal block CSC structure to fill-in the matrix. |
[in] | itercblk | The index of the cblk to initialize. |
[in,out] | directory | The pointer to the temporary directory where to store the output files. Used only if PASTIX_DEBUG_DUMP_COEFTAB is defined. |
Try to compress the cblk if needs to be compressed
Definition at line 251 of file coeftab_cinit.c.
References cpucblk_calloc(), cpucblk_cdump(), cpucblk_cfillin(), solver_cblk_s::ctrbcnt, pastix_fopenw(), PastixLCoef, and PastixUCoef.
void cpucblk_cgetschur | ( | const SolverCblk * | cblk, |
int | upper_part, | ||
pastix_complex32_t * | S, | ||
pastix_int_t | lds | ||
) |
Extract a cblk panel of the Schur complement to a dense lapack form.
[in] | cblk | The column block to extract in the Schur array |
[in] | upper_part | If true, the upper part is also extracted in S. |
[in,out] | S | The pointer to the top of the column of the cblk in the Schur array. On exit, the computed coefficient are copy to this array. |
[in] | lds | The leading dimension of the S array. |
Definition at line 178 of file cpucblk_cschur.c.
References solver_cblk_s::cblktype.
void cpucblk_cdump | ( | pastix_coefside_t | side, |
const SolverCblk * | cblk, | ||
FILE * | stream | ||
) |
Dump a single column block into a FILE in a human readale format.
All non-zeroes coefficients are dumped in the format: i j val with one value per row.
[in] | side | Define which side of the cblk must be printed.
|
[in] | cblk | The column block to dump into the file. |
[in,out] | stream | The FILE structure opened in write mode. |
Definition at line 51 of file coeftab_cinit.c.
References solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_cinit().
int cpucblk_cdiff | ( | pastix_coefside_t | side, |
const SolverCblk * | cblkA, | ||
SolverCblk * | cblkB | ||
) |
Compare two column blocks in full-rank format.
The second cblk is overwritten by the difference of the two column blocks. The frobenius norm of the difference is computed and the functions returns 0 if the result: || B - A || / ( || A || * eps )
is below 10. Otherwise, an error message is printed and 1 is returned.
[in] | side | Define which side of the cblk must be tested.
|
[in] | cblkA | The column block of the A matrix. |
[in,out] | cblkB | The column block of the B matrix that matches the A matrix in stucture. On exit, cblkB coefficient arrays are overwritten by the result of (B-A). |
Definition at line 63 of file cpucblk_cdiff.c.
References cblk_colnbr(), core_cgeadd(), solver_cblk_s::lcoeftab, PastixLCoef, PastixNoTrans, PastixUCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by coeftab_cdiff().
void cpucblk_cadd | ( | pastix_coefside_t | side, |
float | alpha, | ||
const SolverCblk * | cblkA, | ||
SolverCblk * | cblkB, | ||
const pastix_lr_t * | lowrank | ||
) |
Add two column bloks in full rank format.
The second cblk is overwritten by the sum of the two column blocks. B <- alpha * A + B
[in] | side | Define which side of the cblk must be tested.
|
[in] | alpha | The scalar alpha |
[in] | cblkA | The column block of the A matrix. |
[in,out] | cblkB | The column block of the B matrix On exit, cblkB coefficient arrays are overwritten by the result of alpha * A + B. |
Definition at line 358 of file cpucblk_cadd.c.
References cblk_colnbr(), solver_cblk_s::cblktype, PastixLUCoef, and solver_cblk_s::stride.
int cpucblk_cincoming_deps | ( | int | rank, |
pastix_coefside_t | side, | ||
SolverMatrix * | solvmtx, | ||
SolverCblk * | cblk | ||
) |
Wait for incoming dependencies, and return when cblk->ctrbcnt has reached 0.
[in] | mt_flag |
|
[in] | side | Define which side of the cblk must be released.
|
[in,out] | solvmtx | The solver matrix structure. |
[in,out] | cblk | The column block that contribute to fcblk. |
Definition at line 499 of file cpucblk_cmpi_coeftab.c.
References solver_cblk_s::cblktype.
void cpucblk_crelease_deps | ( | pastix_coefside_t | side, |
SolverMatrix * | solvmtx, | ||
const SolverCblk * | cblk, | ||
SolverCblk * | fcbk | ||
) |
Release the dependencies of the given cblk after an update.
[in] | side | Define which side of the cblk must be released.
|
[in,out] | solvmtx | The solver matrix structure. |
[in] | cblk | The column block that contribute to fcblk. |
[in,out] | fcbk | The facing column block that is updated by cblk. |
Definition at line 558 of file cpucblk_cmpi_coeftab.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
void cpucblk_crequest_cleanup | ( | pastix_coefside_t | side, |
pastix_int_t | sched, | ||
SolverMatrix * | solvmtx | ||
) |
Waitall routine for current cblk request.
It may be possible that some cblk will not be deallocated with the static scheduler. So a cleanup may be necessary.
[in] | side | Define which side of the cblk must be tested.
|
[in] | sched | Define which sched is used
|
[in,out] | solvmtx | The solver matrix structure. |
Definition at line 609 of file cpucblk_cmpi_coeftab.c.
References solver_cblk_s::cblktype, PastixSchedDynamic, PastixSchedSequential, and PastixSchedStatic.
void cpucblk_csend_rhs_forward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex32_t * | b | ||
) |
Send the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which defines the part to sent. |
[in] | b | The rhs that will be sent to the cblk->ownerid |
Definition at line 42 of file cpucblk_cmpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void cpucblk_crecv_rhs_forward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex32_t * | work, | ||
pastix_int_t | nrhs, | ||
pastix_complex32_t * | b, | ||
pastix_int_t | ldb | ||
) |
Receive the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which may define the part to sent. |
[in,out] | work | The temporary buffer to receive the remote data |
[in,out] | b | The rhs that will be updated by the reception. |
[in] | ldb | The leading dimension of the matrix b. |
Definition at line 195 of file cpucblk_cmpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void cpucblk_csend_rhs_backward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex32_t * | b | ||
) |
Send the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which defines the part to sent. |
[in] | b | The rhs that will be sent to the cblk->ownerid |
Definition at line 89 of file cpucblk_cmpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void cpucblk_crecv_rhs_backward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex32_t * | b | ||
) |
Receive the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which may define the part to sent. |
[in,out] | b | The rhs that will be receive from the cblk->ownerid. |
Definition at line 136 of file cpucblk_cmpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
pastix_fixdbl_t cpublok_ccompress | ( | const pastix_lr_t * | lowrank, |
pastix_int_t | M, | ||
pastix_int_t | N, | ||
pastix_lrblock_t * | lrA | ||
) |
Compress a single block from full-rank to low-rank format.
The compression to low-rank format is parameterized by the input information stored in the low-rank structure.
[in] | lowrank | The pointer to the low-rank structure describing the lo-rank compression parameters. |
[in] | M | The number of rows in the block |
[in] | N | The number of columns in the block |
[in,out] | lrA | The block to compress. On input, it points to a full-rank matrix. On output, if possible the matrix is compressed in block low-rank format. |
Definition at line 57 of file cpucblk_ccompress.c.
References pastix_lr_s::core_ge2lr, pastix_lrblock_s::rk, pastix_lr_s::tolerance, pastix_lrblock_s::u, pastix_lr_s::use_reltol, and pastix_lrblock_s::v.
pastix_int_t cpucblk_ccompress | ( | const SolverMatrix * | solvmtx, |
pastix_coefside_t | side, | ||
int | max_ilulvl, | ||
SolverCblk * | cblk | ||
) |
Compress a single column block from full-rank to low-rank format.
The compression to low-rank format is parameterized by the input information stored in the low-rank structure.
[in] | solvmtx | The pointer to the solver structure. |
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to compress. |
Definition at line 110 of file cpucblk_ccompress.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
void cpucblk_cuncompress | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Uncompress a single column block from low-rank format to full-rank format.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to uncompress. |
Definition at line 197 of file cpucblk_ccompress.c.
References blok_rownbr(), cblk_colnbr(), core_clr2ge(), core_clralloc(), core_clrfree(), solver_cblk_s::fblokptr, solver_blok_s::LRblock, PastixLCoef, PastixNoTrans, PastixUCoef, and pastix_lrblock_s::u.
void cpucblk_cmemory | ( | pastix_coefside_t | side, |
SolverMatrix * | solvmtx, | ||
SolverCblk * | cblk, | ||
pastix_int_t * | orig, | ||
pastix_int_t * | gain | ||
) |
Return the memory gain of the low-rank form over the full-rank form for a single column-block.
This function returns the memory gain in number of elements for a single column block when it is stored in low-rank format compared to a full rank storage.
[in] | side | Define which side of the matrix must be initialized.
|
[in] | solvmtx | The pointer to the solver structure. |
[in] | cblk | The column block to study. |
[in,out] | orig | The structure that counts the original cost of the blocks. |
[in,out] | gain | The structure that counts gain on each type of the blocks. |
Definition at line 277 of file cpucblk_ccompress.c.
References cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, and solver_cblk_s::ownerid.
int cpucblk_zgeaddsp1d | ( | const SolverCblk * | cblk1, |
SolverCblk * | cblk2, | ||
const pastix_complex64_t * | L, | ||
pastix_complex64_t * | Cl, | ||
const pastix_complex64_t * | U, | ||
pastix_complex64_t * | Cu | ||
) |
Add two column blocks together.
Perform the operation: cblk2 <- cblk1 + cblk2 using core_zgeadd().
[in] | cblk1 | The pointer to the data structure that describes the panel to add. Next column blok must be accessible through cblk1[1]. |
[in] | cblk2 | The pointer to the data structure that describes the panel in which we add. Next column blok must be accessible through cblk2[1]. |
[in] | L | The pointer to the lower matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width |
[in,out] | Cl | The pointer to the lower matrix storing the coefficients of the updated panel. Must be of size cblk.stride -by- cblk.width On exit Cl = Cl + L. |
[in] | U | The pointer to the upper matrix storing the coefficients of the panel. Must be of size cblk.stride -by- cblk.width. Ignored if NULL. |
[in,out] | Cu | The pointer to the upper matrix storing the coefficients of the updated panel. Must be of size cblk.stride -by- cblk.width On exit Cu = Cu + U. |
PASTIX_SUCCESS | on success. |
Definition at line 245 of file core_zgeadd.c.
References solver_blok_s::coefind, core_zgeadd(), solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, is_block_inside_fblock(), solver_cblk_s::lcolnum, solver_blok_s::lrownum, PASTIX_SUCCESS, PastixNoTrans, and solver_cblk_s::stride.
pastix_fixdbl_t cpucblk_zgemmsp | ( | pastix_coefside_t | sideA, |
pastix_trans_t | trans, | ||
const SolverCblk * | cblk, | ||
const SolverBlok * | blok, | ||
SolverCblk * | fcblk, | ||
const void * | A, | ||
const void * | B, | ||
void * | C, | ||
pastix_complex64_t * | work, | ||
pastix_int_t | lwork, | ||
const pastix_lr_t * | lowrank | ||
) |
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. 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 correct representation of A.
|
[in] | B | The pointer to the correct representation of B.
|
[in,out] | C | The pointer to the correct representation of C.
|
[in] | work | Temporary memory buffer. |
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 1512 of file core_zgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::stride.
void cpucblk_ztrsmsp | ( | pastix_side_t | side, |
pastix_uplo_t | uplo, | ||
pastix_trans_t | trans, | ||
pastix_diag_t | diag, | ||
const SolverCblk * | cblk, | ||
const void * | A, | ||
void * | C, | ||
const pastix_lr_t * | lowrank | ||
) |
Compute the updates associated to a column of off-diagonal blocks.
[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 B pointers must be the coeftab of this column block. Next column blok must be accessible through cblk[1]. |
[in] | A | The pointer to the correct representation of A.
|
[in,out] | C | The pointer to the correct representation of C.
|
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 356 of file core_ztrsmsp.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::stride.
Referenced by cpucblk_zgetrfsp1d_panel(), cpucblk_zhetrfsp1d_panel(), cpucblk_zpotrfsp1d_panel(), cpucblk_zpxtrfsp1d_panel(), and cpucblk_zsytrfsp1d_panel().
void cpucblk_zscalo | ( | pastix_trans_t | trans, |
SolverCblk * | cblk, | ||
void * | dataL, | ||
void * | dataLD | ||
) |
Copy the L term with scaling for the two-terms algorithm.
Performs LD = op(L) * D
[in] | trans |
|
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
[in,out] | dataL | The pointer to the correct representation of lower part of the data.
|
[in,out] | dataLD | The pointer to the correct representation of LD.
|
Definition at line 170 of file core_zscalo.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
pastix_fixdbl_t cpublok_zgemmsp | ( | pastix_trans_t | transB, |
const SolverCblk * | cblk, | ||
SolverCblk * | fcblk, | ||
pastix_int_t | blok_mk, | ||
pastix_int_t | blok_nk, | ||
pastix_int_t | blok_mn, | ||
const void * | A, | ||
const void * | B, | ||
void * | C, | ||
const pastix_lr_t * | lowrank | ||
) |
Compute the CPU gemm associated to a couple of off-diagonal blocks.
C_l = C_l - A_l * op(B_s), with B_s = B_l, or B_u or C_u = C_u - A_u * op(B_s), with B_s = B_l, or B_u
[in] | transB | Specify wheter B should be used as PastixNoTrans, PastixTrans, or PastixConjTrans in the computations. |
[in] | cblk | The cblk structure to which block A and B belong to. The A and B pointers must be one of the [lu]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 [lu]coeftab from this fcblk. Next column blok must be accessible through fcblk[1]. |
[in] | blok_mk | Specify the index of the A block in the cblk column. This index is 0-based for the diagonal block. |
[in] | blok_nk | Specify the index of the B block in the cblk column. This index is 0-based for the diagonal block. |
[in] | blok_mn | Specify the index of the C block in the fcblk column. This index is 0-based for the diagonal block. |
[in] | A | The pointer to the correct representation of A.
|
[in] | B | The pointer to the correct representation of B.
|
[in] | C | The pointer to the correct representation of C.
|
[in] | lowrank | The structure with the low-rank parameters. |
Definition at line 1655 of file core_zgemmsp.c.
References solver_cblk_s::cblktype.
pastix_fixdbl_t cpublok_ztrsmsp | ( | 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 void * | A, | ||
void * | C, | ||
const pastix_lr_t * | lowrank | ||
) |
Compute the updates associated to one off-diagonal block.
[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 B 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 correct representation of A.
|
[in,out] | C | The pointer to the correct representation of C.
|
[in] | lowrank | The structure with low-rank parameters. |
Definition at line 678 of file core_ztrsmsp.c.
References solver_cblk_s::cblktype.
void cpublok_zscalo | ( | pastix_trans_t | trans, |
SolverCblk * | cblk, | ||
pastix_int_t | blok_m, | ||
const void * | dataA, | ||
const void * | dataD, | ||
void * | dataB | ||
) |
Copy the lower terms of the block with scaling for the two-terms algorithm.
Performs B = op(A) * D
[in] | trans |
|
[in] | cblk | Pointer to the structure representing the panel to factorize in the cblktab array. Next column blok must be accessible through cblk[1]. |
[in] | blok_m | Index of the off-diagonal block to be solved in the cblk. All blocks facing the same cblk, in the current column block will be solved. |
[in] | dataA | The pointer to the correct representation of data of A.
|
[in] | dataD | The pointer to the correct representation of data of D.
|
[in,out] | dataB | The pointer to the correct representation of data of B.
|
Definition at line 315 of file core_zscalo.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
int cpucblk_zgetrfsp1d_getrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL, | ||
void * | dataU | ||
) |
Compute the LU factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of the lower part of the data.
|
[in,out] | dataU | The pointer to the correct representation of the upper part of the data.
|
Definition at line 217 of file core_zgetrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_zgetrfsp1d_panel().
int cpucblk_zgetrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L, | ||
void * | U | ||
) |
Compute the LU factorization of one panel.
[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]. |
[in,out] | L | The pointer to the correct representation of the lower part of the data.
|
[in,out] | U | The pointer to the correct representation of the upper part of the data.
|
Definition at line 305 of file core_zgetrfsp.c.
References cpucblk_zgetrfsp1d_getrf(), cpucblk_ztrsmsp(), PastixNonUnit, PastixNoTrans, PastixRight, PastixUnit, and PastixUpper.
Referenced by cpucblk_zgetrfsp1d().
int cpucblk_zgetrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex64_t * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the LU factorization of a given panel and apply all its 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]. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 355 of file core_zgetrfsp.c.
References cblk_getdataL(), cblk_getdataU(), solver_cblk_s::cblktype, cpucblk_zgetrfsp1d_panel(), solver_cblk_s::fblokptr, and solver_blok_s::fcblknm.
int cpucblk_zpotrfsp1d_potrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL | ||
) |
Compute the Cholesky factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of the lower part of the data.
|
Definition at line 220 of file core_zpotrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_zpotrfsp1d_panel().
int cpucblk_zpotrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L | ||
) |
Compute the Cholesky factorization of one panel.
[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]. |
[in,out] | L | The pointer to the correct representation of lower part of the data.
|
Definition at line 292 of file core_zpotrfsp.c.
References cpucblk_zpotrfsp1d_potrf(), cpucblk_ztrsmsp(), PastixConjTrans, PastixLower, PastixNonUnit, and PastixRight.
Referenced by cpucblk_zpotrfsp1d().
int cpucblk_zpotrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex64_t * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the Cholesky factorization of a given panel and apply all its 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]. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 334 of file core_zpotrfsp.c.
References cblk_getdataL(), solver_cblk_s::cblktype, cpucblk_zpotrfsp1d_panel(), solver_cblk_s::fblokptr, and solver_blok_s::fcblknm.
int cpucblk_zhetrfsp1d_hetrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL | ||
) |
Computes the LDL^h factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of lower part of the data.
|
Definition at line 234 of file core_zhetrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_zhetrfsp1d_panel().
int cpucblk_zhetrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L, | ||
void * | DLh | ||
) |
Compute the LDL^h factorization of one panel.
[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]. |
[in,out] | L | The pointer to the correct representation of lower part of the data.
|
[in,out] | DLh | The pointer to the correct representation of Dlh matrix (stored in the upper part bu default).
|
Definition at line 437 of file core_zhetrfsp.c.
References solver_cblk_s::cblktype, cpucblk_zhetrfsp1d_hetrf(), cpucblk_ztrsmsp(), PastixNonUnit, PastixNoTrans, PastixRight, and PastixUpper.
int cpucblk_zhetrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex64_t * | DLh, | ||
pastix_complex64_t * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the LDL^h factorization of a given panel and apply all its 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]. |
[in] | DLh | Temporary memory buffer to store the conjugate transpose of DLh. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 492 of file core_zhetrfsp.c.
References cblk_getdataL(), cblk_getdataU(), and solver_cblk_s::cblktype.
int cpucblk_zpxtrfsp1d_pxtrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL | ||
) |
Compute the LL^t factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of the lower part the data.
|
Definition at line 212 of file core_zpxtrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_zpxtrfsp1d_panel().
int cpucblk_zpxtrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L | ||
) |
Compute the LL^t factorization of one panel.
[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]. |
[in,out] | L | The pointer to the correct representation of the lower part the data.
|
Definition at line 284 of file core_zpxtrfsp.c.
References cpucblk_zpxtrfsp1d_pxtrf(), cpucblk_ztrsmsp(), PastixLower, PastixNonUnit, PastixRight, and PastixTrans.
Referenced by cpucblk_zpxtrfsp1d().
int cpucblk_zpxtrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex64_t * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the LL^t factorization of a given panel and apply all its 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]. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 326 of file core_zpxtrfsp.c.
References cblk_getdataL(), solver_cblk_s::cblktype, cpucblk_zpxtrfsp1d_panel(), solver_cblk_s::fblokptr, and solver_blok_s::fcblknm.
int cpucblk_zsytrfsp1d_sytrf | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | dataL | ||
) |
Computes the LDL^t factorization of the diagonal block in a panel.
[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]. |
[in,out] | dataL | The pointer to the correct representation of lower part of the data.
|
Definition at line 232 of file core_zsytrfsp.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and solver_cblk_s::lcolnum.
Referenced by cpucblk_zsytrfsp1d_panel().
int cpucblk_zsytrfsp1d_panel | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
void * | L, | ||
void * | DLt | ||
) |
Compute the LDL^t factorization of one panel.
[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]. |
[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] | DLt | The pointer to the upper matrix storing the coefficients the temporary DL^t product. Must be of size cblk.stride -by- cblk.width |
Definition at line 432 of file core_zsytrfsp.c.
References solver_cblk_s::cblktype, cpucblk_zsytrfsp1d_sytrf(), cpucblk_ztrsmsp(), PastixNonUnit, PastixNoTrans, PastixRight, and PastixUpper.
int cpucblk_zsytrfsp1d | ( | SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex64_t * | DLt, | ||
pastix_complex64_t * | work, | ||
pastix_int_t | lwork | ||
) |
Perform the LDL^t factorization of a given panel and apply all its 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]. |
[in] | DLt | Temporary memory buffer to store the transpose of DLt. |
[in] | work | Temporary memory buffer. |
[in] | lwork | Temporary workspace dimension. |
Definition at line 487 of file core_zsytrfsp.c.
References cblk_getdataL(), cblk_getdataU(), and solver_cblk_s::cblktype.
void cpucblk_zalloc_lrws | ( | const SolverCblk * | cblk, |
pastix_lrblock_t * | lrblok, | ||
pastix_complex64_t * | ws | ||
) |
Initialize lrblock structure from a workspace from all blocks of the cblk associated.
The lrblock structure must be allocated before.
[in,out] | cblk | The column block associated to the initialization. |
[in] | lrblok | The structure blok to initialize. Must be allocated before. |
[in] | ws | The workspace associated with the data that will be used for initialize lrblok. |
Definition at line 96 of file cpucblk_zinit.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
void cpucblk_zalloc_lr | ( | pastix_coefside_t | side, |
SolverCblk * | cblk, | ||
int | rkmax | ||
) |
Allocate the cblk structure to store the coefficient.
When stored in low-rank format, the data pointer in the low-rank structure of each block must be initialized. This routines performs only the allocation and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to allocate. |
Definition at line 143 of file cpucblk_zinit.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
void cpucblk_zalloc_fr | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Allocate the cblk structure to store the coefficient.
When stored in low-rank format, the data pointer in the low-rank structure of each block must be initialized. This routines performs only the allocation and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to allocate. |
Definition at line 217 of file cpucblk_zinit.c.
References cblk_colnbr(), solver_cblk_s::lcoeftab, PastixLCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
void cpucblk_zalloc | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Allocate the cblk structure to store the coefficient.
When stored in low-rank format, the data pointer in the low-rank structure of each block must be initialized. This routines performs only the allocation and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to allocate. |
Definition at line 264 of file cpucblk_zinit.c.
References solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_zinit().
void cpucblk_zfree | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Free the cblk structure that store the coefficient.
This routines performs the free and is thread-safe if called in parallel on the Lower and upper part.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to free. |
Definition at line 317 of file cpucblk_zinit.c.
References solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, and PastixUCoef.
void cpucblk_zfillin | ( | pastix_coefside_t | side, |
const SolverMatrix * | solvmtx, | ||
const pastix_bcsc_t * | bcsc, | ||
pastix_int_t | itercblk | ||
) |
Initialize the coeftab structure from the internal bcsc.
[in] | side | Define which side of the matrix must be initialized.
|
[in] | solvmtx | PaStiX structure to store numerical data and flags |
[in] | bcsc | The internal bcsc structure that hold the graph with permutation stored by cblk. |
[in] | itercblk | The index of the cblk to fill in both bcsc and solvmtx structures. |
Definition at line 604 of file cpucblk_zinit.c.
Referenced by cpucblk_zinit().
void cpucblk_zinit | ( | pastix_coefside_t | side, |
const SolverMatrix * | solvmtx, | ||
const pastix_bcsc_t * | bcsc, | ||
pastix_int_t | itercblk, | ||
const char * | directory | ||
) |
Fully initialize a single cblk.
The cblk is allocated, intialized from the bcsc, and compressed if necessary.
[in] | side | Define which side of the matrix must be initialized.
|
[in] | solvmtx | The solver matrix data structure. |
[in] | bcsc | The internal block CSC structure to fill-in the matrix. |
[in] | itercblk | The index of the cblk to initialize. |
[in,out] | directory | The pointer to the temporary directory where to store the output files. Used only if PASTIX_DEBUG_DUMP_COEFTAB is defined. |
Try to compress the cblk if needs to be compressed
Definition at line 251 of file coeftab_zinit.c.
References cpucblk_zalloc(), cpucblk_zdump(), cpucblk_zfillin(), solver_cblk_s::ctrbcnt, pastix_fopenw(), PastixLCoef, and PastixUCoef.
void cpucblk_zgetschur | ( | const SolverCblk * | cblk, |
int | upper_part, | ||
pastix_complex64_t * | S, | ||
pastix_int_t | lds | ||
) |
Extract a cblk panel of the Schur complement to a dense lapack form.
[in] | cblk | The column block to extract in the Schur array |
[in] | upper_part | If true, the upper part is also extracted in S. |
[in,out] | S | The pointer to the top of the column of the cblk in the Schur array. On exit, the computed coefficient are copy to this array. |
[in] | lds | The leading dimension of the S array. |
Definition at line 178 of file cpucblk_zschur.c.
References solver_cblk_s::cblktype.
void cpucblk_zdump | ( | pastix_coefside_t | side, |
const SolverCblk * | cblk, | ||
FILE * | stream | ||
) |
Dump a single column block into a FILE in a human readale format.
All non-zeroes coefficients are dumped in the format: i j val with one value per row.
[in] | side | Define which side of the cblk must be printed.
|
[in] | cblk | The column block to dump into the file. |
[in,out] | stream | The FILE structure opened in write mode. |
Definition at line 51 of file coeftab_zinit.c.
References solver_cblk_s::cblktype, solver_cblk_s::lcoeftab, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_zinit().
int cpucblk_zdiff | ( | pastix_coefside_t | side, |
const SolverCblk * | cblkA, | ||
SolverCblk * | cblkB | ||
) |
Compare two column blocks in full-rank format.
The second cblk is overwritten by the difference of the two column blocks. The frobenius norm of the difference is computed and the functions returns 0 if the result: || B - A || / ( || A || * eps )
is below 10. Otherwise, an error message is printed and 1 is returned.
[in] | side | Define which side of the cblk must be tested.
|
[in] | cblkA | The column block of the A matrix. |
[in,out] | cblkB | The column block of the B matrix that matches the A matrix in stucture. On exit, cblkB coefficient arrays are overwritten by the result of (B-A). |
Definition at line 63 of file cpucblk_zdiff.c.
References cblk_colnbr(), core_zgeadd(), solver_cblk_s::lcoeftab, PastixLCoef, PastixNoTrans, PastixUCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by coeftab_zdiff().
void cpucblk_zadd | ( | pastix_coefside_t | side, |
double | alpha, | ||
const SolverCblk * | cblkA, | ||
SolverCblk * | cblkB, | ||
const pastix_lr_t * | lowrank | ||
) |
Add two column bloks in full rank format.
The second cblk is overwritten by the sum of the two column blocks. B <- alpha * A + B
[in] | side | Define which side of the cblk must be tested.
|
[in] | alpha | The scalar alpha |
[in] | cblkA | The column block of the A matrix. |
[in,out] | cblkB | The column block of the B matrix On exit, cblkB coefficient arrays are overwritten by the result of alpha * A + B. |
Definition at line 358 of file cpucblk_zadd.c.
References cblk_colnbr(), solver_cblk_s::cblktype, PastixLUCoef, and solver_cblk_s::stride.
int cpucblk_zincoming_deps | ( | int | rank, |
pastix_coefside_t | side, | ||
SolverMatrix * | solvmtx, | ||
SolverCblk * | cblk | ||
) |
Wait for incoming dependencies, and return when cblk->ctrbcnt has reached 0.
[in] | mt_flag |
|
[in] | side | Define which side of the cblk must be released.
|
[in,out] | solvmtx | The solver matrix structure. |
[in,out] | cblk | The column block that contribute to fcblk. |
Definition at line 499 of file cpucblk_zmpi_coeftab.c.
References solver_cblk_s::cblktype.
void cpucblk_zrelease_deps | ( | pastix_coefside_t | side, |
SolverMatrix * | solvmtx, | ||
const SolverCblk * | cblk, | ||
SolverCblk * | fcbk | ||
) |
Release the dependencies of the given cblk after an update.
[in] | side | Define which side of the cblk must be released.
|
[in,out] | solvmtx | The solver matrix structure. |
[in] | cblk | The column block that contribute to fcblk. |
[in,out] | fcbk | The facing column block that is updated by cblk. |
Definition at line 558 of file cpucblk_zmpi_coeftab.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
void cpucblk_zrequest_cleanup | ( | pastix_coefside_t | side, |
pastix_int_t | sched, | ||
SolverMatrix * | solvmtx | ||
) |
Waitall routine for current cblk request.
It may be possible that some cblk will not be deallocated with the static scheduler. So a cleanup may be necessary.
[in] | side | Define which side of the cblk must be tested.
|
[in] | sched | Define which sched is used
|
[in,out] | solvmtx | The solver matrix structure. |
Definition at line 609 of file cpucblk_zmpi_coeftab.c.
References solver_cblk_s::cblktype, PastixSchedDynamic, PastixSchedSequential, and PastixSchedStatic.
void cpucblk_zsend_rhs_forward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex64_t * | b | ||
) |
Send the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which defines the part to sent. |
[in] | b | The rhs that will be sent to the cblk->ownerid |
Definition at line 42 of file cpucblk_zmpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void cpucblk_zrecv_rhs_forward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex64_t * | work, | ||
pastix_int_t | nrhs, | ||
pastix_complex64_t * | b, | ||
pastix_int_t | ldb | ||
) |
Receive the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which may define the part to sent. |
[in,out] | work | The temporary buffer to receive the remote data |
[in,out] | b | The rhs that will be updated by the reception. |
[in] | ldb | The leading dimension of the matrix b. |
Definition at line 195 of file cpucblk_zmpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void cpucblk_zsend_rhs_backward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex64_t * | b | ||
) |
Send the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which defines the part to sent. |
[in] | b | The rhs that will be sent to the cblk->ownerid |
Definition at line 89 of file cpucblk_zmpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void cpucblk_zrecv_rhs_backward | ( | const SolverMatrix * | solvmtx, |
SolverCblk * | cblk, | ||
pastix_complex64_t * | b | ||
) |
Receive the rhs associated to a cblk->lcolidx to the remote node.
[in] | solvmtx | The solver matrix holding the communicator. |
[in] | cblk | The cblk which may define the part to sent. |
[in,out] | b | The rhs that will be receive from the cblk->ownerid. |
Definition at line 136 of file cpucblk_zmpi_rhs.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
pastix_fixdbl_t cpublok_zcompress | ( | const pastix_lr_t * | lowrank, |
pastix_int_t | M, | ||
pastix_int_t | N, | ||
pastix_lrblock_t * | lrA | ||
) |
Compress a single block from full-rank to low-rank format.
The compression to low-rank format is parameterized by the input information stored in the low-rank structure.
[in] | lowrank | The pointer to the low-rank structure describing the lo-rank compression parameters. |
[in] | M | The number of rows in the block |
[in] | N | The number of columns in the block |
[in,out] | lrA | The block to compress. On input, it points to a full-rank matrix. On output, if possible the matrix is compressed in block low-rank format. |
Definition at line 57 of file cpucblk_zcompress.c.
References pastix_lr_s::core_ge2lr, pastix_lrblock_s::rk, pastix_lr_s::tolerance, pastix_lrblock_s::u, pastix_lr_s::use_reltol, and pastix_lrblock_s::v.
pastix_int_t cpucblk_zcompress | ( | const SolverMatrix * | solvmtx, |
pastix_coefside_t | side, | ||
int | max_ilulvl, | ||
SolverCblk * | cblk | ||
) |
Compress a single column block from full-rank to low-rank format.
The compression to low-rank format is parameterized by the input information stored in the low-rank structure.
[in] | solvmtx | The pointer to the solver structure. |
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to compress. |
Definition at line 110 of file cpucblk_zcompress.c.
References cblk_colnbr(), solver_cblk_s::cblktype, and solver_cblk_s::fblokptr.
void cpucblk_zuncompress | ( | pastix_coefside_t | side, |
SolverCblk * | cblk | ||
) |
Uncompress a single column block from low-rank format to full-rank format.
[in] | side | Define which side of the matrix must be initialized.
|
[in,out] | cblk | The column block to uncompress. |
Definition at line 197 of file cpucblk_zcompress.c.
References blok_rownbr(), cblk_colnbr(), core_zlr2ge(), core_zlralloc(), core_zlrfree(), solver_cblk_s::fblokptr, solver_blok_s::LRblock, PastixLCoef, PastixNoTrans, PastixUCoef, and pastix_lrblock_s::u.
void cpucblk_zmemory | ( | pastix_coefside_t | side, |
SolverMatrix * | solvmtx, | ||
SolverCblk * | cblk, | ||
pastix_int_t * | orig, | ||
pastix_int_t * | gain | ||
) |
Return the memory gain of the low-rank form over the full-rank form for a single column-block.
This function returns the memory gain in number of elements for a single column block when it is stored in low-rank format compared to a full rank storage.
[in] | side | Define which side of the matrix must be initialized.
|
[in] | solvmtx | The pointer to the solver structure. |
[in] | cblk | The column block to study. |
[in,out] | orig | The structure that counts the original cost of the blocks. |
[in,out] | gain | The structure that counts gain on each type of the blocks. |
Definition at line 277 of file cpucblk_zcompress.c.
References cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, and solver_cblk_s::ownerid.