PaStiX Handbook  6.2.1
pastix_dlrcores.h File Reference
#include "pastix_lowrank.h"

Go to the source code of this file.

Data Structures

struct  core_dlrmm_s
 Structure to store all the parameters of the core_dlrmm family functions. More...
 

Typedefs

PastixDouble main template to convert a full rank matrix to low-rank
typedef int(* core_drrqr_cp_t) (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)
 
typedef int(* core_drrqr_rt_t) (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)
 

Functions

pastix_fixdbl_t core_dlrmm (core_dlrmm_t *params)
 Compute the matrix matrix product when involved matrices are stored in a low-rank structure. More...
 
PastixDouble low-rank kernels
void core_dlralloc (pastix_int_t M, pastix_int_t N, pastix_int_t rkmax, pastix_lrblock_t *A)
 Allocate a low-rank matrix. More...
 
void core_dlrfree (pastix_lrblock_t *A)
 Free a low-rank matrix. More...
 
int core_dlrsze (int copy, pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, pastix_int_t newrk, pastix_int_t newrkmax, pastix_int_t rklimit)
 Resize a low-rank matrix. More...
 
int core_dlr2ge (pastix_trans_t trans, pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *Alr, double *A, pastix_int_t lda)
 Convert a low rank matrix into a dense matrix. More...
 
void core_dlrcpy (const pastix_lr_t *lowrank, pastix_trans_t transA, double alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offx, pastix_int_t offy)
 Copy a small low-rank structure into a large one. More...
 
void core_dlrconcatenate_u (double alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_lrblock_t *B, pastix_int_t offx, double *u1u2)
 Concatenate left parts of two low-rank matrices. More...
 
void core_dlrconcatenate_v (pastix_trans_t transA1, double alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offy, double *v1v2)
 Concatenate right parts of two low-rank matrices. More...
 
double core_dlrnrm (pastix_normtype_t ntype, int transV, pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *A)
 Compute the norm of a low-rank matrix. More...
 
size_t core_dlrgetsize (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A)
 Compute the size of a block to send in LR. More...
 
char * core_dlrpack (pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *A, char *buffer)
 Pack low-rank data by side. More...
 
char * core_dlrunpack (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, char *buffer)
 Unpack low rank data and fill the cblk concerned by the computation. More...
 
const char * core_dlrunpack2 (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, const char *input, char **outptr)
 Unpack low rank data and fill the cblk concerned by the computation. More...
 
update_fr Functions to perform the update on a full-rank matrix
pastix_fixdbl_t core_dfrfr2fr (core_dlrmm_t *params)
 Perform the full-rank operation C = alpha * op(A) * op(B) + beta C. More...
 
pastix_fixdbl_t core_dfrlr2fr (core_dlrmm_t *params)
 Perform the operation C = alpha * op(A) * op(B) + beta C, with A and C full-rank and B low-rank. More...
 
pastix_fixdbl_t core_dlrfr2fr (core_dlrmm_t *params)
 Perform the operation C = alpha * op(A) * op(B) + beta C, with B and C full-rank and A low-rank. More...
 
pastix_fixdbl_t core_dlrlr2fr (core_dlrmm_t *params)
 Perform the operation C = alpha * op(A) * op(B) + beta C, with A and B low-rank and C full-rank. More...
 
update_lr Functions to prepare the AB product for an update on a low-rank matrix
pastix_fixdbl_t core_dfrfr2lr (core_dlrmm_t *params, pastix_lrblock_t *AB, int *infomask, pastix_int_t Kmax)
 Perform the operation AB = op(A) * op(B), with A and B full-rank and AB low-rank. More...
 
pastix_fixdbl_t core_dfrlr2lr (core_dlrmm_t *params, pastix_lrblock_t *AB, int *infomask, pastix_int_t Brkmin)
 Perform the operation AB = op(A) * op(B), with A full-rank and B and AB low-rank. More...
 
pastix_fixdbl_t core_dlrfr2lr (core_dlrmm_t *params, pastix_lrblock_t *AB, int *infomask, pastix_int_t Arkmin)
 Perform the operation AB = op(A) * op(B), with B full-rank and A and AB low-rank. More...
 
pastix_fixdbl_t core_dlrlr2lr (core_dlrmm_t *params, pastix_lrblock_t *AB, int *infomask)
 Perform the operation AB = op(A) * op(B), with A, B, and AB low-rank. More...
 
add_lr Functions to add the AB contribution in a low-rank format to any C matrix
pastix_fixdbl_t core_dlradd (core_dlrmm_t *params, const pastix_lrblock_t *AB, pastix_trans_t transV, int infomask)
 Perform the addition of two low-rank matrices. More...
 
PastixDouble SVD low-rank kernels
pastix_fixdbl_t core_dge2lr_svd (int use_reltol, pastix_fixdbl_t tol, pastix_int_t rklimit, pastix_int_t m, pastix_int_t n, const void *Avoid, pastix_int_t lda, pastix_lrblock_t *Alr)
 Convert a full rank matrix in a low rank matrix, using SVD. More...
 
pastix_fixdbl_t core_drradd_svd (const pastix_lr_t *lowrank, pastix_trans_t transA1, const void *alphaptr, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offx, pastix_int_t offy)
 Add two LR structures A=(-u1) v1^T and B=u2 v2^T into u2 v2^T. More...
 
PastixDouble Rank Revealing QR kernels for low-rank
pastix_fixdbl_t core_dge2lr_pqrcp (int use_reltol, pastix_fixdbl_t tol, pastix_int_t rklimit, pastix_int_t m, pastix_int_t n, const void *Avoid, pastix_int_t lda, pastix_lrblock_t *Alr)
 Convert a full rank matrix in a low rank matrix, using PQRCP. More...
 
pastix_fixdbl_t core_drradd_pqrcp (const pastix_lr_t *lowrank, pastix_trans_t transA1, const void *alphaptr, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offx, pastix_int_t offy)
 Add two LR structures A=(-u1) v1^T and B=u2 v2^T into u2 v2^T. More...
 
pastix_fixdbl_t core_dge2lr_rqrcp (int use_reltol, pastix_fixdbl_t tol, pastix_int_t rklimit, pastix_int_t m, pastix_int_t n, const void *Avoid, pastix_int_t lda, pastix_lrblock_t *Alr)
 Convert a full rank matrix in a low rank matrix, using RQRCP. More...
 
pastix_fixdbl_t core_drradd_rqrcp (const pastix_lr_t *lowrank, pastix_trans_t transA1, const void *alphaptr, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offx, pastix_int_t offy)
 Add two LR structures A=(-u1) v1^T and B=u2 v2^T into u2 v2^T. More...
 
pastix_fixdbl_t core_dge2lr_tqrcp (int use_reltol, pastix_fixdbl_t tol, pastix_int_t rklimit, pastix_int_t m, pastix_int_t n, const void *Avoid, pastix_int_t lda, pastix_lrblock_t *Alr)
 Convert a full rank matrix in a low rank matrix, using TQRCP. More...
 
pastix_fixdbl_t core_drradd_tqrcp (const pastix_lr_t *lowrank, pastix_trans_t transA1, const void *alphaptr, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offx, pastix_int_t offy)
 Add two LR structures A=(-u1) v1^T and B=u2 v2^T into u2 v2^T. More...
 
pastix_fixdbl_t core_dge2lr_rqrrt (int use_reltol, pastix_fixdbl_t tol, pastix_int_t rklimit, pastix_int_t m, pastix_int_t n, const void *Avoid, pastix_int_t lda, pastix_lrblock_t *Alr)
 Convert a full rank matrix in a low rank matrix, using RQRRT. More...
 
pastix_fixdbl_t core_dge2lr_qrcp (core_drrqr_cp_t rrqrfct, int use_reltol, pastix_fixdbl_t tol, pastix_int_t rklimit, pastix_int_t m, pastix_int_t n, const void *Avoid, pastix_int_t lda, pastix_lrblock_t *Alr)
 Template to convert a full rank matrix into a low rank matrix through QR decompositions. More...
 
pastix_fixdbl_t core_dge2lr_qrrt (core_drrqr_rt_t rrqrfct, int use_reltol, pastix_fixdbl_t tol, pastix_int_t rklimit, pastix_int_t m, pastix_int_t n, const void *Avoid, pastix_int_t lda, pastix_lrblock_t *Alr)
 Template to convert a full rank matrix into a low rank matrix through QR decompositions. More...
 
pastix_fixdbl_t core_drradd_qr (core_drrqr_cp_t rrqrfct, const pastix_lr_t *lowrank, pastix_trans_t transA1, const void *alphaptr, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offx, pastix_int_t offy)
 Template to perform the addition of two low-rank structures with compression kernel based on QR decomposition. More...
 
PastixDouble low-rank debug functions
void core_dlrdbg_printsvd (pastix_int_t M, pastix_int_t N, const double *A, pastix_int_t lda)
 Print the svd values of the given matrix. More...
 
int core_dlrdbg_check_orthogonality (pastix_int_t M, pastix_int_t N, const double *A, pastix_int_t lda)
 Check the orthogonality of the matrix A. More...
 
int core_dlrdbg_check_orthogonality_AB (pastix_int_t M, pastix_int_t NA, pastix_int_t NB, const double *A, pastix_int_t lda, const double *B, pastix_int_t ldb)
 Check the orthogonality of the matrix A relatively to the matrix B. More...
 

PastixDouble LRMM low-rank kernels

#define PASTE_CORE_DLRMM_PARAMS(_a_)
 Initialize all the parameters of the core_dlrmm family functions to ease the access. More...
 
#define PASTE_CORE_DLRMM_VOID
 Void all the parameters of the core_dlrmm family functions to silent warnings. More...
 
typedef struct core_dlrmm_s core_dlrmm_t
 Structure to store all the parameters of the core_dlrmm family functions.
 
static double * core_dlrmm_getws (core_dlrmm_t *params, ssize_t newsize)
 Function to get a workspace pointer if space is available in the one provided. More...
 

Detailed Description

PaStiX kernel header.

Version
6.2.1
Author
Mathieu Faverge
Pierre Ramet
Xavier Lacoste
Esragul Korkmaz
Nolan Bredel
Date
2021-06-29
Generated arithmetic file\n from /builds/solverstack/pastix/kernels/pastix_zlrcores.h, normal z -> d, Tue Apr 12 09:38:27 2022

Definition in file pastix_dlrcores.h.