PaStiX Handbook
6.2.1
|
Modules | |
Low-rank debug kernels | |
PastixFloat Rank Revealing QR kernels for low-rank | |
pastix_fixdbl_t | core_sge2lr_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_srradd_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_sge2lr_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_srradd_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_sge2lr_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_srradd_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_sge2lr_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_sge2lr_qrcp (core_srrqr_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_sge2lr_qrrt (core_srrqr_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_srradd_qr (core_srrqr_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 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... | |
PastixComplex32 Rank Revealing QR kernels for low-rank | |
pastix_fixdbl_t | core_cge2lr_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_crradd_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_cge2lr_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_crradd_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_cge2lr_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_crradd_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_cge2lr_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_cge2lr_qrcp (core_crrqr_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_cge2lr_qrrt (core_crrqr_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_crradd_qr (core_crrqr_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... | |
PastixComplex64 Rank Revealing QR kernels for low-rank | |
pastix_fixdbl_t | core_zge2lr_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_zrradd_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_zge2lr_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_zrradd_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_zge2lr_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_zrradd_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_zge2lr_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_zge2lr_qrcp (core_zrrqr_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_zge2lr_qrrt (core_zrrqr_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_zrradd_qr (core_zrrqr_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... | |
These are the rank-revealing QR implementations to generate the low-rank representations of a full rank matrix.
pastix_fixdbl_t core_sge2lr_pqrcp | ( | int | use_reltol, |
pastix_fixdbl_t | tol, | ||
pastix_int_t | rklimit, | ||
pastix_int_t | m, | ||
pastix_int_t | n, | ||
const void * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using PQRCP.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 440 of file core_spqrcp.c.
References core_sge2lr_qrcp(), and core_spqrcp().
pastix_fixdbl_t core_srradd_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.
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute PQRCP decomposition of (I u2^T u1) * (v2 v1)^T (0 I )
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
Definition at line 504 of file core_spqrcp.c.
References core_spqrcp(), and core_srradd_qr().
pastix_fixdbl_t core_sge2lr_rqrcp | ( | int | use_reltol, |
pastix_fixdbl_t | tol, | ||
pastix_int_t | rklimit, | ||
pastix_int_t | m, | ||
pastix_int_t | n, | ||
const void * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using RQRCP.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 411 of file core_srqrcp.c.
References core_sge2lr_qrcp(), and core_srqrcp().
pastix_fixdbl_t core_srradd_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.
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute RQRCP decomposition of (I u2^T u1) * (v2 v1)^T (0 I )
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
Definition at line 474 of file core_srqrcp.c.
References core_srqrcp(), and core_srradd_qr().
pastix_fixdbl_t core_sge2lr_tqrcp | ( | int | use_reltol, |
pastix_fixdbl_t | tol, | ||
pastix_int_t | rklimit, | ||
pastix_int_t | m, | ||
pastix_int_t | n, | ||
const void * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using TQRCP.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 454 of file core_stqrcp.c.
References core_sge2lr_qrcp(), and core_stqrcp().
pastix_fixdbl_t core_srradd_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.
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute TQRCP decomposition of (I u2^T u1) * (v2 v1)^T (0 I )
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
Definition at line 518 of file core_stqrcp.c.
References core_srradd_qr(), and core_stqrcp().
pastix_fixdbl_t core_sge2lr_rqrrt | ( | int | use_reltol, |
pastix_fixdbl_t | tol, | ||
pastix_int_t | rklimit, | ||
pastix_int_t | m, | ||
pastix_int_t | n, | ||
const void * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using RQRRT.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 374 of file core_srqrrt.c.
References core_sge2lr_qrrt(), and core_srqrrt().
pastix_fixdbl_t core_sge2lr_qrcp | ( | core_srrqr_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.
This version is only used when permutation method is used. Only difference from core_sge2lr_qrrt is the V calculation part, That is: Instead of applying inverse rotation on V, here inverse permutation is applied
[in] | rrqrfct | QR decomposition function used to compute the rank revealing factorization and create the low-rank form of A. |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Backup A into Acpy to try to compress
It was not interesting to compress, so we restore the dense version in Alr
We compute U and V
Definition at line 749 of file core_sgelrops.c.
Referenced by core_sge2lr_pqrcp(), core_sge2lr_rqrcp(), and core_sge2lr_tqrcp().
pastix_fixdbl_t core_sge2lr_qrrt | ( | core_srrqr_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.
This version is only used when rotational method is used. Only difference from core_sge2lr_qr is the V calculation part, That is: Instead of applying inverse permutation on V, here inverse rotation is applied
[in] | rrqrfct | QR decomposition function used to compute the rank revealing factorization and create the low-rank form of A. |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Backup A into Acpy to try to compress
It was not interesting to compress, so we restore the dense version in Alr
We compute U and V
Definition at line 937 of file core_sgelrops.c.
Referenced by core_sge2lr_rqrrt().
pastix_fixdbl_t core_srradd_qr | ( | core_srrqr_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.
Add two LR structures A=(-u1) v1^T and B=u2 v2^T into u2 v2^T
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute Rank Revealing QR decomposition of (I u2^T u1) * (v2 v1)^T (0 I ) Any QR rank revealing kernel can be used for the recompression of the V part.
[in] | rrqrfct | QR decomposition function used to compute the rank revealing factorization of the sum of the two low-rank matrices. |
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
In relative tolerance, we can choose two solutions: 1) The first one, more conservative, is to compress relatively to the norm of the final matrix [ \alpha A + B ]. In this kernel, we exploit the fact that the V part contains all the information while the U part is orthonormal, and compute it as follow:
float norm = LAPACKE_slange_work( LAPACK_COL_MAJOR, 'f', rank, N, v1v2, ldv, NULL ); tol = tol * norm;
2) The second solution, less conservative, will allow to reduce the rank more efficiently. Since A and B have been compressed relatively to their respective norms, there is no reason to compress the sum relatively to its own norm, but it is more reasonable to compress it relatively to the norm of A and B. For example, A-B would be full with the first criterion, and rank null with the second. Note that here, we can only have an estimation that once again reduces the conservation of the criterion. || \alpha A + B || <= |\alpha| ||A|| + ||B|| <= |\alpha| ||U_aV_a|| + ||U_bV_b||
Definition at line 1174 of file core_sgelrops.c.
Referenced by core_srradd_pqrcp(), core_srradd_rqrcp(), and core_srradd_tqrcp().
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 * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using PQRCP.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 440 of file core_dpqrcp.c.
References core_dge2lr_qrcp(), and core_dpqrcp().
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.
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute PQRCP decomposition of (I u2^T u1) * (v2 v1)^T (0 I )
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
Definition at line 504 of file core_dpqrcp.c.
References core_dpqrcp(), and core_drradd_qr().
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 * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using RQRCP.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 411 of file core_drqrcp.c.
References core_dge2lr_qrcp(), and core_drqrcp().
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.
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute RQRCP decomposition of (I u2^T u1) * (v2 v1)^T (0 I )
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
Definition at line 474 of file core_drqrcp.c.
References core_drqrcp(), and core_drradd_qr().
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 * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using TQRCP.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 454 of file core_dtqrcp.c.
References core_dge2lr_qrcp(), and core_dtqrcp().
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.
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute TQRCP decomposition of (I u2^T u1) * (v2 v1)^T (0 I )
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
Definition at line 518 of file core_dtqrcp.c.
References core_drradd_qr(), and core_dtqrcp().
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 * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using RQRRT.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 374 of file core_drqrrt.c.
References core_dge2lr_qrrt(), and core_drqrrt().
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.
This version is only used when permutation method is used. Only difference from core_dge2lr_qrrt is the V calculation part, That is: Instead of applying inverse rotation on V, here inverse permutation is applied
[in] | rrqrfct | QR decomposition function used to compute the rank revealing factorization and create the low-rank form of A. |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Backup A into Acpy to try to compress
It was not interesting to compress, so we restore the dense version in Alr
We compute U and V
Definition at line 749 of file core_dgelrops.c.
Referenced by core_dge2lr_pqrcp(), core_dge2lr_rqrcp(), and core_dge2lr_tqrcp().
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.
This version is only used when rotational method is used. Only difference from core_dge2lr_qr is the V calculation part, That is: Instead of applying inverse permutation on V, here inverse rotation is applied
[in] | rrqrfct | QR decomposition function used to compute the rank revealing factorization and create the low-rank form of A. |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Backup A into Acpy to try to compress
It was not interesting to compress, so we restore the dense version in Alr
We compute U and V
Definition at line 937 of file core_dgelrops.c.
Referenced by core_dge2lr_rqrrt().
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.
Add two LR structures A=(-u1) v1^T and B=u2 v2^T into u2 v2^T
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute Rank Revealing QR decomposition of (I u2^T u1) * (v2 v1)^T (0 I ) Any QR rank revealing kernel can be used for the recompression of the V part.
[in] | rrqrfct | QR decomposition function used to compute the rank revealing factorization of the sum of the two low-rank matrices. |
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
In relative tolerance, we can choose two solutions: 1) The first one, more conservative, is to compress relatively to the norm of the final matrix [ \alpha A + B ]. In this kernel, we exploit the fact that the V part contains all the information while the U part is orthonormal, and compute it as follow:
double norm = LAPACKE_dlange_work( LAPACK_COL_MAJOR, 'f', rank, N, v1v2, ldv, NULL ); tol = tol * norm;
2) The second solution, less conservative, will allow to reduce the rank more efficiently. Since A and B have been compressed relatively to their respective norms, there is no reason to compress the sum relatively to its own norm, but it is more reasonable to compress it relatively to the norm of A and B. For example, A-B would be full with the first criterion, and rank null with the second. Note that here, we can only have an estimation that once again reduces the conservation of the criterion. || \alpha A + B || <= |\alpha| ||A|| + ||B|| <= |\alpha| ||U_aV_a|| + ||U_bV_b||
Definition at line 1174 of file core_dgelrops.c.
Referenced by core_drradd_pqrcp(), core_drradd_rqrcp(), and core_drradd_tqrcp().
pastix_fixdbl_t core_cge2lr_pqrcp | ( | int | use_reltol, |
pastix_fixdbl_t | tol, | ||
pastix_int_t | rklimit, | ||
pastix_int_t | m, | ||
pastix_int_t | n, | ||
const void * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using PQRCP.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 440 of file core_cpqrcp.c.
References core_cge2lr_qrcp(), and core_cpqrcp().
pastix_fixdbl_t core_crradd_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.
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute PQRCP decomposition of (I u2^T u1) * (v2 v1)^T (0 I )
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
Definition at line 504 of file core_cpqrcp.c.
References core_cpqrcp(), and core_crradd_qr().
pastix_fixdbl_t core_cge2lr_rqrcp | ( | int | use_reltol, |
pastix_fixdbl_t | tol, | ||
pastix_int_t | rklimit, | ||
pastix_int_t | m, | ||
pastix_int_t | n, | ||
const void * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using RQRCP.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 411 of file core_crqrcp.c.
References core_cge2lr_qrcp(), and core_crqrcp().
pastix_fixdbl_t core_crradd_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.
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute RQRCP decomposition of (I u2^T u1) * (v2 v1)^T (0 I )
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
Definition at line 474 of file core_crqrcp.c.
References core_crqrcp(), and core_crradd_qr().
pastix_fixdbl_t core_cge2lr_tqrcp | ( | int | use_reltol, |
pastix_fixdbl_t | tol, | ||
pastix_int_t | rklimit, | ||
pastix_int_t | m, | ||
pastix_int_t | n, | ||
const void * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using TQRCP.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 454 of file core_ctqrcp.c.
References core_cge2lr_qrcp(), and core_ctqrcp().
pastix_fixdbl_t core_crradd_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.
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute TQRCP decomposition of (I u2^T u1) * (v2 v1)^T (0 I )
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
Definition at line 518 of file core_ctqrcp.c.
References core_crradd_qr(), and core_ctqrcp().
pastix_fixdbl_t core_cge2lr_rqrrt | ( | int | use_reltol, |
pastix_fixdbl_t | tol, | ||
pastix_int_t | rklimit, | ||
pastix_int_t | m, | ||
pastix_int_t | n, | ||
const void * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using RQRRT.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 374 of file core_crqrrt.c.
References core_cge2lr_qrrt(), and core_crqrrt().
pastix_fixdbl_t core_cge2lr_qrcp | ( | core_crrqr_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.
This version is only used when permutation method is used. Only difference from core_cge2lr_qrrt is the V calculation part, That is: Instead of applying inverse rotation on V, here inverse permutation is applied
[in] | rrqrfct | QR decomposition function used to compute the rank revealing factorization and create the low-rank form of A. |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Backup A into Acpy to try to compress
It was not interesting to compress, so we restore the dense version in Alr
We compute U and V
Definition at line 749 of file core_cgelrops.c.
Referenced by core_cge2lr_pqrcp(), core_cge2lr_rqrcp(), and core_cge2lr_tqrcp().
pastix_fixdbl_t core_cge2lr_qrrt | ( | core_crrqr_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.
This version is only used when rotational method is used. Only difference from core_cge2lr_qr is the V calculation part, That is: Instead of applying inverse permutation on V, here inverse rotation is applied
[in] | rrqrfct | QR decomposition function used to compute the rank revealing factorization and create the low-rank form of A. |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Backup A into Acpy to try to compress
It was not interesting to compress, so we restore the dense version in Alr
We compute U and V
Definition at line 937 of file core_cgelrops.c.
Referenced by core_cge2lr_rqrrt().
pastix_fixdbl_t core_crradd_qr | ( | core_crrqr_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.
Add two LR structures A=(-u1) v1^T and B=u2 v2^T into u2 v2^T
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute Rank Revealing QR decomposition of (I u2^T u1) * (v2 v1)^T (0 I ) Any QR rank revealing kernel can be used for the recompression of the V part.
[in] | rrqrfct | QR decomposition function used to compute the rank revealing factorization of the sum of the two low-rank matrices. |
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
In relative tolerance, we can choose two solutions: 1) The first one, more conservative, is to compress relatively to the norm of the final matrix [ \alpha A + B ]. In this kernel, we exploit the fact that the V part contains all the information while the U part is orthonormal, and compute it as follow:
float norm = LAPACKE_clange_work( LAPACK_COL_MAJOR, 'f', rank, N, v1v2, ldv, NULL ); tol = tol * norm;
2) The second solution, less conservative, will allow to reduce the rank more efficiently. Since A and B have been compressed relatively to their respective norms, there is no reason to compress the sum relatively to its own norm, but it is more reasonable to compress it relatively to the norm of A and B. For example, A-B would be full with the first criterion, and rank null with the second. Note that here, we can only have an estimation that once again reduces the conservation of the criterion. || \alpha A + B || <= |\alpha| ||A|| + ||B|| <= |\alpha| ||U_aV_a|| + ||U_bV_b||
Definition at line 1174 of file core_cgelrops.c.
Referenced by core_crradd_pqrcp(), core_crradd_rqrcp(), and core_crradd_tqrcp().
pastix_fixdbl_t core_zge2lr_pqrcp | ( | int | use_reltol, |
pastix_fixdbl_t | tol, | ||
pastix_int_t | rklimit, | ||
pastix_int_t | m, | ||
pastix_int_t | n, | ||
const void * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using PQRCP.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 440 of file core_zpqrcp.c.
References core_zge2lr_qrcp(), and core_zpqrcp().
pastix_fixdbl_t core_zrradd_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.
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute PQRCP decomposition of (I u2^T u1) * (v2 v1)^T (0 I )
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
Definition at line 504 of file core_zpqrcp.c.
References core_zpqrcp(), and core_zrradd_qr().
pastix_fixdbl_t core_zge2lr_rqrcp | ( | int | use_reltol, |
pastix_fixdbl_t | tol, | ||
pastix_int_t | rklimit, | ||
pastix_int_t | m, | ||
pastix_int_t | n, | ||
const void * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using RQRCP.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 411 of file core_zrqrcp.c.
References core_zge2lr_qrcp(), and core_zrqrcp().
pastix_fixdbl_t core_zrradd_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.
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute RQRCP decomposition of (I u2^T u1) * (v2 v1)^T (0 I )
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
Definition at line 474 of file core_zrqrcp.c.
References core_zrqrcp(), and core_zrradd_qr().
pastix_fixdbl_t core_zge2lr_tqrcp | ( | int | use_reltol, |
pastix_fixdbl_t | tol, | ||
pastix_int_t | rklimit, | ||
pastix_int_t | m, | ||
pastix_int_t | n, | ||
const void * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using TQRCP.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 454 of file core_ztqrcp.c.
References core_zge2lr_qrcp(), and core_ztqrcp().
pastix_fixdbl_t core_zrradd_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.
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute TQRCP decomposition of (I u2^T u1) * (v2 v1)^T (0 I )
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
Definition at line 518 of file core_ztqrcp.c.
References core_zrradd_qr(), and core_ztqrcp().
pastix_fixdbl_t core_zge2lr_rqrrt | ( | int | use_reltol, |
pastix_fixdbl_t | tol, | ||
pastix_int_t | rklimit, | ||
pastix_int_t | m, | ||
pastix_int_t | n, | ||
const void * | A, | ||
pastix_int_t | lda, | ||
pastix_lrblock_t * | Alr | ||
) |
Convert a full rank matrix in a low rank matrix, using RQRRT.
[in] | use_reltol | Defines if the kernel should use relative tolerance (tol *||A||), or absolute tolerance (tol). |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Definition at line 374 of file core_zrqrrt.c.
References core_zge2lr_qrrt(), and core_zrqrrt().
pastix_fixdbl_t core_zge2lr_qrcp | ( | core_zrrqr_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.
This version is only used when permutation method is used. Only difference from core_zge2lr_qrrt is the V calculation part, That is: Instead of applying inverse rotation on V, here inverse permutation is applied
[in] | rrqrfct | QR decomposition function used to compute the rank revealing factorization and create the low-rank form of A. |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Backup A into Acpy to try to compress
It was not interesting to compress, so we restore the dense version in Alr
We compute U and V
Definition at line 749 of file core_zgelrops.c.
Referenced by core_zge2lr_pqrcp(), core_zge2lr_rqrcp(), and core_zge2lr_tqrcp().
pastix_fixdbl_t core_zge2lr_qrrt | ( | core_zrrqr_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.
This version is only used when rotational method is used. Only difference from core_zge2lr_qr is the V calculation part, That is: Instead of applying inverse permutation on V, here inverse rotation is applied
[in] | rrqrfct | QR decomposition function used to compute the rank revealing factorization and create the low-rank form of A. |
[in] | tol | The tolerance used as a criterion to eliminate information from the full rank matrix |
[in] | rklimit | The maximum rank to store the matrix in low-rank format. If -1, set to min(m, n) / PASTIX_LR_MINRATIO. |
[in] | m | Number of rows of the matrix A, and of the low rank matrix Alr. |
[in] | n | Number of columns of the matrix A, and of the low rank matrix Alr. |
[in] | A | The matrix of dimension lda-by-n that needs to be compressed |
[in] | lda | The leading dimension of the matrix A. lda >= max(1, m) |
[out] | Alr | The low rank matrix structure that will store the low rank representation of A |
Backup A into Acpy to try to compress
It was not interesting to compress, so we restore the dense version in Alr
We compute U and V
Definition at line 937 of file core_zgelrops.c.
Referenced by core_zge2lr_rqrrt().
pastix_fixdbl_t core_zrradd_qr | ( | core_zrrqr_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.
Add two LR structures A=(-u1) v1^T and B=u2 v2^T into u2 v2^T
u2v2^T - u1v1^T = (u2 u1) (v2 v1)^T Orthogonalize (u2 u1) = (u2, u1 - u2(u2^T u1)) * (I u2^T u1) (0 I ) Compute Rank Revealing QR decomposition of (I u2^T u1) * (v2 v1)^T (0 I ) Any QR rank revealing kernel can be used for the recompression of the V part.
[in] | rrqrfct | QR decomposition function used to compute the rank revealing factorization of the sum of the two low-rank matrices. |
[in] | lowrank | The structure with low-rank parameters. |
[in] | transA1 |
|
[in] | alpha | alpha * A is add to B |
[in] | M1 | The number of rows of the matrix A. |
[in] | N1 | The number of columns of the matrix A. |
[in] | A | The low-rank representation of the matrix A. |
[in] | M2 | The number of rows of the matrix B. |
[in] | N2 | The number of columns of the matrix B. |
[in] | B | The low-rank representation of the matrix B. |
[in] | offx | The horizontal offset of A with respect to B. |
[in] | offy | The vertical offset of A with respect to B. |
In relative tolerance, we can choose two solutions: 1) The first one, more conservative, is to compress relatively to the norm of the final matrix [ \alpha A + B ]. In this kernel, we exploit the fact that the V part contains all the information while the U part is orthonormal, and compute it as follow:
double norm = LAPACKE_zlange_work( LAPACK_COL_MAJOR, 'f', rank, N, v1v2, ldv, NULL ); tol = tol * norm;
2) The second solution, less conservative, will allow to reduce the rank more efficiently. Since A and B have been compressed relatively to their respective norms, there is no reason to compress the sum relatively to its own norm, but it is more reasonable to compress it relatively to the norm of A and B. For example, A-B would be full with the first criterion, and rank null with the second. Note that here, we can only have an estimation that once again reduces the conservation of the criterion. || \alpha A + B || <= |\alpha| ||A|| + ||B|| <= |\alpha| ||U_aV_a|| + ||U_bV_b||
Definition at line 1174 of file core_zgelrops.c.
Referenced by core_zrradd_pqrcp(), core_zrradd_rqrcp(), and core_zrradd_tqrcp().
const pastix_lr_t* core_slrmm_s::lowrank |
The lowrank structure
Definition at line 81 of file pastix_slrcores.h.
pastix_trans_t core_slrmm_s::transA |
Specify op(A) and is equal to PastixNoTrans, PastixTrans, or PastixTrans
Definition at line 82 of file pastix_slrcores.h.
Referenced by core_slrmm_Cfr().
pastix_trans_t core_slrmm_s::transB |
Specify op(B) and is equal to PastixNoTrans, PastixTrans, or PastixTrans
Definition at line 83 of file pastix_slrcores.h.
Referenced by core_slrmm_Cfr().
pastix_int_t core_slrmm_s::M |
Number of rows of the A matrix
Definition at line 84 of file pastix_slrcores.h.
pastix_int_t core_slrmm_s::N |
Number of columns of the B matrix
Definition at line 85 of file pastix_slrcores.h.
pastix_int_t core_slrmm_s::K |
Number of columns of the A matrix (= number of rows of the B matrix)
Definition at line 86 of file pastix_slrcores.h.
pastix_int_t core_slrmm_s::Cm |
Number of rows of the C matrix that receives the AB contribution
Definition at line 87 of file pastix_slrcores.h.
pastix_int_t core_slrmm_s::Cn |
Number of columns of the C matrix that receives the AB contribution
Definition at line 88 of file pastix_slrcores.h.
pastix_int_t core_slrmm_s::offx |
Horizontal offsets of the AB product in the C matrix
Definition at line 89 of file pastix_slrcores.h.
pastix_int_t core_slrmm_s::offy |
Vertical offsets of the AB product in the C matrix
Definition at line 90 of file pastix_slrcores.h.
float core_slrmm_s::alpha |
The alpha factor
Definition at line 91 of file pastix_slrcores.h.
const pastix_lrblock_t* core_slrmm_s::A |
The A matrix described in a low-rank structure
Definition at line 92 of file pastix_slrcores.h.
Referenced by core_slrmm_Cfr().
const pastix_lrblock_t* core_slrmm_s::B |
The B matrix described in a low-rank structure
Definition at line 93 of file pastix_slrcores.h.
Referenced by core_slrmm_Cfr().
float core_slrmm_s::beta |
The beta factor
Definition at line 94 of file pastix_slrcores.h.
pastix_lrblock_t* core_slrmm_s::C |
The C matrix described in a low-rank structure
Definition at line 95 of file pastix_slrcores.h.
Referenced by core_slradd(), and core_slrmm_Cfr().
float* core_slrmm_s::work |
The pointer to an available workspace
Definition at line 96 of file pastix_slrcores.h.
Referenced by core_slrmm(), and core_slrmm_getws().
pastix_int_t core_slrmm_s::lwork |
The size of the given workspace
Definition at line 97 of file pastix_slrcores.h.
Referenced by core_slrmm_getws().
pastix_int_t core_slrmm_s::lwused |
The size of the workspace that is already used
Definition at line 98 of file pastix_slrcores.h.
Referenced by core_slrmm(), and core_slrmm_getws().
pastix_atomic_lock_t* core_slrmm_s::lock |
The lock to protect the concurrent accesses on the C matrix
Definition at line 99 of file pastix_slrcores.h.
Referenced by core_slradd().
const pastix_lr_t* core_dlrmm_s::lowrank |
The lowrank structure
Definition at line 81 of file pastix_dlrcores.h.
pastix_trans_t core_dlrmm_s::transA |
Specify op(A) and is equal to PastixNoTrans, PastixTrans, or PastixTrans
Definition at line 82 of file pastix_dlrcores.h.
Referenced by core_dlrmm_Cfr().
pastix_trans_t core_dlrmm_s::transB |
Specify op(B) and is equal to PastixNoTrans, PastixTrans, or PastixTrans
Definition at line 83 of file pastix_dlrcores.h.
Referenced by core_dlrmm_Cfr().
pastix_int_t core_dlrmm_s::M |
Number of rows of the A matrix
Definition at line 84 of file pastix_dlrcores.h.
pastix_int_t core_dlrmm_s::N |
Number of columns of the B matrix
Definition at line 85 of file pastix_dlrcores.h.
pastix_int_t core_dlrmm_s::K |
Number of columns of the A matrix (= number of rows of the B matrix)
Definition at line 86 of file pastix_dlrcores.h.
pastix_int_t core_dlrmm_s::Cm |
Number of rows of the C matrix that receives the AB contribution
Definition at line 87 of file pastix_dlrcores.h.
pastix_int_t core_dlrmm_s::Cn |
Number of columns of the C matrix that receives the AB contribution
Definition at line 88 of file pastix_dlrcores.h.
pastix_int_t core_dlrmm_s::offx |
Horizontal offsets of the AB product in the C matrix
Definition at line 89 of file pastix_dlrcores.h.
pastix_int_t core_dlrmm_s::offy |
Vertical offsets of the AB product in the C matrix
Definition at line 90 of file pastix_dlrcores.h.
double core_dlrmm_s::alpha |
The alpha factor
Definition at line 91 of file pastix_dlrcores.h.
const pastix_lrblock_t* core_dlrmm_s::A |
The A matrix described in a low-rank structure
Definition at line 92 of file pastix_dlrcores.h.
Referenced by core_dlrmm_Cfr().
const pastix_lrblock_t* core_dlrmm_s::B |
The B matrix described in a low-rank structure
Definition at line 93 of file pastix_dlrcores.h.
Referenced by core_dlrmm_Cfr().
double core_dlrmm_s::beta |
The beta factor
Definition at line 94 of file pastix_dlrcores.h.
pastix_lrblock_t* core_dlrmm_s::C |
The C matrix described in a low-rank structure
Definition at line 95 of file pastix_dlrcores.h.
Referenced by core_dlradd(), and core_dlrmm_Cfr().
double* core_dlrmm_s::work |
The pointer to an available workspace
Definition at line 96 of file pastix_dlrcores.h.
Referenced by core_dlrmm(), and core_dlrmm_getws().
pastix_int_t core_dlrmm_s::lwork |
The size of the given workspace
Definition at line 97 of file pastix_dlrcores.h.
Referenced by core_dlrmm_getws().
pastix_int_t core_dlrmm_s::lwused |
The size of the workspace that is already used
Definition at line 98 of file pastix_dlrcores.h.
Referenced by core_dlrmm(), and core_dlrmm_getws().
pastix_atomic_lock_t* core_dlrmm_s::lock |
The lock to protect the concurrent accesses on the C matrix
Definition at line 99 of file pastix_dlrcores.h.
Referenced by core_dlradd().
const pastix_lr_t* core_clrmm_s::lowrank |
The lowrank structure
Definition at line 81 of file pastix_clrcores.h.
pastix_trans_t core_clrmm_s::transA |
Specify op(A) and is equal to PastixNoTrans, PastixTrans, or PastixConjTrans
Definition at line 82 of file pastix_clrcores.h.
Referenced by core_clrmm_Cfr().
pastix_trans_t core_clrmm_s::transB |
Specify op(B) and is equal to PastixNoTrans, PastixTrans, or PastixConjTrans
Definition at line 83 of file pastix_clrcores.h.
Referenced by core_clrmm_Cfr().
pastix_int_t core_clrmm_s::M |
Number of rows of the A matrix
Definition at line 84 of file pastix_clrcores.h.
pastix_int_t core_clrmm_s::N |
Number of columns of the B matrix
Definition at line 85 of file pastix_clrcores.h.
pastix_int_t core_clrmm_s::K |
Number of columns of the A matrix (= number of rows of the B matrix)
Definition at line 86 of file pastix_clrcores.h.
pastix_int_t core_clrmm_s::Cm |
Number of rows of the C matrix that receives the AB contribution
Definition at line 87 of file pastix_clrcores.h.
pastix_int_t core_clrmm_s::Cn |
Number of columns of the C matrix that receives the AB contribution
Definition at line 88 of file pastix_clrcores.h.
pastix_int_t core_clrmm_s::offx |
Horizontal offsets of the AB product in the C matrix
Definition at line 89 of file pastix_clrcores.h.
pastix_int_t core_clrmm_s::offy |
Vertical offsets of the AB product in the C matrix
Definition at line 90 of file pastix_clrcores.h.
pastix_complex32_t core_clrmm_s::alpha |
The alpha factor
Definition at line 91 of file pastix_clrcores.h.
const pastix_lrblock_t* core_clrmm_s::A |
The A matrix described in a low-rank structure
Definition at line 92 of file pastix_clrcores.h.
Referenced by core_clrmm_Cfr().
const pastix_lrblock_t* core_clrmm_s::B |
The B matrix described in a low-rank structure
Definition at line 93 of file pastix_clrcores.h.
Referenced by core_clrmm_Cfr().
pastix_complex32_t core_clrmm_s::beta |
The beta factor
Definition at line 94 of file pastix_clrcores.h.
pastix_lrblock_t* core_clrmm_s::C |
The C matrix described in a low-rank structure
Definition at line 95 of file pastix_clrcores.h.
Referenced by core_clradd(), and core_clrmm_Cfr().
pastix_complex32_t* core_clrmm_s::work |
The pointer to an available workspace
Definition at line 96 of file pastix_clrcores.h.
Referenced by core_clrmm(), and core_clrmm_getws().
pastix_int_t core_clrmm_s::lwork |
The size of the given workspace
Definition at line 97 of file pastix_clrcores.h.
Referenced by core_clrmm_getws().
pastix_int_t core_clrmm_s::lwused |
The size of the workspace that is already used
Definition at line 98 of file pastix_clrcores.h.
Referenced by core_clrmm(), and core_clrmm_getws().
pastix_atomic_lock_t* core_clrmm_s::lock |
The lock to protect the concurrent accesses on the C matrix
Definition at line 99 of file pastix_clrcores.h.
Referenced by core_clradd().
const pastix_lr_t* core_zlrmm_s::lowrank |
The lowrank structure
Definition at line 81 of file pastix_zlrcores.h.
pastix_trans_t core_zlrmm_s::transA |
Specify op(A) and is equal to PastixNoTrans, PastixTrans, or PastixConjTrans
Definition at line 82 of file pastix_zlrcores.h.
Referenced by core_zlrmm_Cfr().
pastix_trans_t core_zlrmm_s::transB |
Specify op(B) and is equal to PastixNoTrans, PastixTrans, or PastixConjTrans
Definition at line 83 of file pastix_zlrcores.h.
Referenced by core_zlrmm_Cfr().
pastix_int_t core_zlrmm_s::M |
Number of rows of the A matrix
Definition at line 84 of file pastix_zlrcores.h.
pastix_int_t core_zlrmm_s::N |
Number of columns of the B matrix
Definition at line 85 of file pastix_zlrcores.h.
pastix_int_t core_zlrmm_s::K |
Number of columns of the A matrix (= number of rows of the B matrix)
Definition at line 86 of file pastix_zlrcores.h.
pastix_int_t core_zlrmm_s::Cm |
Number of rows of the C matrix that receives the AB contribution
Definition at line 87 of file pastix_zlrcores.h.
pastix_int_t core_zlrmm_s::Cn |
Number of columns of the C matrix that receives the AB contribution
Definition at line 88 of file pastix_zlrcores.h.
pastix_int_t core_zlrmm_s::offx |
Horizontal offsets of the AB product in the C matrix
Definition at line 89 of file pastix_zlrcores.h.
pastix_int_t core_zlrmm_s::offy |
Vertical offsets of the AB product in the C matrix
Definition at line 90 of file pastix_zlrcores.h.
pastix_complex64_t core_zlrmm_s::alpha |
The alpha factor
Definition at line 91 of file pastix_zlrcores.h.
const pastix_lrblock_t* core_zlrmm_s::A |
The A matrix described in a low-rank structure
Definition at line 92 of file pastix_zlrcores.h.
Referenced by core_zlrmm_Cfr().
const pastix_lrblock_t* core_zlrmm_s::B |
The B matrix described in a low-rank structure
Definition at line 93 of file pastix_zlrcores.h.
Referenced by core_zlrmm_Cfr().
pastix_complex64_t core_zlrmm_s::beta |
The beta factor
Definition at line 94 of file pastix_zlrcores.h.
pastix_lrblock_t* core_zlrmm_s::C |
The C matrix described in a low-rank structure
Definition at line 95 of file pastix_zlrcores.h.
Referenced by core_zlradd(), and core_zlrmm_Cfr().
pastix_complex64_t* core_zlrmm_s::work |
The pointer to an available workspace
Definition at line 96 of file pastix_zlrcores.h.
Referenced by core_zlrmm(), and core_zlrmm_getws().
pastix_int_t core_zlrmm_s::lwork |
The size of the given workspace
Definition at line 97 of file pastix_zlrcores.h.
Referenced by core_zlrmm_getws().
pastix_int_t core_zlrmm_s::lwused |
The size of the workspace that is already used
Definition at line 98 of file pastix_zlrcores.h.
Referenced by core_zlrmm(), and core_zlrmm_getws().
pastix_atomic_lock_t* core_zlrmm_s::lock |
The lock to protect the concurrent accesses on the C matrix
Definition at line 99 of file pastix_zlrcores.h.
Referenced by core_zlradd().