PaStiX Handbook  6.3.2
pastix_ccores.h File Reference

Go to the source code of this file.

Functions

void solve_blok_ctrsm (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, int nrhs, const void *dataA, pastix_complex32_t *b, int ldb)
 Apply a solve trsm update related to a diagonal block of the matrix A. More...
 
void solve_blok_cgemm (pastix_side_t side, pastix_trans_t trans, pastix_int_t nrhs, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcbk, const void *dataA, const pastix_complex32_t *B, pastix_int_t ldb, pastix_complex32_t *C, pastix_int_t ldc)
 Apply a solve gemm update related to a single block of the matrix A. More...
 
void solve_cblk_ctrsmsp_forward (const args_solve_t *enums, SolverMatrix *datacode, const SolverCblk *cblk, pastix_rhs_t b)
 Apply a forward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_ctrsmsp_backward (const args_solve_t *enums, SolverMatrix *datacode, SolverCblk *cblk, pastix_rhs_t b)
 Apply a backward solve related to one cblk to all the right hand side. More...
 
void solve_cblk_cdiag (const SolverCblk *cblk, const void *dataA, int nrhs, pastix_complex32_t *b, int ldb, pastix_complex32_t *work)
 Apply the diagonal solve related to one cblk to all the right hand side. More...
 
void core_csytrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const pastix_complex32_t *L, pastix_complex32_t *C, pastix_complex32_t *work)
 
int cpucblk_cpotrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_cpotrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex32_t *work, pastix_int_t lwork)
 Apply the updates of the cholesky factorisation of a given panel. More...
 
int cpucblk_csytrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_csytrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex32_t *work)
 Apply the updates of the LDL^t factorisation of a given panel. More...
 
int cpucblk_cgetrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk)
 Perform the LU factorization of a given panel and submit tasks for the subsequent updates. More...
 
void cpucblk_cgetrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, pastix_complex32_t *work, pastix_int_t lwork)
 Apply the updates of the LU factorisation of a given panel. More...
 
PastixComplex32 BLAS kernels
void core_cplrnt (int m, int n, pastix_complex32_t *A, int lda, int gM, int m0, int n0, unsigned long long int seed)
 Generate a random tile. More...
 
void core_cgetmo (int m, int n, const pastix_complex32_t *A, int lda, pastix_complex32_t *B, int ldb)
 Transposes a m-by-n matrix out of place using an extra workspace of size m-by-n. More...
 
int core_cgeadd (pastix_trans_t trans, pastix_int_t M, pastix_int_t N, pastix_complex32_t alpha, const pastix_complex32_t *A, pastix_int_t LDA, pastix_complex32_t beta, pastix_complex32_t *B, pastix_int_t LDB)
 Add two matrices together. More...
 
int core_cgemdm (pastix_trans_t transA, pastix_trans_t transB, int M, int N, int K, pastix_complex32_t alpha, const pastix_complex32_t *A, int LDA, const pastix_complex32_t *B, int LDB, pastix_complex32_t beta, pastix_complex32_t *C, int LDC, const pastix_complex32_t *D, int incD, pastix_complex32_t *WORK, int LWORK)
 Perform one of the following matrix-matrix operations. More...
 
int core_cpqrcp (float tol, pastix_int_t maxrank, int full_update, pastix_int_t nb, pastix_int_t m, pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_int_t *jpvt, pastix_complex32_t *tau, pastix_complex32_t *work, pastix_int_t lwork, float *rwork)
 Compute a rank-reavealing QR factorization. More...
 
int core_crqrcp (float tol, pastix_int_t maxrank, int refine, pastix_int_t nb, pastix_int_t m, pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_int_t *jpvt, pastix_complex32_t *tau, pastix_complex32_t *work, pastix_int_t lwork, float *rwork)
 Compute a randomized QR factorization. More...
 
int core_crqrrt (float tol, pastix_int_t maxrank, pastix_int_t nb, pastix_int_t m, pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_complex32_t *tau, pastix_complex32_t *B, pastix_int_t ldb, pastix_complex32_t *tau_b, pastix_complex32_t *work, pastix_int_t lwork, float normA)
 Compute a randomized QR factorization with rotation technique. More...
 
int core_ctqrcp (float tol, pastix_int_t maxrank, int unused, pastix_int_t nb, pastix_int_t m, pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_int_t *jpvt, pastix_complex32_t *tau, pastix_complex32_t *work, pastix_int_t lwork, float *rwork)
 Compute a randomized QR factorization with truncated updates. More...
 
int core_ctradd (pastix_uplo_t uplo, pastix_trans_t trans, pastix_int_t M, pastix_int_t N, pastix_complex32_t alpha, const pastix_complex32_t *A, pastix_int_t LDA, pastix_complex32_t beta, pastix_complex32_t *B, pastix_int_t LDB)
 Add two triangular matrices together as in PBLAS pctradd. More...
 
int core_cscalo (pastix_trans_t trans, pastix_int_t M, pastix_int_t N, const pastix_complex32_t *A, pastix_int_t lda, const pastix_complex32_t *D, pastix_int_t ldd, pastix_complex32_t *B, pastix_int_t ldb)
 Scale a matrix by a diagonal out of place. More...
 
PastixComplex32 Othogonalization kernels for low-rank updates
pastix_fixdbl_t core_clrorthu_fullqr (pastix_int_t M, pastix_int_t N, pastix_int_t rank, pastix_complex32_t *U, pastix_int_t ldu, pastix_complex32_t *V, pastix_int_t ldv)
 Try to orthognalize the u part of the low-rank form, and update the v part accordingly using full QR. More...
 
pastix_fixdbl_t core_clrorthu_partialqr (pastix_int_t M, pastix_int_t N, pastix_int_t r1, pastix_int_t *r2ptr, pastix_int_t offx, pastix_int_t offy, pastix_complex32_t *U, pastix_int_t ldu, pastix_complex32_t *V, pastix_int_t ldv)
 Try to orthognalize the U part of the low-rank form, and update the V part accordingly using partial QR. More...
 
pastix_fixdbl_t core_clrorthu_cgs (pastix_int_t M1, pastix_int_t N1, pastix_int_t M2, pastix_int_t N2, pastix_int_t r1, pastix_int_t *r2ptr, pastix_int_t offx, pastix_int_t offy, pastix_complex32_t *U, pastix_int_t ldu, pastix_complex32_t *V, pastix_int_t ldv)
 Try to orthognalize the U part of the low-rank form, and update the V part accordingly using CGS. More...
 
PastixComplex32 LAPACK kernels
void core_cpotrfsp (pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_int_t *nbpivots, float criterion)
 Compute the block static pivoting Cholesky factorization of the matrix n-by-n A = L * L^t . More...
 
void core_cpxtrfsp (pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_int_t *nbpivots, float criterion)
 Compute the block static pivoting LL^t factorization of the matrix n-by-n A = L * L^t . More...
 
void core_cgetrfsp (pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_int_t *nbpivots, float criterion)
 Compute the block static pivoting LU factorization of the matrix m-by-n A = L * U. More...
 
void core_csytrfsp (pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_int_t *nbpivots, float criterion)
 Compute the block static pivoting factorization of the symmetric matrix n-by-n A such that A = L * D * L^t. More...
 
PastixComplex32 cblk-BLAS CPU kernels
int cpucblk_cgeaddsp1d (const SolverCblk *cblk1, SolverCblk *cblk2, const pastix_complex32_t *L1, pastix_complex32_t *L2, const pastix_complex32_t *U1, pastix_complex32_t *U2)
 Add two column blocks together. More...
 
pastix_fixdbl_t cpucblk_cgemmsp (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const void *A, const void *B, void *C, pastix_complex32_t *work, pastix_int_t lwork, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
void cpucblk_ctrsmsp (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const void *A, void *C, const pastix_lr_t *lowrank)
 Compute the updates associated to a column of off-diagonal blocks. More...
 
void cpucblk_cscalo (pastix_trans_t trans, const SolverCblk *cblk, void *dataL, void *dataLD)
 Copy the L term with scaling for the two-terms algorithm. More...
 
pastix_fixdbl_t cpublok_cgemmsp (pastix_trans_t trans, const SolverCblk *cblk, SolverCblk *fcblk, pastix_int_t blok_mk, pastix_int_t blok_nk, pastix_int_t blok_mn, const void *A, const void *B, void *C, const pastix_lr_t *lowrank)
 Compute the CPU gemm associated to a couple of off-diagonal blocks. More...
 
pastix_fixdbl_t cpublok_ctrsmsp (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t blok_m, const void *A, void *C, const pastix_lr_t *lowrank)
 Compute the updates associated to one off-diagonal block. More...
 
void cpublok_cscalo (pastix_trans_t trans, 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 two-terms algorithm. More...
 
PastixComplex32 cblk LU kernels
int cpucblk_cgetrfsp1d_getrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *U)
 Compute the LU factorization of the diagonal block in a panel. More...
 
int cpucblk_cgetrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *L, void *U)
 Compute the LU factorization of one panel. More...
 
int cpucblk_cgetrfsp1d (SolverMatrix *solvmtx, SolverCblk *cblk, pastix_complex32_t *work, pastix_int_t lwork)
 Perform the LU factorization of a given panel and apply all its updates. More...
 
PastixComplex32 cblk Cholesky kernels
int cpucblk_cpotrfsp1d_potrf (SolverMatrix *solvmtx, SolverCblk *cblk, void *dataL)
 Compute the Cholesky factorization of the diagonal block in a panel. More...
 
int cpucblk_cpotrfsp1d_panel (SolverMatrix *solvmtx, SolverCblk *cblk, void *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 full-rank 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 full-rank to low-rank format. More...
 
pastix_int_t cpucblk_ccompress (const SolverMatrix *solvmtx, pastix_coefside_t side, int max_ilulvl, SolverCblk *cblk)
 Compress a single column block from full-rank to low-rank format. More...
 
void cpucblk_cuncompress (pastix_coefside_t side, SolverCblk *cblk)
 Uncompress a single column block from low-rank format to full-rank format. More...
 
void cpucblk_cmemory (pastix_coefside_t side, const SolverMatrix *solvmtx, SolverCblk *cblk, pastix_int_t *orig, pastix_int_t *gain)
 Return the memory gain of the low-rank form over the full-rank form for a single column-block. More...
 

Detailed Description

PaStiX kernel header.

Version
6.3.2
Author
Mathieu Faverge
Pierre Ramet
Xavier Lacoste
Esragul Korkmaz
Gregoire Pichon
Tony Delarue
Alycia Lisito
Nolan Bredel
Date
2023-12-01
Generated arithmetic file
from /builds/solverstack/pastix/kernels/pastix_zcores.h, normal z -> c, Wed Dec 13 12:09:03 2023

Definition in file pastix_ccores.h.