PaStiX Handbook
6.4.0

Modules  
Internal functions for numerical factorization kernels  
PastixComplex32 cblkBLAS 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 offdiagonal 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 offdiagonal blocks. More...  
void  cpucblk_cscalo (pastix_trans_t trans, const SolverCblk *cblk, void *dataL, void *dataLD) 
Copy the L term with scaling for the twoterms 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 offdiagonal 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 offdiagonal block. More...  
void  cpublok_cscalo (pastix_trans_t trans, const 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 twoterms 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 *L) 
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^t kernels  
int  cpucblk_csytrfsp1d_sytrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) 
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 *Dlt, pastix_complex32_t *work, 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 for 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 fullrank format. More...  
pastix_fixdbl_t  cpucblk_cadd (pastix_complex32_t alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const void *A, void *B, pastix_complex32_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank) 
Add two column bloks in full rank format. More...  
pastix_fixdbl_t  cpublok_cadd (pastix_complex32_t alpha, const SolverCblk *cblkA, SolverCblk *cblkB, pastix_int_t blokA_m, pastix_int_t blokB_m, const void *A, void *B, pastix_complex32_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank) 
Add two bloks. More...  
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_cupdate_reqtab (SolverMatrix *solvmtx) 
void  cpucblk_cmpi_rhs_fwd_progress (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, int threadid) 
void  cpucblk_crelease_rhs_fwd_deps (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, const SolverCblk *cblk, SolverCblk *fcbk) 
Release the dependencies of the given cblk after an update. More...  
int  cpucblk_cincoming_rhs_fwd_deps (int rank, const args_solve_t *enums, SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t rhsb) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0. More...  
void  cpucblk_crequest_rhs_fwd_cleanup (const args_solve_t *enums, pastix_int_t sched, SolverMatrix *solvmtx, pastix_rhs_t rhsb) 
Waitall routine for current cblk request. More...  
void  cpucblk_cmpi_rhs_bwd_progress (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, int threadid) 
void  cpucblk_crelease_rhs_bwd_deps (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, const SolverCblk *cblk, SolverCblk *fcbk) 
Release the dependencies of the given cblk after an update. More...  
int  cpucblk_cincoming_rhs_bwd_deps (int rank, const args_solve_t *enums, SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t rhsb) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0. More...  
void  cpucblk_crequest_rhs_bwd_cleanup (const args_solve_t *enums, pastix_int_t sched, SolverMatrix *solvmtx, pastix_rhs_t rhsb) 
Waitall routine for current cblk request. More...  
void  cpucblk_csend_rhs_forward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_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_rhs_t b) 
Receive the rhs associated to a cblk>lcolidx to the remote node. More...  
void  cpucblk_csend_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_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_rhs_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 fullrank to lowrank 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 fullrank to lowrank format. More...  
void  cpucblk_cuncompress (pastix_coefside_t side, SolverCblk *cblk) 
Uncompress a single column block from lowrank format to fullrank format. More...  
void  cpucblk_cmemory (pastix_coefside_t side, const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_int_t *orig, pastix_int_t *gain) 
Return the memory gain of the lowrank form over the fullrank form for a single columnblock. More...  
PastixComplex64 cblkBLAS 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 offdiagonal 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 offdiagonal blocks. More...  
void  cpucblk_zscalo (pastix_trans_t trans, const SolverCblk *cblk, void *dataL, void *dataLD) 
Copy the L term with scaling for the twoterms 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 offdiagonal 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 offdiagonal block. More...  
void  cpublok_zscalo (pastix_trans_t trans, const 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 twoterms 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 *L) 
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^t kernels  
int  cpucblk_zsytrfsp1d_sytrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) 
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 *Dlt, pastix_complex64_t *work, 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 for 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 fullrank format. More...  
pastix_fixdbl_t  cpucblk_zadd (pastix_complex64_t alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const void *A, void *B, pastix_complex64_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank) 
Add two column bloks in full rank format. More...  
pastix_fixdbl_t  cpublok_zadd (pastix_complex64_t alpha, const SolverCblk *cblkA, SolverCblk *cblkB, pastix_int_t blokA_m, pastix_int_t blokB_m, const void *A, void *B, pastix_complex64_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank) 
Add two bloks. More...  
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_zupdate_reqtab (SolverMatrix *solvmtx) 
void  cpucblk_zmpi_rhs_fwd_progress (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, int threadid) 
void  cpucblk_zrelease_rhs_fwd_deps (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, const SolverCblk *cblk, SolverCblk *fcbk) 
Release the dependencies of the given cblk after an update. More...  
int  cpucblk_zincoming_rhs_fwd_deps (int rank, const args_solve_t *enums, SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t rhsb) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0. More...  
void  cpucblk_zrequest_rhs_fwd_cleanup (const args_solve_t *enums, pastix_int_t sched, SolverMatrix *solvmtx, pastix_rhs_t rhsb) 
Waitall routine for current cblk request. More...  
void  cpucblk_zmpi_rhs_bwd_progress (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, int threadid) 
void  cpucblk_zrelease_rhs_bwd_deps (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, const SolverCblk *cblk, SolverCblk *fcbk) 
Release the dependencies of the given cblk after an update. More...  
int  cpucblk_zincoming_rhs_bwd_deps (int rank, const args_solve_t *enums, SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t rhsb) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0. More...  
void  cpucblk_zrequest_rhs_bwd_cleanup (const args_solve_t *enums, pastix_int_t sched, SolverMatrix *solvmtx, pastix_rhs_t rhsb) 
Waitall routine for current cblk request. More...  
void  cpucblk_zsend_rhs_forward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_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_rhs_t b) 
Receive the rhs associated to a cblk>lcolidx to the remote node. More...  
void  cpucblk_zsend_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_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_rhs_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 fullrank to lowrank 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 fullrank to lowrank format. More...  
void  cpucblk_zuncompress (pastix_coefside_t side, SolverCblk *cblk) 
Uncompress a single column block from lowrank format to fullrank format. More...  
void  cpucblk_zmemory (pastix_coefside_t side, const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_int_t *orig, pastix_int_t *gain) 
Return the memory gain of the lowrank form over the fullrank form for a single columnblock. More...  
PastixDouble cblkBLAS 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 offdiagonal 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 offdiagonal blocks. More...  
void  cpucblk_dscalo (pastix_trans_t trans, const SolverCblk *cblk, void *dataL, void *dataLD) 
Copy the L term with scaling for the twoterms 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 offdiagonal 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 offdiagonal block. More...  
void  cpublok_dscalo (pastix_trans_t trans, const 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 twoterms 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 *L) 
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^t kernels  
int  cpucblk_dsytrfsp1d_sytrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) 
Computes the LDL^t factorization of the diagonal block in a panel. More...  
int  cpucblk_dsytrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *DLt) 
Compute the LDL^t factorization of one panel. More...  
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. More...  
PastixDouble initialization and additionnal routines  
void  cpucblk_dalloc_lrws (const SolverCblk *cblk, pastix_lrblock_t *lrblok, double *ws) 
Initialize lrblock structure from a workspace for 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 fullrank format. More...  
pastix_fixdbl_t  cpucblk_dadd (double alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const void *A, void *B, double *work, pastix_int_t lwork, const pastix_lr_t *lowrank) 
Add two column bloks in full rank format. More...  
pastix_fixdbl_t  cpublok_dadd (double alpha, const SolverCblk *cblkA, SolverCblk *cblkB, pastix_int_t blokA_m, pastix_int_t blokB_m, const void *A, void *B, double *work, pastix_int_t lwork, const pastix_lr_t *lowrank) 
Add two bloks. More...  
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_dupdate_reqtab (SolverMatrix *solvmtx) 
void  cpucblk_dmpi_rhs_fwd_progress (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, int threadid) 
void  cpucblk_drelease_rhs_fwd_deps (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, const SolverCblk *cblk, SolverCblk *fcbk) 
Release the dependencies of the given cblk after an update. More...  
int  cpucblk_dincoming_rhs_fwd_deps (int rank, const args_solve_t *enums, SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t rhsb) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0. More...  
void  cpucblk_drequest_rhs_fwd_cleanup (const args_solve_t *enums, pastix_int_t sched, SolverMatrix *solvmtx, pastix_rhs_t rhsb) 
Waitall routine for current cblk request. More...  
void  cpucblk_dmpi_rhs_bwd_progress (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, int threadid) 
void  cpucblk_drelease_rhs_bwd_deps (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, const SolverCblk *cblk, SolverCblk *fcbk) 
Release the dependencies of the given cblk after an update. More...  
int  cpucblk_dincoming_rhs_bwd_deps (int rank, const args_solve_t *enums, SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t rhsb) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0. More...  
void  cpucblk_drequest_rhs_bwd_cleanup (const args_solve_t *enums, pastix_int_t sched, SolverMatrix *solvmtx, pastix_rhs_t rhsb) 
Waitall routine for current cblk request. More...  
void  cpucblk_dsend_rhs_forward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t 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_rhs_t b) 
Receive the rhs associated to a cblk>lcolidx to the remote node. More...  
void  cpucblk_dsend_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t b) 
Send the rhs associated to a cblk>lcolidx to the remote node. More...  
void  cpucblk_drecv_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t 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 fullrank to lowrank 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 fullrank to lowrank format. More...  
void  cpucblk_duncompress (pastix_coefside_t side, SolverCblk *cblk) 
Uncompress a single column block from lowrank format to fullrank format. More...  
void  cpucblk_dmemory (pastix_coefside_t side, const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_int_t *orig, pastix_int_t *gain) 
Return the memory gain of the lowrank form over the fullrank form for a single columnblock. More...  
PastixFloat cblkBLAS 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 offdiagonal 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 offdiagonal blocks. More...  
void  cpucblk_sscalo (pastix_trans_t trans, const SolverCblk *cblk, void *dataL, void *dataLD) 
Copy the L term with scaling for the twoterms 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 offdiagonal 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 offdiagonal block. More...  
void  cpublok_sscalo (pastix_trans_t trans, const 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 twoterms 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 *L) 
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^t kernels  
int  cpucblk_ssytrfsp1d_sytrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL) 
Computes the LDL^t factorization of the diagonal block in a panel. More...  
int  cpucblk_ssytrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *DLt) 
Compute the LDL^t factorization of one panel. More...  
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. More...  
PastixFloat initialization and additionnal routines  
void  cpucblk_salloc_lrws (const SolverCblk *cblk, pastix_lrblock_t *lrblok, float *ws) 
Initialize lrblock structure from a workspace for 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 fullrank format. More...  
pastix_fixdbl_t  cpucblk_sadd (float alpha, const SolverCblk *cblkA, SolverCblk *cblkB, const void *A, void *B, float *work, pastix_int_t lwork, const pastix_lr_t *lowrank) 
Add two column bloks in full rank format. More...  
pastix_fixdbl_t  cpublok_sadd (float alpha, const SolverCblk *cblkA, SolverCblk *cblkB, pastix_int_t blokA_m, pastix_int_t blokB_m, const void *A, void *B, float *work, pastix_int_t lwork, const pastix_lr_t *lowrank) 
Add two bloks. More...  
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_supdate_reqtab (SolverMatrix *solvmtx) 
void  cpucblk_smpi_rhs_fwd_progress (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, int threadid) 
void  cpucblk_srelease_rhs_fwd_deps (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, const SolverCblk *cblk, SolverCblk *fcbk) 
Release the dependencies of the given cblk after an update. More...  
int  cpucblk_sincoming_rhs_fwd_deps (int rank, const args_solve_t *enums, SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t rhsb) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0. More...  
void  cpucblk_srequest_rhs_fwd_cleanup (const args_solve_t *enums, pastix_int_t sched, SolverMatrix *solvmtx, pastix_rhs_t rhsb) 
Waitall routine for current cblk request. More...  
void  cpucblk_smpi_rhs_bwd_progress (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, int threadid) 
void  cpucblk_srelease_rhs_bwd_deps (const args_solve_t *enums, SolverMatrix *solvmtx, pastix_rhs_t rhsb, const SolverCblk *cblk, SolverCblk *fcbk) 
Release the dependencies of the given cblk after an update. More...  
int  cpucblk_sincoming_rhs_bwd_deps (int rank, const args_solve_t *enums, SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t rhsb) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0. More...  
void  cpucblk_srequest_rhs_bwd_cleanup (const args_solve_t *enums, pastix_int_t sched, SolverMatrix *solvmtx, pastix_rhs_t rhsb) 
Waitall routine for current cblk request. More...  
void  cpucblk_ssend_rhs_forward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t 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_rhs_t b) 
Receive the rhs associated to a cblk>lcolidx to the remote node. More...  
void  cpucblk_ssend_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t b) 
Send the rhs associated to a cblk>lcolidx to the remote node. More...  
void  cpucblk_srecv_rhs_backward (const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_rhs_t 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 fullrank to lowrank 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 fullrank to lowrank format. More...  
void  cpucblk_suncompress (pastix_coefside_t side, SolverCblk *cblk) 
Uncompress a single column block from lowrank format to fullrank format. More...  
void  cpucblk_smemory (pastix_coefside_t side, const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_int_t *orig, pastix_int_t *gain) 
Return the memory gain of the lowrank form over the fullrank form for a single columnblock. More...  
This module contains all the kernel working at the solver matrix structure level for the numerical factorization step.
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_int_t, 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 offdiagonal 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].fblokptr1)) by block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr1)) 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]  lwork  TODO 
[in]  lowrank  The structure with lowrank parameters. 
Definition at line 1529 of file core_cgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_cgemmsp_1d1d(), core_cgemmsp_1d2d(), core_cgemmsp_2d2d(), core_cgemmsp_fulllr(), core_cgemmsp_lr(), core_cgemmsp_lrfr(), solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelGEMMCblk1d1d, PastixKernelGEMMCblk1d2d, PastixKernelGEMMCblk2d2d, PastixKernelGEMMCblkFRLR, PastixKernelGEMMCblkLRLR, PastixUCoef, and solver_cblk_s::stride.
Referenced by cpucblk_cgetrfsp1d(), cpucblk_cgetrfsp1dplus_update(), cpucblk_chetrfsp1d(), cpucblk_cpotrfsp1d(), cpucblk_cpotrfsp1dplus_update(), cpucblk_cpxtrfsp1d(), cpucblk_cpxtrfsp1dplus_update(), cpucblk_csytrfsp1d(), and fct_cblk_cgemmsp_cpu().
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 offdiagonal 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 lowrank parameters. 
Definition at line 356 of file core_ctrsmsp.c.
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, 
const SolverCblk *  cblk,  
void *  dataL,  
void *  dataLD  
) 
Copy the L term with scaling for the twoterms 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 171 of file core_cscalo.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_cscalo(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelSCALOCblk, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by cpucblk_chetrfsp1d_panel(), and cpucblk_csytrfsp1d_panel().
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 offdiagonal 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 0based for the diagonal block. 
[in]  blok_nk  Specify the index of the B block in the cblk column. This index is 0based for the diagonal block. 
[in]  blok_mn  Specify the index of the C block in the fcblk column. This index is 0based 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 lowrank parameters. 
Definition at line 1676 of file core_cgemmsp.c.
References solver_cblk_s::cblktype, core_cgemmsp_block_frfr(), core_cgemmsp_block_frlr(), and core_cgemmsp_block_lrlr().
Referenced by fct_blok_cgemmsp_cpu().
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 offdiagonal 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 offdiagonal 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 lowrank parameters. 
TODO 
Definition at line 690 of file core_ctrsmsp.c.
References solver_cblk_s::cblktype, core_ctrsmsp_2dsub(), and core_ctrsmsp_lrsub().
Referenced by fct_blok_ctrsmsp_cpu().
void cpublok_cscalo  (  pastix_trans_t  trans, 
const 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 twoterms 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 offdiagonal 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 316 of file core_cscalo.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_cscalo(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by fct_blok_cscalo_cpu().
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, core_cgeadd(), solver_matrix_s::diagthreshold, solver_cblk_s::fcolnum, kernel_trace_start(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelGETRF, PastixTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by cpucblk_cgetrfsp1d_panel(), and fct_blok_cgetrfsp_cpu().
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(), solver_matrix_s::lowrank, pastix_int_t, PastixNonUnit, PastixNoTrans, PastixRight, PastixUnit, and PastixUpper.
Referenced by cpucblk_cgetrfsp1d(), and cpucblk_cgetrfsp1dplus().
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_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_calloc(), cpucblk_cgemmsp(), cpucblk_cgetrfsp1d_panel(), cpucblk_crelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixLCoef, PastixLUCoef, PastixTrans, and PastixUCoef.
Referenced by sequential_cgetrf(), thread_cgetrf_dynamic(), and thread_cgetrf_static().
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_matrix_s::diagthreshold, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, kernel_trace_start(), solver_cblk_s::lcolnum, solver_blok_s::lrownum, pastix_int_t, PastixKernelPOTRF, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by cpucblk_cpotrfsp1d_panel(), and fct_blok_cpotrfsp_cpu().
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 the lower part of the data.

Definition at line 292 of file core_cpotrfsp.c.
References cpucblk_cpotrfsp1d_potrf(), cpucblk_ctrsmsp(), solver_matrix_s::lowrank, pastix_int_t, PastixConjTrans, PastixLower, PastixNonUnit, and PastixRight.
Referenced by cpucblk_cpotrfsp1d(), and cpucblk_cpotrfsp1dplus().
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_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_calloc(), cpucblk_cgemmsp(), cpucblk_cpotrfsp1d_panel(), cpucblk_crelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixConjTrans, and PastixLCoef.
Referenced by sequential_cpotrf(), thread_cpotrf_dynamic(), and thread_cpotrf_static().
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 234 of file core_csytrfsp.c.
References solver_cblk_s::cblktype, solver_matrix_s::diagthreshold, solver_cblk_s::fcolnum, kernel_trace_start(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelSYTRF, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
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 correct representation of lower part of the data.

[in,out]  DLt  The pointer to the correct representation of DLt matrix (stored in the upper part by default).

Definition at line 432 of file core_csytrfsp.c.
References solver_cblk_s::cblktype, cpucblk_cscalo(), cpucblk_csytrfsp1d_sytrf(), cpucblk_ctrsmsp(), solver_matrix_s::lowrank, pastix_int_t, PastixNonUnit, PastixNoTrans, PastixRight, and PastixUpper.
Referenced by cpucblk_csytrfsp1d(), and cpucblk_csytrfsp1dplus().
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(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_csytrfsp1d_gemm(), cpucblk_calloc(), cpucblk_calloc_lrws(), cpucblk_cgemmsp(), cpucblk_crelease_deps(), cpucblk_csytrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixLCoef, and PastixTrans.
Referenced by sequential_csytrf(), thread_csytrf_dynamic(), and thread_csytrf_static().
void cpucblk_calloc_lrws  (  const SolverCblk *  cblk, 
pastix_lrblock_t *  lrblok,  
pastix_complex32_t *  ws  
) 
Initialize lrblock structure from a workspace for 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 98 of file cpucblk_cinit.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by cpucblk_chetrfsp1d(), and cpucblk_csytrfsp1d().
void cpucblk_calloc_lr  (  pastix_coefside_t  side, 
SolverCblk *  cblk,  
int  rkmax  
) 
Allocate the cblk structure to store the coefficient.
When stored in lowrank format, the data pointer in the lowrank structure of each block must be initialized. This routines performs only the allocation and is threadsafe 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. 
[in]  rkmax  TODO 
Definition at line 148 of file cpucblk_cinit.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, core_clralloc(), solver_cblk_s::fblokptr, solver_cblk_s::lcoeftab, solver_blok_s::LRblock, pastix_int_t, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_calloc(), and cpucblk_cunpack_lr().
void cpucblk_calloc_fr  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Allocate the cblk structure to store the coefficient.
When stored in lowrank format, the data pointer in the lowrank structure of each block must be initialized. This routines performs only the allocation and is threadsafe 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 222 of file cpucblk_cinit.c.
References cblk_colnbr(), solver_cblk_s::lcoeftab, PastixLCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_calloc().
void cpucblk_calloc  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Allocate the cblk structure to store the coefficient.
When stored in lowrank format, the data pointer in the lowrank structure of each block must be initialized. This routines performs only the allocation and is threadsafe 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 269 of file cpucblk_cinit.c.
References solver_cblk_s::cblktype, cpucblk_calloc_fr(), cpucblk_calloc_lr(), solver_cblk_s::lcoeftab, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_cgetrfsp1d(), cpucblk_cgetrfsp1dplus_update(), cpucblk_chetrfsp1d(), cpucblk_chetrfsp1dplus_update(), cpucblk_cinit(), cpucblk_cpotrfsp1d(), cpucblk_cpotrfsp1dplus_update(), cpucblk_cpxtrfsp1d(), cpucblk_cpxtrfsp1dplus_update(), cpucblk_csytrfsp1d(), cpucblk_csytrfsp1dplus_update(), and cpucblk_zcinit().
void cpucblk_cfree  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Free the cblk structure that store the coefficient.
This routines performs the free and is threadsafe 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 322 of file cpucblk_cinit.c.
References solver_cblk_s::cblktype, core_clrfree(), solver_cblk_s::fblokptr, solver_cblk_s::lcoeftab, solver_blok_s::LRblock, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
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 628 of file cpucblk_cinit.c.
References solver_matrix_s::cblktab, cpucblk_cfillin_fr(), and cpucblk_cfillin_lr().
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 fillin 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 226 of file coeftab_cinit.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, coeftabComputeCblkILULevels(), cpucblk_calloc(), cpucblk_ccompress(), cpucblk_cdumpfile(), cpucblk_cfillin(), solver_cblk_s::ctrbcnt, solver_matrix_s::globalalloc, pastix_lr_s::ilu_lvl, and solver_matrix_s::lowrank.
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 182 of file cpucblk_cschur.c.
References solver_cblk_s::cblktype, cpucblk_cgetschur_fr(), and cpucblk_cgetschur_lr().
Referenced by coeftab_cgetschur().
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 nonzeroes 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 54 of file coeftab_cinit.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_cblk_s::lcoeftab, pastix_int_t, PastixUCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by coeftab_cdump(), and cpucblk_cdumpfile().
int cpucblk_cdiff  (  pastix_coefside_t  side, 
const SolverCblk *  cblkA,  
SolverCblk *  cblkB  
) 
Compare two column blocks in fullrank 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 (BA). 
Definition at line 63 of file cpucblk_cdiff.c.
References cblk_colnbr(), core_cgeadd(), solver_cblk_s::lcoeftab, pastix_int_t, PastixLCoef, PastixNoTrans, PastixUCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by coeftab_cdiff().
pastix_fixdbl_t cpucblk_cadd  (  pastix_complex32_t  alpha, 
const SolverCblk *  cblkA,  
SolverCblk *  cblkB,  
const void *  A,  
void *  B,  
pastix_complex32_t *  work,  
pastix_int_t  lwork,  
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]  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. 
[in,out]  A  The pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride by cblk.width 
[in]  B  The pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride by cblk.width 
[in]  work  Temporary memory buffer. 
[in]  lwork  Temporary workspace dimension. 
[in]  lowrank  The structure with lowrank parameters. 
Definition at line 391 of file cpucblk_cadd.c.
References cblk_colnbr(), solver_cblk_s::cblktype, cpucblk_cadd_frfr(), cpucblk_cadd_frlr(), cpucblk_cadd_lrlr(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelGEADDCblkFRFR, PastixKernelGEADDCblkFRLR, PastixKernelGEADDCblkLRLR, and solver_cblk_s::stride.
Referenced by fct_cblk_cadd_cpu().
pastix_fixdbl_t cpublok_cadd  (  pastix_complex32_t  alpha, 
const SolverCblk *  cblkA,  
SolverCblk *  cblkB,  
pastix_int_t  blokA_m,  
pastix_int_t  blokB_m,  
const void *  A,  
void *  B,  
pastix_complex32_t *  work,  
pastix_int_t  lwork,  
const pastix_lr_t *  lowrank  
) 
Add two bloks.
The second cblk is overwritten by the sum of the two blocks. B < alpha * A + B
[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. 
[in]  blokA_m  Index of the first offdiagonal block in cblk, that is used for A. 
[in]  blokB_m  Index of the first offdiagonal block in cblk, that is used for B. 
[in,out]  A  The pointer to the coeftab of the blok.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, blok.ucoeftab otherwise. Must be of size blok.stride by blok.width 
[in,out]  B  The pointer to the coeftab of the blok.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; blok.ucoeftab otherwise. Must be of size blok.stride by blok.width 
[in]  work  Temporary memory buffer. 
[in]  lwork  Temporary workspace dimension. 
[in]  lowrank  The structure with lowrank parameters. 
Definition at line 431 of file cpublok_cadd.c.
References cblk_colnbr(), solver_cblk_s::cblktype, cpublok_cadd_frfr(), cpublok_cadd_frlr(), cpublok_cadd_lrlr(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelGEADDCblkFRFR, PastixKernelGEADDCblkFRLR, PastixKernelGEADDCblkLRLR, and solver_cblk_s::stride.
Referenced by fct_blok_cadd_cpu().
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]  rank  The rank of the current thread. 
[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 543 of file cpucblk_cmpi_coeftab.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
Referenced by sequential_cgetrf(), sequential_chetrf(), sequential_cpotrf(), sequential_cpxtrf(), sequential_csytrf(), thread_cgetrf_static(), thread_chetrf_static(), thread_cpotrf_static(), thread_cpxtrf_static(), and thread_csytrf_static().
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 602 of file cpucblk_cmpi_coeftab.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_cblk_s::ctrbcnt, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by cpucblk_cgetrfsp1d(), cpucblk_cgetrfsp1dplus_update(), cpucblk_chetrfsp1d(), cpucblk_chetrfsp1dplus_update(), cpucblk_cpotrfsp1d(), cpucblk_cpotrfsp1dplus_update(), cpucblk_cpxtrfsp1d(), cpucblk_cpxtrfsp1dplus_update(), cpucblk_csytrfsp1d(), and cpucblk_csytrfsp1dplus_update().
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 654 of file cpucblk_cmpi_coeftab.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_int_t, PastixSchedDynamic, PastixSchedSequential, PastixSchedStatic, solver_matrix_s::reqidx, solver_matrix_s::reqnum, and solver_matrix_s::reqtab.
void cpucblk_crelease_rhs_fwd_deps  (  const args_solve_t *  enums, 
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb,  
const SolverCblk *  cblk,  
SolverCblk *  fcbk  
) 
Release the dependencies of the given cblk after an update.
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
[in]  cblk  The column block that contribute to fcblk. 
[in,out]  fcbk  The facing column block that is updated by cblk. 
Definition at line 765 of file cpucblk_cmpi_rhs_fwd.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
int cpucblk_cincoming_rhs_fwd_deps  (  int  rank, 
const args_solve_t *  enums,  
SolverMatrix *  solvmtx,  
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0.
[in]  rank  The rank of the current thread. 
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in,out]  cblk  The column block that contribute to fcblk. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 703 of file cpucblk_cmpi_rhs_fwd.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
void cpucblk_crequest_rhs_fwd_cleanup  (  const args_solve_t *  enums, 
pastix_int_t  sched,  
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb  
) 
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]  enums  Enums needed for the solve. 
[in]  sched  Define which sched is used

[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 821 of file cpucblk_cmpi_rhs_fwd.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_int_t, PastixSchedDynamic, PastixSchedSequential, PastixSchedStatic, solver_matrix_s::reqidx, solver_matrix_s::reqnum, and solver_matrix_s::reqtab.
void cpucblk_crelease_rhs_bwd_deps  (  const args_solve_t *  enums, 
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb,  
const SolverCblk *  cblk,  
SolverCblk *  fcbk  
) 
Release the dependencies of the given cblk after an update.
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
[in]  cblk  The column block that contribute to fcblk. 
[in,out]  fcbk  The facing column block that is updated by cblk. 
Definition at line 527 of file cpucblk_cmpi_rhs_bwd.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_cblk_s::ctrbcnt, PastixSchedSequential, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
int cpucblk_cincoming_rhs_bwd_deps  (  int  rank, 
const args_solve_t *  enums,  
SolverMatrix *  solvmtx,  
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0.
[in]  rank  The rank of the current thread. 
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in,out]  cblk  The column block that contribute to fcblk. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 465 of file cpucblk_cmpi_rhs_bwd.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
void cpucblk_crequest_rhs_bwd_cleanup  (  const args_solve_t *  enums, 
pastix_int_t  sched,  
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb  
) 
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]  enums  Enums needed for the solve. 
[in]  sched  Define which sched is used

[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 585 of file cpucblk_cmpi_rhs_bwd.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_int_t, PastixSchedDynamic, PastixSchedSequential, PastixSchedStatic, solver_matrix_s::reqidx, solver_matrix_s::reqnum, and solver_matrix_s::reqtab.
void cpucblk_csend_rhs_forward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 48 of file cpucblk_cmpi_rhs_fwd.c.
References solver_cblk_s::bcscnum, cblk_colnbr(), pastix_rhs_s::cblkb, solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
void cpucblk_crecv_rhs_forward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_complex32_t *  work,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 229 of file cpucblk_cmpi_rhs_fwd.c.
References pastix_rhs_s::b, cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
void cpucblk_csend_rhs_backward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 105 of file cpucblk_cmpi_rhs_fwd.c.
References pastix_rhs_s::b, solver_cblk_s::bcscnum, cblk_colnbr(), pastix_rhs_s::cblkb, solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::ld, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
void cpucblk_crecv_rhs_backward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 168 of file cpucblk_cmpi_rhs_fwd.c.
References solver_cblk_s::bcscnum, cblk_colnbr(), pastix_rhs_s::cblkb, solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
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 fullrank to lowrank format.
The compression to lowrank format is parameterized by the input information stored in the lowrank structure.
[in]  lowrank  The pointer to the lowrank structure describing the lorank 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 fullrank matrix. On output, if possible the matrix is compressed in block lowrank format. 
Definition at line 57 of file cpucblk_ccompress.c.
References pastix_lrblock_s::rk, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by core_ctrsmsp_lr(), core_ctrsmsp_lrsub(), and cpucblk_ccompress().
pastix_int_t cpucblk_ccompress  (  const SolverMatrix *  solvmtx, 
pastix_coefside_t  side,  
int  max_ilulvl,  
SolverCblk *  cblk  
) 
Compress a single column block from fullrank to lowrank format.
The compression to lowrank format is parameterized by the input information stored in the lowrank structure.
[in]  solvmtx  The pointer to the solver structure. 
[in]  side  Define which side of the matrix must be initialized.

[in]  max_ilulvl  TODO 
[in,out]  cblk  The column block to compress. 
Definition at line 114 of file cpucblk_ccompress.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, cpublok_ccompress(), solver_cblk_s::fblokptr, solver_blok_s::iluklvl, solver_matrix_s::lowrank, solver_blok_s::LRblock, pastix_int_t, PastixLCoef, PastixUCoef, and pastix_lrblock_s::rk.
Referenced by coeftab_ccompress(), cpucblk_cinit(), cpucblk_cmemory(), cpucblk_zcinit(), and pcoeftabComp().
void cpucblk_cuncompress  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Uncompress a single column block from lowrank format to fullrank format.
[in]  side  Define which side of the matrix must be initialized.

[in,out]  cblk  The column block to uncompress. 
Definition at line 201 of file cpucblk_ccompress.c.
References blok_rownbr(), cblk_colnbr(), core_clr2ge(), core_clralloc(), core_clrfree(), solver_cblk_s::fblokptr, solver_blok_s::LRblock, pastix_int_t, PastixLCoef, PastixNoTrans, PastixUCoef, and pastix_lrblock_s::u.
Referenced by coeftab_cuncompress().
void cpucblk_cmemory  (  pastix_coefside_t  side, 
const SolverMatrix *  solvmtx,  
SolverCblk *  cblk,  
pastix_int_t *  orig,  
pastix_int_t *  gain  
) 
Return the memory gain of the lowrank form over the fullrank form for a single columnblock.
This function returns the memory gain in number of elements for a single column block when it is stored in lowrank 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 281 of file cpucblk_ccompress.c.
References blok_is_preselected(), blok_rownbr(), cblk_colnbr(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_lr_s::compress_preselect, cpucblk_ccompress(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_lr_s::ilu_lvl, solver_matrix_s::lowrank, LR_InDiag, LR_InSele, LR_OffDiag, solver_blok_s::LRblock, solver_cblk_s::ownerid, pastix_int_t, PastixLCoef, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and solver_cblk_s::sndeidx.
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_int_t, 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 offdiagonal 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].fblokptr1)) by block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr1)) 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]  lwork  TODO 
[in]  lowrank  The structure with lowrank parameters. 
Definition at line 1529 of file core_zgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_zgemmsp_1d1d(), core_zgemmsp_1d2d(), core_zgemmsp_2d2d(), core_zgemmsp_fulllr(), core_zgemmsp_lr(), core_zgemmsp_lrfr(), solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelGEMMCblk1d1d, PastixKernelGEMMCblk1d2d, PastixKernelGEMMCblk2d2d, PastixKernelGEMMCblkFRLR, PastixKernelGEMMCblkLRLR, PastixUCoef, and solver_cblk_s::stride.
Referenced by cpucblk_zgetrfsp1d(), cpucblk_zgetrfsp1dplus_update(), cpucblk_zhetrfsp1d(), cpucblk_zpotrfsp1d(), cpucblk_zpotrfsp1dplus_update(), cpucblk_zpxtrfsp1d(), cpucblk_zpxtrfsp1dplus_update(), cpucblk_zsytrfsp1d(), and fct_cblk_zgemmsp_cpu().
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 offdiagonal 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 lowrank parameters. 
Definition at line 356 of file core_ztrsmsp.c.
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, 
const SolverCblk *  cblk,  
void *  dataL,  
void *  dataLD  
) 
Copy the L term with scaling for the twoterms 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 171 of file core_zscalo.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_zscalo(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelSCALOCblk, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by cpucblk_zhetrfsp1d_panel(), and cpucblk_zsytrfsp1d_panel().
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 offdiagonal 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 0based for the diagonal block. 
[in]  blok_nk  Specify the index of the B block in the cblk column. This index is 0based for the diagonal block. 
[in]  blok_mn  Specify the index of the C block in the fcblk column. This index is 0based 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 lowrank parameters. 
Definition at line 1676 of file core_zgemmsp.c.
References solver_cblk_s::cblktype, core_zgemmsp_block_frfr(), core_zgemmsp_block_frlr(), and core_zgemmsp_block_lrlr().
Referenced by fct_blok_zgemmsp_cpu().
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 offdiagonal 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 offdiagonal 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 lowrank parameters. 
TODO 
Definition at line 690 of file core_ztrsmsp.c.
References solver_cblk_s::cblktype, core_ztrsmsp_2dsub(), and core_ztrsmsp_lrsub().
Referenced by fct_blok_ztrsmsp_cpu().
void cpublok_zscalo  (  pastix_trans_t  trans, 
const 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 twoterms 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 offdiagonal 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 316 of file core_zscalo.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_zscalo(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by fct_blok_zscalo_cpu().
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, core_zgeadd(), solver_matrix_s::diagthreshold, solver_cblk_s::fcolnum, kernel_trace_start(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelGETRF, PastixTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by cpucblk_zgetrfsp1d_panel(), and fct_blok_zgetrfsp_cpu().
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(), solver_matrix_s::lowrank, pastix_int_t, PastixNonUnit, PastixNoTrans, PastixRight, PastixUnit, and PastixUpper.
Referenced by cpucblk_zgetrfsp1d(), and cpucblk_zgetrfsp1dplus().
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_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zalloc(), cpucblk_zgemmsp(), cpucblk_zgetrfsp1d_panel(), cpucblk_zrelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixLCoef, PastixLUCoef, PastixTrans, and PastixUCoef.
Referenced by sequential_zgetrf(), thread_zgetrf_dynamic(), and thread_zgetrf_static().
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_matrix_s::diagthreshold, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, kernel_trace_start(), solver_cblk_s::lcolnum, solver_blok_s::lrownum, pastix_int_t, PastixKernelPOTRF, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by cpucblk_zpotrfsp1d_panel(), and fct_blok_zpotrfsp_cpu().
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 the lower part of the data.

Definition at line 292 of file core_zpotrfsp.c.
References cpucblk_zpotrfsp1d_potrf(), cpucblk_ztrsmsp(), solver_matrix_s::lowrank, pastix_int_t, PastixConjTrans, PastixLower, PastixNonUnit, and PastixRight.
Referenced by cpucblk_zpotrfsp1d(), and cpucblk_zpotrfsp1dplus().
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_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_zalloc(), cpucblk_zgemmsp(), cpucblk_zpotrfsp1d_panel(), cpucblk_zrelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixConjTrans, and PastixLCoef.
Referenced by sequential_zpotrf(), thread_zpotrf_dynamic(), and thread_zpotrf_static().
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 234 of file core_zsytrfsp.c.
References solver_cblk_s::cblktype, solver_matrix_s::diagthreshold, solver_cblk_s::fcolnum, kernel_trace_start(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelSYTRF, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
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 correct representation of lower part of the data.

[in,out]  DLt  The pointer to the correct representation of DLt matrix (stored in the upper part by default).

Definition at line 432 of file core_zsytrfsp.c.
References solver_cblk_s::cblktype, cpucblk_zscalo(), cpucblk_zsytrfsp1d_sytrf(), cpucblk_ztrsmsp(), solver_matrix_s::lowrank, pastix_int_t, PastixNonUnit, PastixNoTrans, PastixRight, and PastixUpper.
Referenced by cpucblk_zsytrfsp1d(), and cpucblk_zsytrfsp1dplus().
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(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_zsytrfsp1d_gemm(), cpucblk_zalloc(), cpucblk_zalloc_lrws(), cpucblk_zgemmsp(), cpucblk_zrelease_deps(), cpucblk_zsytrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixLCoef, and PastixTrans.
Referenced by sequential_zsytrf(), thread_zsytrf_dynamic(), and thread_zsytrf_static().
void cpucblk_zalloc_lrws  (  const SolverCblk *  cblk, 
pastix_lrblock_t *  lrblok,  
pastix_complex64_t *  ws  
) 
Initialize lrblock structure from a workspace for 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 98 of file cpucblk_zinit.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by cpucblk_zhetrfsp1d(), and cpucblk_zsytrfsp1d().
void cpucblk_zalloc_lr  (  pastix_coefside_t  side, 
SolverCblk *  cblk,  
int  rkmax  
) 
Allocate the cblk structure to store the coefficient.
When stored in lowrank format, the data pointer in the lowrank structure of each block must be initialized. This routines performs only the allocation and is threadsafe 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. 
[in]  rkmax  TODO 
Definition at line 148 of file cpucblk_zinit.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, core_zlralloc(), solver_cblk_s::fblokptr, solver_cblk_s::lcoeftab, solver_blok_s::LRblock, pastix_int_t, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_zalloc(), and cpucblk_zunpack_lr().
void cpucblk_zalloc_fr  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Allocate the cblk structure to store the coefficient.
When stored in lowrank format, the data pointer in the lowrank structure of each block must be initialized. This routines performs only the allocation and is threadsafe 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 222 of file cpucblk_zinit.c.
References cblk_colnbr(), solver_cblk_s::lcoeftab, PastixLCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_zalloc().
void cpucblk_zalloc  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Allocate the cblk structure to store the coefficient.
When stored in lowrank format, the data pointer in the lowrank structure of each block must be initialized. This routines performs only the allocation and is threadsafe 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 269 of file cpucblk_zinit.c.
References solver_cblk_s::cblktype, cpucblk_zalloc_fr(), cpucblk_zalloc_lr(), solver_cblk_s::lcoeftab, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_zgetrfsp1d(), cpucblk_zgetrfsp1dplus_update(), cpucblk_zhetrfsp1d(), cpucblk_zhetrfsp1dplus_update(), cpucblk_zinit(), cpucblk_zpotrfsp1d(), cpucblk_zpotrfsp1dplus_update(), cpucblk_zpxtrfsp1d(), cpucblk_zpxtrfsp1dplus_update(), cpucblk_zsytrfsp1d(), and cpucblk_zsytrfsp1dplus_update().
void cpucblk_zfree  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Free the cblk structure that store the coefficient.
This routines performs the free and is threadsafe 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 322 of file cpucblk_zinit.c.
References solver_cblk_s::cblktype, core_zlrfree(), solver_cblk_s::fblokptr, solver_cblk_s::lcoeftab, solver_blok_s::LRblock, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by coeftabExit().
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 628 of file cpucblk_zinit.c.
References solver_matrix_s::cblktab, cpucblk_zfillin_fr(), and cpucblk_zfillin_lr().
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 fillin 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 226 of file coeftab_zinit.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, coeftabComputeCblkILULevels(), cpucblk_zalloc(), cpucblk_zcompress(), cpucblk_zdumpfile(), cpucblk_zfillin(), solver_cblk_s::ctrbcnt, solver_matrix_s::globalalloc, pastix_lr_s::ilu_lvl, and solver_matrix_s::lowrank.
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 182 of file cpucblk_zschur.c.
References solver_cblk_s::cblktype, cpucblk_zgetschur_fr(), and cpucblk_zgetschur_lr().
Referenced by coeftab_zgetschur().
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 nonzeroes 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 54 of file coeftab_zinit.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_cblk_s::lcoeftab, pastix_int_t, PastixUCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by coeftab_zdump(), and cpucblk_zdumpfile().
int cpucblk_zdiff  (  pastix_coefside_t  side, 
const SolverCblk *  cblkA,  
SolverCblk *  cblkB  
) 
Compare two column blocks in fullrank 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 (BA). 
Definition at line 63 of file cpucblk_zdiff.c.
References cblk_colnbr(), core_zgeadd(), solver_cblk_s::lcoeftab, pastix_int_t, PastixLCoef, PastixNoTrans, PastixUCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by coeftab_zdiff().
pastix_fixdbl_t cpucblk_zadd  (  pastix_complex64_t  alpha, 
const SolverCblk *  cblkA,  
SolverCblk *  cblkB,  
const void *  A,  
void *  B,  
pastix_complex64_t *  work,  
pastix_int_t  lwork,  
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]  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. 
[in,out]  A  The pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride by cblk.width 
[in]  B  The pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride by cblk.width 
[in]  work  Temporary memory buffer. 
[in]  lwork  Temporary workspace dimension. 
[in]  lowrank  The structure with lowrank parameters. 
Definition at line 391 of file cpucblk_zadd.c.
References cblk_colnbr(), solver_cblk_s::cblktype, cpucblk_zadd_frfr(), cpucblk_zadd_frlr(), cpucblk_zadd_lrlr(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelGEADDCblkFRFR, PastixKernelGEADDCblkFRLR, PastixKernelGEADDCblkLRLR, and solver_cblk_s::stride.
Referenced by fct_cblk_zadd_cpu().
pastix_fixdbl_t cpublok_zadd  (  pastix_complex64_t  alpha, 
const SolverCblk *  cblkA,  
SolverCblk *  cblkB,  
pastix_int_t  blokA_m,  
pastix_int_t  blokB_m,  
const void *  A,  
void *  B,  
pastix_complex64_t *  work,  
pastix_int_t  lwork,  
const pastix_lr_t *  lowrank  
) 
Add two bloks.
The second cblk is overwritten by the sum of the two blocks. B < alpha * A + B
[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. 
[in]  blokA_m  Index of the first offdiagonal block in cblk, that is used for A. 
[in]  blokB_m  Index of the first offdiagonal block in cblk, that is used for B. 
[in,out]  A  The pointer to the coeftab of the blok.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, blok.ucoeftab otherwise. Must be of size blok.stride by blok.width 
[in,out]  B  The pointer to the coeftab of the blok.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Hermitian cases or if upper part is computed; blok.ucoeftab otherwise. Must be of size blok.stride by blok.width 
[in]  work  Temporary memory buffer. 
[in]  lwork  Temporary workspace dimension. 
[in]  lowrank  The structure with lowrank parameters. 
Definition at line 431 of file cpublok_zadd.c.
References cblk_colnbr(), solver_cblk_s::cblktype, cpublok_zadd_frfr(), cpublok_zadd_frlr(), cpublok_zadd_lrlr(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelGEADDCblkFRFR, PastixKernelGEADDCblkFRLR, PastixKernelGEADDCblkLRLR, and solver_cblk_s::stride.
Referenced by fct_blok_zadd_cpu().
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]  rank  The rank of the current thread. 
[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 543 of file cpucblk_zmpi_coeftab.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
Referenced by sequential_zgetrf(), sequential_zhetrf(), sequential_zpotrf(), sequential_zpxtrf(), sequential_zsytrf(), thread_zgetrf_static(), thread_zhetrf_static(), thread_zpotrf_static(), thread_zpxtrf_static(), and thread_zsytrf_static().
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 602 of file cpucblk_zmpi_coeftab.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_cblk_s::ctrbcnt, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by cpucblk_zgetrfsp1d(), cpucblk_zgetrfsp1dplus_update(), cpucblk_zhetrfsp1d(), cpucblk_zhetrfsp1dplus_update(), cpucblk_zpotrfsp1d(), cpucblk_zpotrfsp1dplus_update(), cpucblk_zpxtrfsp1d(), cpucblk_zpxtrfsp1dplus_update(), cpucblk_zsytrfsp1d(), and cpucblk_zsytrfsp1dplus_update().
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 654 of file cpucblk_zmpi_coeftab.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_int_t, PastixSchedDynamic, PastixSchedSequential, PastixSchedStatic, solver_matrix_s::reqidx, solver_matrix_s::reqnum, and solver_matrix_s::reqtab.
void cpucblk_zrelease_rhs_fwd_deps  (  const args_solve_t *  enums, 
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb,  
const SolverCblk *  cblk,  
SolverCblk *  fcbk  
) 
Release the dependencies of the given cblk after an update.
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
[in]  cblk  The column block that contribute to fcblk. 
[in,out]  fcbk  The facing column block that is updated by cblk. 
Definition at line 765 of file cpucblk_zmpi_rhs_fwd.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
int cpucblk_zincoming_rhs_fwd_deps  (  int  rank, 
const args_solve_t *  enums,  
SolverMatrix *  solvmtx,  
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0.
[in]  rank  The rank of the current thread. 
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in,out]  cblk  The column block that contribute to fcblk. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 703 of file cpucblk_zmpi_rhs_fwd.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
void cpucblk_zrequest_rhs_fwd_cleanup  (  const args_solve_t *  enums, 
pastix_int_t  sched,  
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb  
) 
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]  enums  Enums needed for the solve. 
[in]  sched  Define which sched is used

[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 821 of file cpucblk_zmpi_rhs_fwd.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_int_t, PastixSchedDynamic, PastixSchedSequential, PastixSchedStatic, solver_matrix_s::reqidx, solver_matrix_s::reqnum, and solver_matrix_s::reqtab.
void cpucblk_zrelease_rhs_bwd_deps  (  const args_solve_t *  enums, 
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb,  
const SolverCblk *  cblk,  
SolverCblk *  fcbk  
) 
Release the dependencies of the given cblk after an update.
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
[in]  cblk  The column block that contribute to fcblk. 
[in,out]  fcbk  The facing column block that is updated by cblk. 
Definition at line 527 of file cpucblk_zmpi_rhs_bwd.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_cblk_s::ctrbcnt, PastixSchedSequential, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
int cpucblk_zincoming_rhs_bwd_deps  (  int  rank, 
const args_solve_t *  enums,  
SolverMatrix *  solvmtx,  
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0.
[in]  rank  The rank of the current thread. 
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in,out]  cblk  The column block that contribute to fcblk. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 465 of file cpucblk_zmpi_rhs_bwd.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
void cpucblk_zrequest_rhs_bwd_cleanup  (  const args_solve_t *  enums, 
pastix_int_t  sched,  
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb  
) 
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]  enums  Enums needed for the solve. 
[in]  sched  Define which sched is used

[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 585 of file cpucblk_zmpi_rhs_bwd.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_int_t, PastixSchedDynamic, PastixSchedSequential, PastixSchedStatic, solver_matrix_s::reqidx, solver_matrix_s::reqnum, and solver_matrix_s::reqtab.
void cpucblk_zsend_rhs_forward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 48 of file cpucblk_zmpi_rhs_fwd.c.
References solver_cblk_s::bcscnum, cblk_colnbr(), pastix_rhs_s::cblkb, solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
void cpucblk_zrecv_rhs_forward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_complex64_t *  work,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 229 of file cpucblk_zmpi_rhs_fwd.c.
References pastix_rhs_s::b, cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
void cpucblk_zsend_rhs_backward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 105 of file cpucblk_zmpi_rhs_fwd.c.
References pastix_rhs_s::b, solver_cblk_s::bcscnum, cblk_colnbr(), pastix_rhs_s::cblkb, solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::ld, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
void cpucblk_zrecv_rhs_backward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 168 of file cpucblk_zmpi_rhs_fwd.c.
References solver_cblk_s::bcscnum, cblk_colnbr(), pastix_rhs_s::cblkb, solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
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 fullrank to lowrank format.
The compression to lowrank format is parameterized by the input information stored in the lowrank structure.
[in]  lowrank  The pointer to the lowrank structure describing the lorank 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 fullrank matrix. On output, if possible the matrix is compressed in block lowrank format. 
Definition at line 57 of file cpucblk_zcompress.c.
References pastix_lrblock_s::rk, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by core_ztrsmsp_lr(), core_ztrsmsp_lrsub(), and cpucblk_zcompress().
pastix_int_t cpucblk_zcompress  (  const SolverMatrix *  solvmtx, 
pastix_coefside_t  side,  
int  max_ilulvl,  
SolverCblk *  cblk  
) 
Compress a single column block from fullrank to lowrank format.
The compression to lowrank format is parameterized by the input information stored in the lowrank structure.
[in]  solvmtx  The pointer to the solver structure. 
[in]  side  Define which side of the matrix must be initialized.

[in]  max_ilulvl  TODO 
[in,out]  cblk  The column block to compress. 
Definition at line 114 of file cpucblk_zcompress.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, cpublok_zcompress(), solver_cblk_s::fblokptr, solver_blok_s::iluklvl, solver_matrix_s::lowrank, solver_blok_s::LRblock, pastix_int_t, PastixLCoef, PastixUCoef, and pastix_lrblock_s::rk.
Referenced by coeftab_zcompress(), cpucblk_zinit(), cpucblk_zmemory(), and pcoeftabComp().
void cpucblk_zuncompress  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Uncompress a single column block from lowrank format to fullrank format.
[in]  side  Define which side of the matrix must be initialized.

[in,out]  cblk  The column block to uncompress. 
Definition at line 201 of file cpucblk_zcompress.c.
References blok_rownbr(), cblk_colnbr(), core_zlr2ge(), core_zlralloc(), core_zlrfree(), solver_cblk_s::fblokptr, solver_blok_s::LRblock, pastix_int_t, PastixLCoef, PastixNoTrans, PastixUCoef, and pastix_lrblock_s::u.
Referenced by coeftab_zuncompress().
void cpucblk_zmemory  (  pastix_coefside_t  side, 
const SolverMatrix *  solvmtx,  
SolverCblk *  cblk,  
pastix_int_t *  orig,  
pastix_int_t *  gain  
) 
Return the memory gain of the lowrank form over the fullrank form for a single columnblock.
This function returns the memory gain in number of elements for a single column block when it is stored in lowrank 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 281 of file cpucblk_zcompress.c.
References blok_is_preselected(), blok_rownbr(), cblk_colnbr(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_lr_s::compress_preselect, cpucblk_zcompress(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_lr_s::ilu_lvl, solver_matrix_s::lowrank, LR_InDiag, LR_InSele, LR_OffDiag, solver_blok_s::LRblock, solver_cblk_s::ownerid, pastix_int_t, PastixLCoef, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and solver_cblk_s::sndeidx.
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_int_t, 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 offdiagonal 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].fblokptr1)) by block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr1)) 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]  lwork  TODO 
[in]  lowrank  The structure with lowrank parameters. 
Definition at line 1529 of file core_dgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_dgemmsp_1d1d(), core_dgemmsp_1d2d(), core_dgemmsp_2d2d(), core_dgemmsp_fulllr(), core_dgemmsp_lr(), core_dgemmsp_lrfr(), solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelGEMMCblk1d1d, PastixKernelGEMMCblk1d2d, PastixKernelGEMMCblk2d2d, PastixKernelGEMMCblkFRLR, PastixKernelGEMMCblkLRLR, PastixUCoef, and solver_cblk_s::stride.
Referenced by cpucblk_dgetrfsp1d(), cpucblk_dgetrfsp1dplus_update(), cpucblk_dpotrfsp1d(), cpucblk_dpotrfsp1dplus_update(), cpucblk_dsytrfsp1d(), and fct_cblk_dgemmsp_cpu().
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 offdiagonal 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 lowrank parameters. 
Definition at line 356 of file core_dtrsmsp.c.
Referenced by cpucblk_dgetrfsp1d_panel(), cpucblk_dpotrfsp1d_panel(), and cpucblk_dsytrfsp1d_panel().
void cpucblk_dscalo  (  pastix_trans_t  trans, 
const SolverCblk *  cblk,  
void *  dataL,  
void *  dataLD  
) 
Copy the L term with scaling for the twoterms 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 171 of file core_dscalo.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_dscalo(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelSCALOCblk, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by cpucblk_dsytrfsp1d_panel().
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 offdiagonal 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 0based for the diagonal block. 
[in]  blok_nk  Specify the index of the B block in the cblk column. This index is 0based for the diagonal block. 
[in]  blok_mn  Specify the index of the C block in the fcblk column. This index is 0based 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 lowrank parameters. 
Definition at line 1676 of file core_dgemmsp.c.
References solver_cblk_s::cblktype, core_dgemmsp_block_frfr(), core_dgemmsp_block_frlr(), and core_dgemmsp_block_lrlr().
Referenced by fct_blok_dgemmsp_cpu().
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 offdiagonal 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 offdiagonal 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 lowrank parameters. 
TODO 
Definition at line 690 of file core_dtrsmsp.c.
References solver_cblk_s::cblktype, core_dtrsmsp_2dsub(), and core_dtrsmsp_lrsub().
Referenced by fct_blok_dtrsmsp_cpu().
void cpublok_dscalo  (  pastix_trans_t  trans, 
const 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 twoterms 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 offdiagonal 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 316 of file core_dscalo.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_dscalo(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by fct_blok_dscalo_cpu().
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, core_dgeadd(), solver_matrix_s::diagthreshold, solver_cblk_s::fcolnum, kernel_trace_start(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelGETRF, PastixTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by cpucblk_dgetrfsp1d_panel(), and fct_blok_dgetrfsp_cpu().
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(), solver_matrix_s::lowrank, pastix_int_t, PastixNonUnit, PastixNoTrans, PastixRight, PastixUnit, and PastixUpper.
Referenced by cpucblk_dgetrfsp1d(), and cpucblk_dgetrfsp1dplus().
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_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_dalloc(), cpucblk_dgemmsp(), cpucblk_dgetrfsp1d_panel(), cpucblk_drelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixLCoef, PastixLUCoef, PastixTrans, and PastixUCoef.
Referenced by sequential_dgetrf(), thread_dgetrf_dynamic(), and thread_dgetrf_static().
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_matrix_s::diagthreshold, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, kernel_trace_start(), solver_cblk_s::lcolnum, solver_blok_s::lrownum, pastix_int_t, PastixKernelPOTRF, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by cpucblk_dpotrfsp1d_panel(), and fct_blok_dpotrfsp_cpu().
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 the lower part of the data.

Definition at line 292 of file core_dpotrfsp.c.
References cpucblk_dpotrfsp1d_potrf(), cpucblk_dtrsmsp(), solver_matrix_s::lowrank, pastix_int_t, PastixLower, PastixNonUnit, PastixRight, and PastixTrans.
Referenced by cpucblk_dpotrfsp1d(), and cpucblk_dpotrfsp1dplus().
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_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_dalloc(), cpucblk_dgemmsp(), cpucblk_dpotrfsp1d_panel(), cpucblk_drelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixLCoef, and PastixTrans.
Referenced by sequential_dpotrf(), thread_dpotrf_dynamic(), and thread_dpotrf_static().
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 234 of file core_dsytrfsp.c.
References solver_cblk_s::cblktype, solver_matrix_s::diagthreshold, solver_cblk_s::fcolnum, kernel_trace_start(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelSYTRF, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
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 correct representation of lower part of the data.

[in,out]  DLt  The pointer to the correct representation of DLt matrix (stored in the upper part by default).

Definition at line 432 of file core_dsytrfsp.c.
References solver_cblk_s::cblktype, cpucblk_dscalo(), cpucblk_dsytrfsp1d_sytrf(), cpucblk_dtrsmsp(), solver_matrix_s::lowrank, pastix_int_t, PastixNonUnit, PastixNoTrans, PastixRight, and PastixUpper.
Referenced by cpucblk_dsytrfsp1d(), and cpucblk_dsytrfsp1dplus().
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(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_dsytrfsp1d_gemm(), cpucblk_dalloc(), cpucblk_dalloc_lrws(), cpucblk_dgemmsp(), cpucblk_drelease_deps(), cpucblk_dsytrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixLCoef, and PastixTrans.
Referenced by sequential_dsytrf(), thread_dsytrf_dynamic(), and thread_dsytrf_static().
void cpucblk_dalloc_lrws  (  const SolverCblk *  cblk, 
pastix_lrblock_t *  lrblok,  
double *  ws  
) 
Initialize lrblock structure from a workspace for 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 98 of file cpucblk_dinit.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by cpucblk_dsytrfsp1d().
void cpucblk_dalloc_lr  (  pastix_coefside_t  side, 
SolverCblk *  cblk,  
int  rkmax  
) 
Allocate the cblk structure to store the coefficient.
When stored in lowrank format, the data pointer in the lowrank structure of each block must be initialized. This routines performs only the allocation and is threadsafe 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. 
[in]  rkmax  TODO 
Definition at line 148 of file cpucblk_dinit.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, core_dlralloc(), solver_cblk_s::fblokptr, solver_cblk_s::lcoeftab, solver_blok_s::LRblock, pastix_int_t, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_dalloc(), and cpucblk_dunpack_lr().
void cpucblk_dalloc_fr  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Allocate the cblk structure to store the coefficient.
When stored in lowrank format, the data pointer in the lowrank structure of each block must be initialized. This routines performs only the allocation and is threadsafe 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 222 of file cpucblk_dinit.c.
References cblk_colnbr(), solver_cblk_s::lcoeftab, PastixLCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_dalloc().
void cpucblk_dalloc  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Allocate the cblk structure to store the coefficient.
When stored in lowrank format, the data pointer in the lowrank structure of each block must be initialized. This routines performs only the allocation and is threadsafe 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 269 of file cpucblk_dinit.c.
References solver_cblk_s::cblktype, cpucblk_dalloc_fr(), cpucblk_dalloc_lr(), solver_cblk_s::lcoeftab, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_dgetrfsp1d(), cpucblk_dgetrfsp1dplus_update(), cpucblk_dinit(), cpucblk_dpotrfsp1d(), cpucblk_dpotrfsp1dplus_update(), cpucblk_dsytrfsp1d(), and cpucblk_dsytrfsp1dplus_update().
void cpucblk_dfree  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Free the cblk structure that store the coefficient.
This routines performs the free and is threadsafe 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 322 of file cpucblk_dinit.c.
References solver_cblk_s::cblktype, core_dlrfree(), solver_cblk_s::fblokptr, solver_cblk_s::lcoeftab, solver_blok_s::LRblock, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
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 628 of file cpucblk_dinit.c.
References solver_matrix_s::cblktab, cpucblk_dfillin_fr(), and cpucblk_dfillin_lr().
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 fillin 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 226 of file coeftab_dinit.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, coeftabComputeCblkILULevels(), cpucblk_dalloc(), cpucblk_dcompress(), cpucblk_ddumpfile(), cpucblk_dfillin(), solver_cblk_s::ctrbcnt, solver_matrix_s::globalalloc, pastix_lr_s::ilu_lvl, and solver_matrix_s::lowrank.
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 182 of file cpucblk_dschur.c.
References solver_cblk_s::cblktype, cpucblk_dgetschur_fr(), and cpucblk_dgetschur_lr().
Referenced by coeftab_dgetschur().
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 nonzeroes 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 54 of file coeftab_dinit.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_cblk_s::lcoeftab, pastix_int_t, PastixUCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by coeftab_ddump(), and cpucblk_ddumpfile().
int cpucblk_ddiff  (  pastix_coefside_t  side, 
const SolverCblk *  cblkA,  
SolverCblk *  cblkB  
) 
Compare two column blocks in fullrank 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 (BA). 
Definition at line 63 of file cpucblk_ddiff.c.
References cblk_colnbr(), core_dgeadd(), solver_cblk_s::lcoeftab, pastix_int_t, PastixLCoef, PastixNoTrans, PastixUCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by coeftab_ddiff().
pastix_fixdbl_t cpucblk_dadd  (  double  alpha, 
const SolverCblk *  cblkA,  
SolverCblk *  cblkB,  
const void *  A,  
void *  B,  
double *  work,  
pastix_int_t  lwork,  
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]  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. 
[in,out]  A  The pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride by cblk.width 
[in]  B  The pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride by cblk.width 
[in]  work  Temporary memory buffer. 
[in]  lwork  Temporary workspace dimension. 
[in]  lowrank  The structure with lowrank parameters. 
Definition at line 391 of file cpucblk_dadd.c.
References cblk_colnbr(), solver_cblk_s::cblktype, cpucblk_dadd_frfr(), cpucblk_dadd_frlr(), cpucblk_dadd_lrlr(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelGEADDCblkFRFR, PastixKernelGEADDCblkFRLR, PastixKernelGEADDCblkLRLR, and solver_cblk_s::stride.
Referenced by fct_cblk_dadd_cpu().
pastix_fixdbl_t cpublok_dadd  (  double  alpha, 
const SolverCblk *  cblkA,  
SolverCblk *  cblkB,  
pastix_int_t  blokA_m,  
pastix_int_t  blokB_m,  
const void *  A,  
void *  B,  
double *  work,  
pastix_int_t  lwork,  
const pastix_lr_t *  lowrank  
) 
Add two bloks.
The second cblk is overwritten by the sum of the two blocks. B < alpha * A + B
[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. 
[in]  blokA_m  Index of the first offdiagonal block in cblk, that is used for A. 
[in]  blokB_m  Index of the first offdiagonal block in cblk, that is used for B. 
[in,out]  A  The pointer to the coeftab of the blok.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, blok.ucoeftab otherwise. Must be of size blok.stride by blok.width 
[in,out]  B  The pointer to the coeftab of the blok.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; blok.ucoeftab otherwise. Must be of size blok.stride by blok.width 
[in]  work  Temporary memory buffer. 
[in]  lwork  Temporary workspace dimension. 
[in]  lowrank  The structure with lowrank parameters. 
Definition at line 431 of file cpublok_dadd.c.
References cblk_colnbr(), solver_cblk_s::cblktype, cpublok_dadd_frfr(), cpublok_dadd_frlr(), cpublok_dadd_lrlr(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelGEADDCblkFRFR, PastixKernelGEADDCblkFRLR, PastixKernelGEADDCblkLRLR, and solver_cblk_s::stride.
Referenced by fct_blok_dadd_cpu().
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]  rank  The rank of the current thread. 
[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 543 of file cpucblk_dmpi_coeftab.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
Referenced by sequential_dgetrf(), sequential_dpotrf(), sequential_dsytrf(), thread_dgetrf_static(), thread_dpotrf_static(), and thread_dsytrf_static().
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 602 of file cpucblk_dmpi_coeftab.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_cblk_s::ctrbcnt, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by cpucblk_dgetrfsp1d(), cpucblk_dgetrfsp1dplus_update(), cpucblk_dpotrfsp1d(), cpucblk_dpotrfsp1dplus_update(), cpucblk_dsytrfsp1d(), and cpucblk_dsytrfsp1dplus_update().
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 654 of file cpucblk_dmpi_coeftab.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_int_t, PastixSchedDynamic, PastixSchedSequential, PastixSchedStatic, solver_matrix_s::reqidx, solver_matrix_s::reqnum, and solver_matrix_s::reqtab.
void cpucblk_drelease_rhs_fwd_deps  (  const args_solve_t *  enums, 
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb,  
const SolverCblk *  cblk,  
SolverCblk *  fcbk  
) 
Release the dependencies of the given cblk after an update.
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
[in]  cblk  The column block that contribute to fcblk. 
[in,out]  fcbk  The facing column block that is updated by cblk. 
Definition at line 765 of file cpucblk_dmpi_rhs_fwd.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
int cpucblk_dincoming_rhs_fwd_deps  (  int  rank, 
const args_solve_t *  enums,  
SolverMatrix *  solvmtx,  
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0.
[in]  rank  The rank of the current thread. 
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in,out]  cblk  The column block that contribute to fcblk. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 703 of file cpucblk_dmpi_rhs_fwd.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
void cpucblk_drequest_rhs_fwd_cleanup  (  const args_solve_t *  enums, 
pastix_int_t  sched,  
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb  
) 
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]  enums  Enums needed for the solve. 
[in]  sched  Define which sched is used

[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 821 of file cpucblk_dmpi_rhs_fwd.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_int_t, PastixSchedDynamic, PastixSchedSequential, PastixSchedStatic, solver_matrix_s::reqidx, solver_matrix_s::reqnum, and solver_matrix_s::reqtab.
void cpucblk_drelease_rhs_bwd_deps  (  const args_solve_t *  enums, 
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb,  
const SolverCblk *  cblk,  
SolverCblk *  fcbk  
) 
Release the dependencies of the given cblk after an update.
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
[in]  cblk  The column block that contribute to fcblk. 
[in,out]  fcbk  The facing column block that is updated by cblk. 
Definition at line 527 of file cpucblk_dmpi_rhs_bwd.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_cblk_s::ctrbcnt, PastixSchedSequential, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
int cpucblk_dincoming_rhs_bwd_deps  (  int  rank, 
const args_solve_t *  enums,  
SolverMatrix *  solvmtx,  
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0.
[in]  rank  The rank of the current thread. 
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in,out]  cblk  The column block that contribute to fcblk. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 465 of file cpucblk_dmpi_rhs_bwd.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
void cpucblk_drequest_rhs_bwd_cleanup  (  const args_solve_t *  enums, 
pastix_int_t  sched,  
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb  
) 
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]  enums  Enums needed for the solve. 
[in]  sched  Define which sched is used

[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 585 of file cpucblk_dmpi_rhs_bwd.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_int_t, PastixSchedDynamic, PastixSchedSequential, PastixSchedStatic, solver_matrix_s::reqidx, solver_matrix_s::reqnum, and solver_matrix_s::reqtab.
void cpucblk_dsend_rhs_forward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 48 of file cpucblk_dmpi_rhs_fwd.c.
References solver_cblk_s::bcscnum, cblk_colnbr(), pastix_rhs_s::cblkb, solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
void cpucblk_drecv_rhs_forward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
double *  work,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 229 of file cpucblk_dmpi_rhs_fwd.c.
References pastix_rhs_s::b, cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
void cpucblk_dsend_rhs_backward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 105 of file cpucblk_dmpi_rhs_fwd.c.
References pastix_rhs_s::b, solver_cblk_s::bcscnum, cblk_colnbr(), pastix_rhs_s::cblkb, solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::ld, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
void cpucblk_drecv_rhs_backward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 168 of file cpucblk_dmpi_rhs_fwd.c.
References solver_cblk_s::bcscnum, cblk_colnbr(), pastix_rhs_s::cblkb, solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
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 fullrank to lowrank format.
The compression to lowrank format is parameterized by the input information stored in the lowrank structure.
[in]  lowrank  The pointer to the lowrank structure describing the lorank 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 fullrank matrix. On output, if possible the matrix is compressed in block lowrank format. 
Definition at line 57 of file cpucblk_dcompress.c.
References pastix_lrblock_s::rk, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by core_dtrsmsp_lr(), core_dtrsmsp_lrsub(), and cpucblk_dcompress().
pastix_int_t cpucblk_dcompress  (  const SolverMatrix *  solvmtx, 
pastix_coefside_t  side,  
int  max_ilulvl,  
SolverCblk *  cblk  
) 
Compress a single column block from fullrank to lowrank format.
The compression to lowrank format is parameterized by the input information stored in the lowrank structure.
[in]  solvmtx  The pointer to the solver structure. 
[in]  side  Define which side of the matrix must be initialized.

[in]  max_ilulvl  TODO 
[in,out]  cblk  The column block to compress. 
Definition at line 114 of file cpucblk_dcompress.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, cpublok_dcompress(), solver_cblk_s::fblokptr, solver_blok_s::iluklvl, solver_matrix_s::lowrank, solver_blok_s::LRblock, pastix_int_t, PastixLCoef, PastixUCoef, and pastix_lrblock_s::rk.
Referenced by coeftab_dcompress(), cpucblk_dinit(), cpucblk_dmemory(), and pcoeftabComp().
void cpucblk_duncompress  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Uncompress a single column block from lowrank format to fullrank format.
[in]  side  Define which side of the matrix must be initialized.

[in,out]  cblk  The column block to uncompress. 
Definition at line 201 of file cpucblk_dcompress.c.
References blok_rownbr(), cblk_colnbr(), core_dlr2ge(), core_dlralloc(), core_dlrfree(), solver_cblk_s::fblokptr, solver_blok_s::LRblock, pastix_int_t, PastixLCoef, PastixNoTrans, PastixUCoef, and pastix_lrblock_s::u.
Referenced by coeftab_duncompress().
void cpucblk_dmemory  (  pastix_coefside_t  side, 
const SolverMatrix *  solvmtx,  
SolverCblk *  cblk,  
pastix_int_t *  orig,  
pastix_int_t *  gain  
) 
Return the memory gain of the lowrank form over the fullrank form for a single columnblock.
This function returns the memory gain in number of elements for a single column block when it is stored in lowrank 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 281 of file cpucblk_dcompress.c.
References blok_is_preselected(), blok_rownbr(), cblk_colnbr(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_lr_s::compress_preselect, cpucblk_dcompress(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_lr_s::ilu_lvl, solver_matrix_s::lowrank, LR_InDiag, LR_InSele, LR_OffDiag, solver_blok_s::LRblock, solver_cblk_s::ownerid, pastix_int_t, PastixLCoef, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and solver_cblk_s::sndeidx.
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_int_t, 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 offdiagonal 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].fblokptr1)) by block is computed and added to C, otherwise the contribution: (block+1 .. (cblk[1].fblokptr1)) 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]  lwork  TODO 
[in]  lowrank  The structure with lowrank parameters. 
Definition at line 1529 of file core_sgemmsp.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_sgemmsp_1d1d(), core_sgemmsp_1d2d(), core_sgemmsp_2d2d(), core_sgemmsp_fulllr(), core_sgemmsp_lr(), core_sgemmsp_lrfr(), solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelGEMMCblk1d1d, PastixKernelGEMMCblk1d2d, PastixKernelGEMMCblk2d2d, PastixKernelGEMMCblkFRLR, PastixKernelGEMMCblkLRLR, PastixUCoef, and solver_cblk_s::stride.
Referenced by cpucblk_sgetrfsp1d(), cpucblk_sgetrfsp1dplus_update(), cpucblk_spotrfsp1d(), cpucblk_spotrfsp1dplus_update(), cpucblk_ssytrfsp1d(), and fct_cblk_sgemmsp_cpu().
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 offdiagonal 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 lowrank parameters. 
Definition at line 356 of file core_strsmsp.c.
Referenced by cpucblk_sgetrfsp1d_panel(), cpucblk_spotrfsp1d_panel(), and cpucblk_ssytrfsp1d_panel().
void cpucblk_sscalo  (  pastix_trans_t  trans, 
const SolverCblk *  cblk,  
void *  dataL,  
void *  dataLD  
) 
Copy the L term with scaling for the twoterms 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 171 of file core_sscalo.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_sscalo(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelSCALOCblk, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by cpucblk_ssytrfsp1d_panel().
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 offdiagonal 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 0based for the diagonal block. 
[in]  blok_nk  Specify the index of the B block in the cblk column. This index is 0based for the diagonal block. 
[in]  blok_mn  Specify the index of the C block in the fcblk column. This index is 0based 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 lowrank parameters. 
Definition at line 1676 of file core_sgemmsp.c.
References solver_cblk_s::cblktype, core_sgemmsp_block_frfr(), core_sgemmsp_block_frlr(), and core_sgemmsp_block_lrlr().
Referenced by fct_blok_sgemmsp_cpu().
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 offdiagonal 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 offdiagonal 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 lowrank parameters. 
TODO 
Definition at line 690 of file core_strsmsp.c.
References solver_cblk_s::cblktype, core_strsmsp_2dsub(), and core_strsmsp_lrsub().
Referenced by fct_blok_strsmsp_cpu().
void cpublok_sscalo  (  pastix_trans_t  trans, 
const 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 twoterms 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 offdiagonal 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 316 of file core_sscalo.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, core_sscalo(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by fct_blok_sscalo_cpu().
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, core_sgeadd(), solver_matrix_s::diagthreshold, solver_cblk_s::fcolnum, kernel_trace_start(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelGETRF, PastixTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by cpucblk_sgetrfsp1d_panel(), and fct_blok_sgetrfsp_cpu().
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(), solver_matrix_s::lowrank, pastix_int_t, PastixNonUnit, PastixNoTrans, PastixRight, PastixUnit, and PastixUpper.
Referenced by cpucblk_sgetrfsp1d(), and cpucblk_sgetrfsp1dplus().
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_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_salloc(), cpucblk_sgemmsp(), cpucblk_sgetrfsp1d_panel(), cpucblk_srelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixLCoef, PastixLUCoef, PastixTrans, and PastixUCoef.
Referenced by sequential_sgetrf(), thread_sgetrf_dynamic(), and thread_sgetrf_static().
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_matrix_s::diagthreshold, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, kernel_trace_start(), solver_cblk_s::lcolnum, solver_blok_s::lrownum, pastix_int_t, PastixKernelPOTRF, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
Referenced by cpucblk_spotrfsp1d_panel(), and fct_blok_spotrfsp_cpu().
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 the lower part of the data.

Definition at line 292 of file core_spotrfsp.c.
References cpucblk_spotrfsp1d_potrf(), cpucblk_strsmsp(), solver_matrix_s::lowrank, pastix_int_t, PastixLower, PastixNonUnit, PastixRight, and PastixTrans.
Referenced by cpucblk_spotrfsp1d(), and cpucblk_spotrfsp1dplus().
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_matrix_s::cblktab, solver_cblk_s::cblktype, cpucblk_salloc(), cpucblk_sgemmsp(), cpucblk_spotrfsp1d_panel(), cpucblk_srelease_deps(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixLCoef, and PastixTrans.
Referenced by sequential_spotrf(), thread_spotrf_dynamic(), and thread_spotrf_static().
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 234 of file core_ssytrfsp.c.
References solver_cblk_s::cblktype, solver_matrix_s::diagthreshold, solver_cblk_s::fcolnum, kernel_trace_start(), solver_cblk_s::lcolnum, pastix_int_t, PastixKernelSYTRF, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, solver_cblk_s::stride, and pastix_lrblock_s::u.
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 correct representation of lower part of the data.

[in,out]  DLt  The pointer to the correct representation of DLt matrix (stored in the upper part by default).

Definition at line 432 of file core_ssytrfsp.c.
References solver_cblk_s::cblktype, cpucblk_sscalo(), cpucblk_ssytrfsp1d_sytrf(), cpucblk_strsmsp(), solver_matrix_s::lowrank, pastix_int_t, PastixNonUnit, PastixNoTrans, PastixRight, and PastixUpper.
Referenced by cpucblk_ssytrfsp1d(), and cpucblk_ssytrfsp1dplus().
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(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, core_ssytrfsp1d_gemm(), cpucblk_salloc(), cpucblk_salloc_lrws(), cpucblk_sgemmsp(), cpucblk_srelease_deps(), cpucblk_ssytrfsp1d_panel(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_matrix_s::lowrank, pastix_int_t, PastixLCoef, and PastixTrans.
Referenced by sequential_ssytrf(), thread_ssytrf_dynamic(), and thread_ssytrf_static().
void cpucblk_salloc_lrws  (  const SolverCblk *  cblk, 
pastix_lrblock_t *  lrblok,  
float *  ws  
) 
Initialize lrblock structure from a workspace for 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 98 of file cpucblk_sinit.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::fblokptr, pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by cpucblk_ssytrfsp1d().
void cpucblk_salloc_lr  (  pastix_coefside_t  side, 
SolverCblk *  cblk,  
int  rkmax  
) 
Allocate the cblk structure to store the coefficient.
When stored in lowrank format, the data pointer in the lowrank structure of each block must be initialized. This routines performs only the allocation and is threadsafe 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. 
[in]  rkmax  TODO 
Definition at line 148 of file cpucblk_sinit.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, core_slralloc(), solver_cblk_s::fblokptr, solver_cblk_s::lcoeftab, solver_blok_s::LRblock, pastix_int_t, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_salloc(), and cpucblk_sunpack_lr().
void cpucblk_salloc_fr  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Allocate the cblk structure to store the coefficient.
When stored in lowrank format, the data pointer in the lowrank structure of each block must be initialized. This routines performs only the allocation and is threadsafe 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 222 of file cpucblk_sinit.c.
References cblk_colnbr(), solver_cblk_s::lcoeftab, PastixLCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_salloc().
void cpucblk_salloc  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Allocate the cblk structure to store the coefficient.
When stored in lowrank format, the data pointer in the lowrank structure of each block must be initialized. This routines performs only the allocation and is threadsafe 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 269 of file cpucblk_sinit.c.
References solver_cblk_s::cblktype, cpucblk_salloc_fr(), cpucblk_salloc_lr(), solver_cblk_s::lcoeftab, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
Referenced by cpucblk_dsinit(), cpucblk_sgetrfsp1d(), cpucblk_sgetrfsp1dplus_update(), cpucblk_sinit(), cpucblk_spotrfsp1d(), cpucblk_spotrfsp1dplus_update(), cpucblk_ssytrfsp1d(), and cpucblk_ssytrfsp1dplus_update().
void cpucblk_sfree  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Free the cblk structure that store the coefficient.
This routines performs the free and is threadsafe 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 322 of file cpucblk_sinit.c.
References solver_cblk_s::cblktype, core_slrfree(), solver_cblk_s::fblokptr, solver_cblk_s::lcoeftab, solver_blok_s::LRblock, PastixLCoef, PastixUCoef, and solver_cblk_s::ucoeftab.
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 628 of file cpucblk_sinit.c.
References solver_matrix_s::cblktab, cpucblk_sfillin_fr(), and cpucblk_sfillin_lr().
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 fillin 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 226 of file coeftab_sinit.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, coeftabComputeCblkILULevels(), cpucblk_salloc(), cpucblk_scompress(), cpucblk_sdumpfile(), cpucblk_sfillin(), solver_cblk_s::ctrbcnt, solver_matrix_s::globalalloc, pastix_lr_s::ilu_lvl, and solver_matrix_s::lowrank.
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 182 of file cpucblk_sschur.c.
References solver_cblk_s::cblktype, cpucblk_sgetschur_fr(), and cpucblk_sgetschur_lr().
Referenced by coeftab_sgetschur().
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 nonzeroes 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 54 of file coeftab_sinit.c.
References blok_rownbr(), solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_cblk_s::fcolnum, solver_blok_s::frownum, solver_cblk_s::lcoeftab, pastix_int_t, PastixUCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by coeftab_sdump(), and cpucblk_sdumpfile().
int cpucblk_sdiff  (  pastix_coefside_t  side, 
const SolverCblk *  cblkA,  
SolverCblk *  cblkB  
) 
Compare two column blocks in fullrank 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 (BA). 
Definition at line 63 of file cpucblk_sdiff.c.
References cblk_colnbr(), core_sgeadd(), solver_cblk_s::lcoeftab, pastix_int_t, PastixLCoef, PastixNoTrans, PastixUCoef, solver_cblk_s::stride, and solver_cblk_s::ucoeftab.
Referenced by coeftab_sdiff().
pastix_fixdbl_t cpucblk_sadd  (  float  alpha, 
const SolverCblk *  cblkA,  
SolverCblk *  cblkB,  
const void *  A,  
void *  B,  
float *  work,  
pastix_int_t  lwork,  
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]  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. 
[in,out]  A  The pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, cblk.ucoeftab otherwise. Must be of size cblk.stride by cblk.width 
[in]  B  The pointer to the coeftab of the cblk.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; cblk.ucoeftab otherwise. Must be of size cblk.stride by cblk.width 
[in]  work  Temporary memory buffer. 
[in]  lwork  Temporary workspace dimension. 
[in]  lowrank  The structure with lowrank parameters. 
Definition at line 391 of file cpucblk_sadd.c.
References cblk_colnbr(), solver_cblk_s::cblktype, cpucblk_sadd_frfr(), cpucblk_sadd_frlr(), cpucblk_sadd_lrlr(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelGEADDCblkFRFR, PastixKernelGEADDCblkFRLR, PastixKernelGEADDCblkLRLR, and solver_cblk_s::stride.
Referenced by fct_cblk_sadd_cpu().
pastix_fixdbl_t cpublok_sadd  (  float  alpha, 
const SolverCblk *  cblkA,  
SolverCblk *  cblkB,  
pastix_int_t  blokA_m,  
pastix_int_t  blokB_m,  
const void *  A,  
void *  B,  
float *  work,  
pastix_int_t  lwork,  
const pastix_lr_t *  lowrank  
) 
Add two bloks.
The second cblk is overwritten by the sum of the two blocks. B < alpha * A + B
[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. 
[in]  blokA_m  Index of the first offdiagonal block in cblk, that is used for A. 
[in]  blokB_m  Index of the first offdiagonal block in cblk, that is used for B. 
[in,out]  A  The pointer to the coeftab of the blok.lcoeftab matrix storing the coefficients of the panel when the Lower part is computed, blok.ucoeftab otherwise. Must be of size blok.stride by blok.width 
[in,out]  B  The pointer to the coeftab of the blok.lcoeftab matrix storing the coefficients of the panel, if Symmetric/Symmetric cases or if upper part is computed; blok.ucoeftab otherwise. Must be of size blok.stride by blok.width 
[in]  work  Temporary memory buffer. 
[in]  lwork  Temporary workspace dimension. 
[in]  lowrank  The structure with lowrank parameters. 
Definition at line 431 of file cpublok_sadd.c.
References cblk_colnbr(), solver_cblk_s::cblktype, cpublok_sadd_frfr(), cpublok_sadd_frlr(), cpublok_sadd_lrlr(), solver_cblk_s::fblokptr, solver_blok_s::inlast, kernel_trace_start(), kernel_trace_stop(), pastix_int_t, PastixKernelGEADDCblkFRFR, PastixKernelGEADDCblkFRLR, PastixKernelGEADDCblkLRLR, and solver_cblk_s::stride.
Referenced by fct_blok_sadd_cpu().
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]  rank  The rank of the current thread. 
[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 543 of file cpucblk_smpi_coeftab.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
Referenced by sequential_sgetrf(), sequential_spotrf(), sequential_ssytrf(), thread_sgetrf_static(), thread_spotrf_static(), and thread_ssytrf_static().
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 602 of file cpucblk_smpi_coeftab.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_cblk_s::ctrbcnt, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
Referenced by cpucblk_sgetrfsp1d(), cpucblk_sgetrfsp1dplus_update(), cpucblk_spotrfsp1d(), cpucblk_spotrfsp1dplus_update(), cpucblk_ssytrfsp1d(), and cpucblk_ssytrfsp1dplus_update().
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 654 of file cpucblk_smpi_coeftab.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_int_t, PastixSchedDynamic, PastixSchedSequential, PastixSchedStatic, solver_matrix_s::reqidx, solver_matrix_s::reqnum, and solver_matrix_s::reqtab.
void cpucblk_srelease_rhs_fwd_deps  (  const args_solve_t *  enums, 
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb,  
const SolverCblk *  cblk,  
SolverCblk *  fcbk  
) 
Release the dependencies of the given cblk after an update.
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
[in]  cblk  The column block that contribute to fcblk. 
[in,out]  fcbk  The facing column block that is updated by cblk. 
Definition at line 765 of file cpucblk_smpi_rhs_fwd.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
int cpucblk_sincoming_rhs_fwd_deps  (  int  rank, 
const args_solve_t *  enums,  
SolverMatrix *  solvmtx,  
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0.
[in]  rank  The rank of the current thread. 
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in,out]  cblk  The column block that contribute to fcblk. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 703 of file cpucblk_smpi_rhs_fwd.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
void cpucblk_srequest_rhs_fwd_cleanup  (  const args_solve_t *  enums, 
pastix_int_t  sched,  
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb  
) 
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]  enums  Enums needed for the solve. 
[in]  sched  Define which sched is used

[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 821 of file cpucblk_smpi_rhs_fwd.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_int_t, PastixSchedDynamic, PastixSchedSequential, PastixSchedStatic, solver_matrix_s::reqidx, solver_matrix_s::reqnum, and solver_matrix_s::reqtab.
void cpucblk_srelease_rhs_bwd_deps  (  const args_solve_t *  enums, 
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb,  
const SolverCblk *  cblk,  
SolverCblk *  fcbk  
) 
Release the dependencies of the given cblk after an update.
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
[in]  cblk  The column block that contribute to fcblk. 
[in,out]  fcbk  The facing column block that is updated by cblk. 
Definition at line 527 of file cpucblk_smpi_rhs_bwd.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_cblk_s::ctrbcnt, PastixSchedSequential, pqueuePush1(), solver_cblk_s::priority, and solver_cblk_s::threadid.
int cpucblk_sincoming_rhs_bwd_deps  (  int  rank, 
const args_solve_t *  enums,  
SolverMatrix *  solvmtx,  
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
Wait for incoming dependencies, and return when cblk>ctrbcnt has reached 0.
[in]  rank  The rank of the current thread. 
[in]  enums  Enums needed for the solve. 
[in,out]  solvmtx  The solver matrix structure. 
[in,out]  cblk  The column block that contribute to fcblk. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 465 of file cpucblk_smpi_rhs_bwd.c.
References solver_cblk_s::cblktype, and solver_cblk_s::ctrbcnt.
void cpucblk_srequest_rhs_bwd_cleanup  (  const args_solve_t *  enums, 
pastix_int_t  sched,  
SolverMatrix *  solvmtx,  
pastix_rhs_t  rhsb  
) 
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]  enums  Enums needed for the solve. 
[in]  sched  Define which sched is used

[in,out]  solvmtx  The solver matrix structure. 
[in]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 585 of file cpucblk_smpi_rhs_bwd.c.
References solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_int_t, PastixSchedDynamic, PastixSchedSequential, PastixSchedStatic, solver_matrix_s::reqidx, solver_matrix_s::reqnum, and solver_matrix_s::reqtab.
void cpucblk_ssend_rhs_forward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 48 of file cpucblk_smpi_rhs_fwd.c.
References solver_cblk_s::bcscnum, cblk_colnbr(), pastix_rhs_s::cblkb, solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
void cpucblk_srecv_rhs_forward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
float *  work,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 229 of file cpucblk_smpi_rhs_fwd.c.
References pastix_rhs_s::b, cblk_colnbr(), solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
void cpucblk_ssend_rhs_backward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 105 of file cpucblk_smpi_rhs_fwd.c.
References pastix_rhs_s::b, solver_cblk_s::bcscnum, cblk_colnbr(), pastix_rhs_s::cblkb, solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::ld, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
void cpucblk_srecv_rhs_backward  (  const SolverMatrix *  solvmtx, 
SolverCblk *  cblk,  
pastix_rhs_t  rhsb  
) 
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]  rhsb  The pointer to the rhs data structure that holds the vectors of the right hand side. 
Definition at line 168 of file cpucblk_smpi_rhs_fwd.c.
References solver_cblk_s::bcscnum, cblk_colnbr(), pastix_rhs_s::cblkb, solver_cblk_s::cblktype, solver_cblk_s::gcblknum, solver_cblk_s::lcolidx, pastix_rhs_s::n, solver_cblk_s::ownerid, and pastix_int_t.
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 fullrank to lowrank format.
The compression to lowrank format is parameterized by the input information stored in the lowrank structure.
[in]  lowrank  The pointer to the lowrank structure describing the lorank 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 fullrank matrix. On output, if possible the matrix is compressed in block lowrank format. 
Definition at line 57 of file cpucblk_scompress.c.
References pastix_lrblock_s::rk, pastix_lrblock_s::u, and pastix_lrblock_s::v.
Referenced by core_strsmsp_lr(), core_strsmsp_lrsub(), and cpucblk_scompress().
pastix_int_t cpucblk_scompress  (  const SolverMatrix *  solvmtx, 
pastix_coefside_t  side,  
int  max_ilulvl,  
SolverCblk *  cblk  
) 
Compress a single column block from fullrank to lowrank format.
The compression to lowrank format is parameterized by the input information stored in the lowrank structure.
[in]  solvmtx  The pointer to the solver structure. 
[in]  side  Define which side of the matrix must be initialized.

[in]  max_ilulvl  TODO 
[in,out]  cblk  The column block to compress. 
Definition at line 114 of file cpucblk_scompress.c.
References blok_rownbr(), cblk_colnbr(), solver_cblk_s::cblktype, cpublok_scompress(), solver_cblk_s::fblokptr, solver_blok_s::iluklvl, solver_matrix_s::lowrank, solver_blok_s::LRblock, pastix_int_t, PastixLCoef, PastixUCoef, and pastix_lrblock_s::rk.
Referenced by coeftab_scompress(), cpucblk_dsinit(), cpucblk_sinit(), cpucblk_smemory(), and pcoeftabComp().
void cpucblk_suncompress  (  pastix_coefside_t  side, 
SolverCblk *  cblk  
) 
Uncompress a single column block from lowrank format to fullrank format.
[in]  side  Define which side of the matrix must be initialized.

[in,out]  cblk  The column block to uncompress. 
Definition at line 201 of file cpucblk_scompress.c.
References blok_rownbr(), cblk_colnbr(), core_slr2ge(), core_slralloc(), core_slrfree(), solver_cblk_s::fblokptr, solver_blok_s::LRblock, pastix_int_t, PastixLCoef, PastixNoTrans, PastixUCoef, and pastix_lrblock_s::u.
Referenced by coeftab_suncompress().
void cpucblk_smemory  (  pastix_coefside_t  side, 
const SolverMatrix *  solvmtx,  
SolverCblk *  cblk,  
pastix_int_t *  orig,  
pastix_int_t *  gain  
) 
Return the memory gain of the lowrank form over the fullrank form for a single columnblock.
This function returns the memory gain in number of elements for a single column block when it is stored in lowrank 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 281 of file cpucblk_scompress.c.
References blok_is_preselected(), blok_rownbr(), cblk_colnbr(), solver_matrix_s::cblktab, solver_cblk_s::cblktype, pastix_lr_s::compress_preselect, cpucblk_scompress(), solver_cblk_s::fblokptr, solver_blok_s::fcblknm, pastix_lr_s::ilu_lvl, solver_matrix_s::lowrank, LR_InDiag, LR_InSele, LR_OffDiag, solver_blok_s::LRblock, solver_cblk_s::ownerid, pastix_int_t, PastixLCoef, PastixUCoef, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and solver_cblk_s::sndeidx.