PaStiX Handbook
6.4.0
|
Go to the source code of this file.
Functions | |
void | solve_blok_dtrsm (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, int nrhs, const void *dataA, double *b, int ldb) |
Apply a solve trsm update related to a diagonal block of the matrix A. More... | |
void | solve_blok_dgemm (pastix_side_t side, pastix_trans_t trans, pastix_int_t nrhs, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcbk, const void *dataA, const double *B, pastix_int_t ldb, double *C, pastix_int_t ldc) |
Apply a solve gemm update related to a single block of the matrix A. More... | |
void | solve_cblk_dtrsmsp_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_dtrsmsp_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_ddiag (const SolverCblk *cblk, const void *dataA, int nrhs, double *b, int ldb, double *work) |
Apply the diagonal solve related to one cblk to all the right hand side. More... | |
void | core_dsytrfsp1d_gemm (const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const double *L, double *C, double *work) |
int | cpucblk_dpotrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the Cholesky factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_dpotrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, double *work, pastix_int_t lwork) |
Apply the updates of the cholesky factorisation of a given panel. More... | |
int | cpucblk_dsytrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the LDL^t factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_dsytrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, double *work) |
Apply the updates of the LDL^t factorisation of a given panel. More... | |
int | cpucblk_dgetrfsp1dplus (SolverMatrix *solvmtx, SolverCblk *cblk) |
Perform the LU factorization of a given panel and submit tasks for the subsequent updates. More... | |
void | cpucblk_dgetrfsp1dplus_update (SolverMatrix *solvmtx, SolverBlok *blok, double *work, pastix_int_t lwork) |
Apply the updates of the LU factorisation of a given panel. More... | |
PastixDouble BLAS kernels | |
void | core_dplrnt (int m, int n, double *A, int lda, int gM, int m0, int n0, unsigned long long int seed) |
Generate a random tile. More... | |
void | core_dgetmo (int m, int n, const double *A, int lda, double *B, int ldb) |
Transposes a m-by-n matrix out of place using an extra workspace of size m-by-n. More... | |
int | core_dgeadd (pastix_trans_t trans, pastix_int_t M, pastix_int_t N, double alpha, const double *A, pastix_int_t LDA, double beta, double *B, pastix_int_t LDB) |
Add two matrices together. More... | |
int | core_dgemdm (pastix_trans_t transA, pastix_trans_t transB, int M, int N, int K, double alpha, const double *A, int LDA, const double *B, int LDB, double beta, double *C, int LDC, const double *D, int incD, double *WORK, int LWORK) |
Perform one of the following matrix-matrix operations. More... | |
int | core_dpqrcp (double tol, pastix_int_t maxrank, int full_update, pastix_int_t nb, pastix_int_t m, pastix_int_t n, double *A, pastix_int_t lda, pastix_int_t *jpvt, double *tau, double *work, pastix_int_t lwork, double *rwork) |
Compute a rank-reavealing QR factorization. More... | |
int | core_drqrcp (double tol, pastix_int_t maxrank, int refine, pastix_int_t nb, pastix_int_t m, pastix_int_t n, double *A, pastix_int_t lda, pastix_int_t *jpvt, double *tau, double *work, pastix_int_t lwork, double *rwork) |
Compute a randomized QR factorization. More... | |
int | core_drqrrt (double tol, pastix_int_t maxrank, pastix_int_t nb, pastix_int_t m, pastix_int_t n, double *A, pastix_int_t lda, double *tau, double *B, pastix_int_t ldb, double *tau_b, double *work, pastix_int_t lwork, double normA) |
Compute a randomized QR factorization with rotation technique. More... | |
int | core_dtqrcp (double tol, pastix_int_t maxrank, int unused, pastix_int_t nb, pastix_int_t m, pastix_int_t n, double *A, pastix_int_t lda, pastix_int_t *jpvt, double *tau, double *work, pastix_int_t lwork, double *rwork) |
Compute a randomized QR factorization with truncated updates. More... | |
int | core_dtradd (pastix_uplo_t uplo, pastix_trans_t trans, pastix_int_t M, pastix_int_t N, double alpha, const double *A, pastix_int_t LDA, double beta, double *B, pastix_int_t LDB) |
Add two triangular matrices together as in PBLAS pdtradd. More... | |
int | core_dscalo (pastix_trans_t trans, pastix_int_t M, pastix_int_t N, const double *A, pastix_int_t lda, const double *D, pastix_int_t ldd, double *B, pastix_int_t ldb) |
Scale a matrix by a diagonal out of place. More... | |
PastixDouble Othogonalization kernels for low-rank updates | |
pastix_fixdbl_t | core_dlrorthu_fullqr (pastix_int_t M, pastix_int_t N, pastix_int_t rank, double *U, pastix_int_t ldu, double *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_dlrorthu_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, double *U, pastix_int_t ldu, double *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_dlrorthu_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, double *U, pastix_int_t ldu, double *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... | |
PastixDouble LAPACK kernels | |
void | core_dpotrfsp (pastix_int_t n, double *A, pastix_int_t lda, pastix_int_t *nbpivots, double criterion) |
Compute the block static pivoting Cholesky factorization of the matrix n-by-n A = L * L^t . More... | |
void | core_dgetrfsp (pastix_int_t n, double *A, pastix_int_t lda, pastix_int_t *nbpivots, double criterion) |
Compute the block static pivoting LU factorization of the matrix m-by-n A = L * U. More... | |
void | core_dsytrfsp (pastix_int_t n, double *A, pastix_int_t lda, pastix_int_t *nbpivots, double criterion) |
Compute the block static pivoting factorization of the symmetric matrix n-by-n A such that A = L * D * L^t. More... | |
PastixDouble cblk-BLAS CPU kernels | |
int | cpucblk_dgeaddsp1d (const SolverCblk *cblk1, SolverCblk *cblk2, const double *L1, double *L2, const double *U1, double *U2) |
Add two column blocks together. More... | |
pastix_fixdbl_t | cpucblk_dgemmsp (pastix_coefside_t sideA, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, const void *A, const void *B, void *C, double *work, pastix_int_t lwork, const pastix_lr_t *lowrank) |
Compute the updates associated to one off-diagonal block. More... | |
void | cpucblk_dtrsmsp (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, const void *A, void *C, const pastix_lr_t *lowrank) |
Compute the updates associated to a column of off-diagonal blocks. More... | |
void | cpucblk_dscalo (pastix_trans_t trans, const SolverCblk *cblk, void *dataL, void *dataLD) |
Copy the L term with scaling for the two-terms algorithm. More... | |
pastix_fixdbl_t | cpublok_dgemmsp (pastix_trans_t trans, const SolverCblk *cblk, SolverCblk *fcblk, pastix_int_t blok_mk, pastix_int_t blok_nk, pastix_int_t blok_mn, const void *A, const void *B, void *C, const pastix_lr_t *lowrank) |
Compute the CPU gemm associated to a couple of off-diagonal blocks. More... | |
pastix_fixdbl_t | cpublok_dtrsmsp (pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t blok_m, const void *A, void *C, const pastix_lr_t *lowrank) |
Compute the updates associated to one off-diagonal block. More... | |
void | cpublok_dscalo (pastix_trans_t trans, 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... | |
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 full-rank 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 full-rank to low-rank format. More... | |
pastix_int_t | cpucblk_dcompress (const SolverMatrix *solvmtx, pastix_coefside_t side, int max_ilulvl, SolverCblk *cblk) |
Compress a single column block from full-rank to low-rank format. More... | |
void | cpucblk_duncompress (pastix_coefside_t side, SolverCblk *cblk) |
Uncompress a single column block from low-rank format to full-rank format. More... | |
void | cpucblk_dmemory (pastix_coefside_t side, 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... | |
PaStiX kernel header.
Definition in file pastix_dcores.h.