PaStiX Handbook  6.3.2

Data Structures

struct  core_clrmm_s
 Structure to store all the parameters of the core_clrmm family functions. More...
 
struct  core_slrmm_s
 Structure to store all the parameters of the core_slrmm family functions. More...
 
struct  core_dlrmm_s
 Structure to store all the parameters of the core_dlrmm family functions. More...
 
struct  core_zlrmm_s
 Structure to store all the parameters of the core_zlrmm family functions. More...
 

Functions

pastix_fixdbl_t core_clrmm (core_clrmm_t *params)
 Compute the matrix matrix product when involved matrices are stored in a low-rank structure. More...
 
pastix_fixdbl_t core_slrmm (core_slrmm_t *params)
 Compute the matrix matrix product when involved matrices are stored in a low-rank structure. More...
 
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...
 
pastix_fixdbl_t core_zlrmm (core_zlrmm_t *params)
 Compute the matrix matrix product when involved matrices are stored in a low-rank structure. More...
 

PastixComplex32 LRMM low-rank kernels

typedef struct core_clrmm_s core_clrmm_t
 Structure to store all the parameters of the core_clrmm family functions.
 
static pastix_complex32_tcore_clrmm_getws (core_clrmm_t *params, ssize_t newsize)
 Function to get a workspace pointer if space is available in the one provided. More...
 
#define PASTE_CORE_CLRMM_PARAMS(_a_)
 Initialize all the parameters of the core_clrmm family functions to ease the access. More...
 
#define PASTE_CORE_CLRMM_VOID
 Void all the parameters of the core_clrmm family functions to silent warnings. More...
 

PastixFloat LRMM low-rank kernels

typedef struct core_slrmm_s core_slrmm_t
 Structure to store all the parameters of the core_slrmm family functions.
 
static float * core_slrmm_getws (core_slrmm_t *params, ssize_t newsize)
 Function to get a workspace pointer if space is available in the one provided. More...
 
#define PASTE_CORE_SLRMM_PARAMS(_a_)
 Initialize all the parameters of the core_slrmm family functions to ease the access. More...
 
#define PASTE_CORE_SLRMM_VOID
 Void all the parameters of the core_slrmm family functions to silent warnings. More...
 

PastixDouble LRMM low-rank kernels

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...
 
#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...
 

PastixComplex64 LRMM low-rank kernels

typedef struct core_zlrmm_s core_zlrmm_t
 Structure to store all the parameters of the core_zlrmm family functions.
 
static pastix_complex64_t * core_zlrmm_getws (core_zlrmm_t *params, ssize_t newsize)
 Function to get a workspace pointer if space is available in the one provided. More...
 
#define PASTE_CORE_ZLRMM_PARAMS(_a_)
 Initialize all the parameters of the core_zlrmm family functions to ease the access. More...
 
#define PASTE_CORE_ZLRMM_VOID
 Void all the parameters of the core_zlrmm family functions to silent warnings. More...
 

update_fr Functions to perform the update on a full-rank matrix

pastix_fixdbl_t core_cfrfr2fr (core_clrmm_t *params)
 Perform the full-rank operation C = alpha * op(A) * op(B) + beta C. More...
 
pastix_fixdbl_t core_cfrlr2fr (core_clrmm_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_clrfr2fr (core_clrmm_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_clrlr2fr (core_clrmm_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_cfrfr2lr (core_clrmm_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_cfrlr2lr (core_clrmm_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_clrfr2lr (core_clrmm_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_clrlr2lr (core_clrmm_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_clradd (core_clrmm_t *params, const pastix_lrblock_t *AB, pastix_trans_t transV, int infomask)
 Perform the addition of two low-rank matrices. More...
 

update_fr Functions to perform the update on a full-rank matrix

pastix_fixdbl_t core_sfrfr2fr (core_slrmm_t *params)
 Perform the full-rank operation C = alpha * op(A) * op(B) + beta C. More...
 
pastix_fixdbl_t core_sfrlr2fr (core_slrmm_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_slrfr2fr (core_slrmm_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_slrlr2fr (core_slrmm_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_sfrfr2lr (core_slrmm_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_sfrlr2lr (core_slrmm_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_slrfr2lr (core_slrmm_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_slrlr2lr (core_slrmm_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_slradd (core_slrmm_t *params, const pastix_lrblock_t *AB, pastix_trans_t transV, int infomask)
 Perform the addition of two low-rank matrices. 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...
 

update_fr Functions to perform the update on a full-rank matrix

pastix_fixdbl_t core_zfrfr2fr (core_zlrmm_t *params)
 Perform the full-rank operation C = alpha * op(A) * op(B) + beta C. More...
 
pastix_fixdbl_t core_zfrlr2fr (core_zlrmm_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_zlrfr2fr (core_zlrmm_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_zlrlr2fr (core_zlrmm_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_zfrfr2lr (core_zlrmm_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_zfrlr2lr (core_zlrmm_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_zlrfr2lr (core_zlrmm_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_zlrlr2lr (core_zlrmm_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_zlradd (core_zlrmm_t *params, const pastix_lrblock_t *AB, pastix_trans_t transV, int infomask)
 Perform the addition of two low-rank matrices. More...
 

Detailed Description

This are the kernels to compute the low-rank updates


Data Type Documentation

◆ core_clrmm_s

struct core_clrmm_s

Structure to store all the parameters of the core_clrmm family functions.

Definition at line 80 of file pastix_clrcores.h.

Data Fields
const pastix_lr_t * lowrank

The lowrank structure

pastix_trans_t transA

Specify op(A) and is equal to PastixNoTrans, PastixTrans, or PastixConjTrans

pastix_trans_t transB

Specify op(B) and is equal to PastixNoTrans, PastixTrans, or PastixConjTrans

pastix_int_t M

Number of rows of the A matrix

pastix_int_t N

Number of columns of the B matrix

pastix_int_t K

Number of columns of the A matrix (= number of rows of the B matrix)

pastix_int_t Cm

Number of rows of the C matrix that receives the AB contribution

pastix_int_t Cn

Number of columns of the C matrix that receives the AB contribution

pastix_int_t offx

Horizontal offsets of the AB product in the C matrix

pastix_int_t offy

Vertical offsets of the AB product in the C matrix

pastix_complex32_t alpha

The alpha factor

const pastix_lrblock_t * A

The A matrix described in a low-rank structure

const pastix_lrblock_t * B

The B matrix described in a low-rank structure

pastix_complex32_t beta

The beta factor

pastix_lrblock_t * C

The C matrix described in a low-rank structure

pastix_complex32_t * work

The pointer to an available workspace

pastix_int_t lwork

The size of the given workspace

pastix_int_t lwused

The size of the workspace that is already used

pastix_atomic_lock_t * lock

The lock to protect the concurrent accesses on the C matrix

◆ core_slrmm_s

struct core_slrmm_s

Structure to store all the parameters of the core_slrmm family functions.

Definition at line 80 of file pastix_slrcores.h.

Data Fields
const pastix_lr_t * lowrank

The lowrank structure

pastix_trans_t transA

Specify op(A) and is equal to PastixNoTrans, PastixTrans, or PastixTrans

pastix_trans_t transB

Specify op(B) and is equal to PastixNoTrans, PastixTrans, or PastixTrans

pastix_int_t M

Number of rows of the A matrix

pastix_int_t N

Number of columns of the B matrix

pastix_int_t K

Number of columns of the A matrix (= number of rows of the B matrix)

pastix_int_t Cm

Number of rows of the C matrix that receives the AB contribution

pastix_int_t Cn

Number of columns of the C matrix that receives the AB contribution

pastix_int_t offx

Horizontal offsets of the AB product in the C matrix

pastix_int_t offy

Vertical offsets of the AB product in the C matrix

float alpha

The alpha factor

const pastix_lrblock_t * A

The A matrix described in a low-rank structure

const pastix_lrblock_t * B

The B matrix described in a low-rank structure

float beta

The beta factor

pastix_lrblock_t * C

The C matrix described in a low-rank structure

float * work

The pointer to an available workspace

pastix_int_t lwork

The size of the given workspace

pastix_int_t lwused

The size of the workspace that is already used

pastix_atomic_lock_t * lock

The lock to protect the concurrent accesses on the C matrix

◆ core_dlrmm_s

struct core_dlrmm_s

Structure to store all the parameters of the core_dlrmm family functions.

Definition at line 80 of file pastix_dlrcores.h.

Data Fields
const pastix_lr_t * lowrank

The lowrank structure

pastix_trans_t transA

Specify op(A) and is equal to PastixNoTrans, PastixTrans, or PastixTrans

pastix_trans_t transB

Specify op(B) and is equal to PastixNoTrans, PastixTrans, or PastixTrans

pastix_int_t M

Number of rows of the A matrix

pastix_int_t N

Number of columns of the B matrix

pastix_int_t K

Number of columns of the A matrix (= number of rows of the B matrix)

pastix_int_t Cm

Number of rows of the C matrix that receives the AB contribution

pastix_int_t Cn

Number of columns of the C matrix that receives the AB contribution

pastix_int_t offx

Horizontal offsets of the AB product in the C matrix

pastix_int_t offy

Vertical offsets of the AB product in the C matrix

double alpha

The alpha factor

const pastix_lrblock_t * A

The A matrix described in a low-rank structure

const pastix_lrblock_t * B

The B matrix described in a low-rank structure

double beta

The beta factor

pastix_lrblock_t * C

The C matrix described in a low-rank structure

double * work

The pointer to an available workspace

pastix_int_t lwork

The size of the given workspace

pastix_int_t lwused

The size of the workspace that is already used

pastix_atomic_lock_t * lock

The lock to protect the concurrent accesses on the C matrix

◆ core_zlrmm_s

struct core_zlrmm_s

Structure to store all the parameters of the core_zlrmm family functions.

Definition at line 80 of file pastix_zlrcores.h.

Data Fields
const pastix_lr_t * lowrank

The lowrank structure

pastix_trans_t transA

Specify op(A) and is equal to PastixNoTrans, PastixTrans, or PastixConjTrans

pastix_trans_t transB

Specify op(B) and is equal to PastixNoTrans, PastixTrans, or PastixConjTrans

pastix_int_t M

Number of rows of the A matrix

pastix_int_t N

Number of columns of the B matrix

pastix_int_t K

Number of columns of the A matrix (= number of rows of the B matrix)

pastix_int_t Cm

Number of rows of the C matrix that receives the AB contribution

pastix_int_t Cn

Number of columns of the C matrix that receives the AB contribution

pastix_int_t offx

Horizontal offsets of the AB product in the C matrix

pastix_int_t offy

Vertical offsets of the AB product in the C matrix

pastix_complex64_t alpha

The alpha factor

const pastix_lrblock_t * A

The A matrix described in a low-rank structure

const pastix_lrblock_t * B

The B matrix described in a low-rank structure

pastix_complex64_t beta

The beta factor

pastix_lrblock_t * C

The C matrix described in a low-rank structure

pastix_complex64_t * work

The pointer to an available workspace

pastix_int_t lwork

The size of the given workspace

pastix_int_t lwused

The size of the workspace that is already used

pastix_atomic_lock_t * lock

The lock to protect the concurrent accesses on the C matrix

Macro Definition Documentation

◆ PASTE_CORE_CLRMM_PARAMS

#define PASTE_CORE_CLRMM_PARAMS (   _a_)
Value:
const pastix_lr_t *lowrank = (_a_)->lowrank; \
pastix_trans_t transA = (_a_)->transA; \
pastix_trans_t transB = (_a_)->transB; \
pastix_int_t M = (_a_)->M; \
pastix_int_t N = (_a_)->N; \
pastix_int_t K = (_a_)->K; \
pastix_int_t Cm = (_a_)->Cm; \
pastix_int_t Cn = (_a_)->Cn; \
pastix_int_t offx = (_a_)->offx; \
pastix_int_t offy = (_a_)->offy; \
pastix_complex32_t alpha = (_a_)->alpha; \
const pastix_lrblock_t *A = (_a_)->A; \
const pastix_lrblock_t *B = (_a_)->B; \
pastix_complex32_t beta = (_a_)->beta; \
pastix_lrblock_t *C = (_a_)->C; \
pastix_complex32_t *work = (_a_)->work; \
pastix_int_t lwork = (_a_)->lwork; \
pastix_atomic_lock_t *lock = (_a_)->lock;
Structure to define the type of function to use for the low-rank kernels and their parameters.
The block low-rank structure to hold a matrix in low-rank form.

Initialize all the parameters of the core_clrmm family functions to ease the access.

Definition at line 105 of file pastix_clrcores.h.

◆ PASTE_CORE_CLRMM_VOID

#define PASTE_CORE_CLRMM_VOID
Value:
(void)lowrank; \
(void)transA; \
(void)transB; \
(void)M; \
(void)N; \
(void)K; \
(void)Cm; \
(void)Cn; \
(void)offx; \
(void)offy; \
(void)alpha; \
(void)A; \
(void)B; \
(void)beta; \
(void)C; \
(void)work; \
(void)lwork; \
(void)lock

Void all the parameters of the core_clrmm family functions to silent warnings.

Definition at line 128 of file pastix_clrcores.h.

◆ PASTE_CORE_SLRMM_PARAMS

#define PASTE_CORE_SLRMM_PARAMS (   _a_)
Value:
const pastix_lr_t *lowrank = (_a_)->lowrank; \
pastix_trans_t transA = (_a_)->transA; \
pastix_trans_t transB = (_a_)->transB; \
pastix_int_t M = (_a_)->M; \
pastix_int_t N = (_a_)->N; \
pastix_int_t K = (_a_)->K; \
pastix_int_t Cm = (_a_)->Cm; \
pastix_int_t Cn = (_a_)->Cn; \
pastix_int_t offx = (_a_)->offx; \
pastix_int_t offy = (_a_)->offy; \
float alpha = (_a_)->alpha; \
const pastix_lrblock_t *A = (_a_)->A; \
const pastix_lrblock_t *B = (_a_)->B; \
float beta = (_a_)->beta; \
pastix_lrblock_t *C = (_a_)->C; \
float *work = (_a_)->work; \
pastix_int_t lwork = (_a_)->lwork; \
pastix_atomic_lock_t *lock = (_a_)->lock;

Initialize all the parameters of the core_slrmm family functions to ease the access.

Definition at line 105 of file pastix_slrcores.h.

◆ PASTE_CORE_SLRMM_VOID

#define PASTE_CORE_SLRMM_VOID
Value:
(void)lowrank; \
(void)transA; \
(void)transB; \
(void)M; \
(void)N; \
(void)K; \
(void)Cm; \
(void)Cn; \
(void)offx; \
(void)offy; \
(void)alpha; \
(void)A; \
(void)B; \
(void)beta; \
(void)C; \
(void)work; \
(void)lwork; \
(void)lock

Void all the parameters of the core_slrmm family functions to silent warnings.

Definition at line 128 of file pastix_slrcores.h.

◆ PASTE_CORE_DLRMM_PARAMS

#define PASTE_CORE_DLRMM_PARAMS (   _a_)
Value:
const pastix_lr_t *lowrank = (_a_)->lowrank; \
pastix_trans_t transA = (_a_)->transA; \
pastix_trans_t transB = (_a_)->transB; \
pastix_int_t M = (_a_)->M; \
pastix_int_t N = (_a_)->N; \
pastix_int_t K = (_a_)->K; \
pastix_int_t Cm = (_a_)->Cm; \
pastix_int_t Cn = (_a_)->Cn; \
pastix_int_t offx = (_a_)->offx; \
pastix_int_t offy = (_a_)->offy; \
double alpha = (_a_)->alpha; \
const pastix_lrblock_t *A = (_a_)->A; \
const pastix_lrblock_t *B = (_a_)->B; \
double beta = (_a_)->beta; \
pastix_lrblock_t *C = (_a_)->C; \
double *work = (_a_)->work; \
pastix_int_t lwork = (_a_)->lwork; \
pastix_atomic_lock_t *lock = (_a_)->lock;

Initialize all the parameters of the core_dlrmm family functions to ease the access.

Definition at line 105 of file pastix_dlrcores.h.

◆ PASTE_CORE_DLRMM_VOID

#define PASTE_CORE_DLRMM_VOID
Value:
(void)lowrank; \
(void)transA; \
(void)transB; \
(void)M; \
(void)N; \
(void)K; \
(void)Cm; \
(void)Cn; \
(void)offx; \
(void)offy; \
(void)alpha; \
(void)A; \
(void)B; \
(void)beta; \
(void)C; \
(void)work; \
(void)lwork; \
(void)lock

Void all the parameters of the core_dlrmm family functions to silent warnings.

Definition at line 128 of file pastix_dlrcores.h.

◆ PASTE_CORE_ZLRMM_PARAMS

#define PASTE_CORE_ZLRMM_PARAMS (   _a_)
Value:
const pastix_lr_t *lowrank = (_a_)->lowrank; \
pastix_trans_t transA = (_a_)->transA; \
pastix_trans_t transB = (_a_)->transB; \
pastix_int_t M = (_a_)->M; \
pastix_int_t N = (_a_)->N; \
pastix_int_t K = (_a_)->K; \
pastix_int_t Cm = (_a_)->Cm; \
pastix_int_t Cn = (_a_)->Cn; \
pastix_int_t offx = (_a_)->offx; \
pastix_int_t offy = (_a_)->offy; \
pastix_complex64_t alpha = (_a_)->alpha; \
const pastix_lrblock_t *A = (_a_)->A; \
const pastix_lrblock_t *B = (_a_)->B; \
pastix_complex64_t beta = (_a_)->beta; \
pastix_lrblock_t *C = (_a_)->C; \
pastix_complex64_t *work = (_a_)->work; \
pastix_int_t lwork = (_a_)->lwork; \
pastix_atomic_lock_t *lock = (_a_)->lock;

Initialize all the parameters of the core_zlrmm family functions to ease the access.

Definition at line 105 of file pastix_zlrcores.h.

◆ PASTE_CORE_ZLRMM_VOID

#define PASTE_CORE_ZLRMM_VOID
Value:
(void)lowrank; \
(void)transA; \
(void)transB; \
(void)M; \
(void)N; \
(void)K; \
(void)Cm; \
(void)Cn; \
(void)offx; \
(void)offy; \
(void)alpha; \
(void)A; \
(void)B; \
(void)beta; \
(void)C; \
(void)work; \
(void)lwork; \
(void)lock

Void all the parameters of the core_zlrmm family functions to silent warnings.

Definition at line 128 of file pastix_zlrcores.h.

Function Documentation

◆ core_clrmm_getws()

static pastix_complex32_t* core_clrmm_getws ( core_clrmm_t params,
ssize_t  newsize 
)
inlinestatic

Function to get a workspace pointer if space is available in the one provided.

Parameters
[in,out]paramsThe parameters structure for core_clrmm family functions
[in]newsizeThe required workspace size in number of elements
Returns
The pointer to the workspace if enough space available, NULL otherwise.

Definition at line 155 of file pastix_clrcores.h.

References core_clrmm_s::lwork, core_clrmm_s::lwused, and core_clrmm_s::work.

Referenced by core_cfrfr2lr(), core_cfrlr2fr(), core_cfrlr2lr(), core_clr2lr(), core_clr2null(), core_clrfr2fr(), core_clrfr2lr(), and core_clrlr2lr().

◆ core_cfrfr2fr()

pastix_fixdbl_t core_cfrfr2fr ( core_clrmm_t params)

Perform the full-rank operation C = alpha * op(A) * op(B) + beta C.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_clrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 48 of file core_cxx2fr.c.

References PASTE_CORE_CLRMM_PARAMS, PASTE_CORE_CLRMM_VOID, pastix_int_t, and PastixNoTrans.

◆ core_cfrlr2fr()

pastix_fixdbl_t core_cfrlr2fr ( core_clrmm_t params)

Perform the operation C = alpha * op(A) * op(B) + beta C, with A and C full-rank and B low-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_clrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 101 of file core_cxx2fr.c.

References core_clrmm_getws(), PASTE_CORE_CLRMM_PARAMS, PASTE_CORE_CLRMM_VOID, pastix_int_t, and PastixNoTrans.

◆ core_clrfr2fr()

pastix_fixdbl_t core_clrfr2fr ( core_clrmm_t params)

Perform the operation C = alpha * op(A) * op(B) + beta C, with B and C full-rank and A low-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_clrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 202 of file core_cxx2fr.c.

References core_clrmm_getws(), PASTE_CORE_CLRMM_PARAMS, PASTE_CORE_CLRMM_VOID, pastix_int_t, and PastixNoTrans.

◆ core_clrlr2fr()

pastix_fixdbl_t core_clrlr2fr ( core_clrmm_t params)

Perform the operation C = alpha * op(A) * op(B) + beta C, with A and B low-rank and C full-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_clrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 304 of file core_cxx2fr.c.

References core_clrlr2lr(), PASTE_CORE_CLRMM_PARAMS, PASTE_CORE_CLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_ALLOCV, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_cfrfr2lr()

pastix_fixdbl_t core_cfrfr2lr ( core_clrmm_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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_clrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_cxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
[in]KmaxThe maximum K value for which the AB product is contructed as AB.u = A, and AB.v = B
Returns
The number of flops required to perform the operation.

Definition at line 66 of file core_cxx2lr.c.

References core_clrmm_getws(), PASTE_CORE_CLRMM_PARAMS, PASTE_CORE_CLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_cfrlr2lr()

pastix_fixdbl_t core_cfrlr2lr ( core_clrmm_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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_clrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_cxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
[in]BrkminThreshold for which B->rk is considered as the final rank of AB
Returns
The number of flops required to perform the operation.

Definition at line 152 of file core_cxx2lr.c.

References core_clrmm_getws(), PASTE_CORE_CLRMM_PARAMS, PASTE_CORE_CLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_clrfr2lr()

pastix_fixdbl_t core_clrfr2lr ( core_clrmm_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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_clrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_cxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
[in]ArkminThreshold for which A->rk is considered as the final rank of AB
Returns
The number of flops required to perform the operation.

Definition at line 298 of file core_cxx2lr.c.

References core_clrmm_getws(), PASTE_CORE_CLRMM_PARAMS, PASTE_CORE_CLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_ALLOCV, PASTIX_LRM3_ORTHOU, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_clrlr2lr()

pastix_fixdbl_t core_clrlr2lr ( core_clrmm_t params,
pastix_lrblock_t AB,
int *  infomask 
)

Perform the operation AB = op(A) * op(B), with A, B, and AB low-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_clrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_cxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
Returns
The number of flops required to perform the operation.

The rank of AB is smaller than min(rankA, rankB)

Definition at line 442 of file core_cxx2lr.c.

References core_clrfree(), core_clrmm_getws(), PASTE_CORE_CLRMM_PARAMS, PASTE_CORE_CLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_ALLOCV, PASTIX_LRM3_ORTHOU, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_clrlr2fr().

◆ core_clradd()

pastix_fixdbl_t core_clradd ( core_clrmm_t params,
const pastix_lrblock_t A,
pastix_trans_t  transV,
int  infomask 
)

Perform the addition of two low-rank matrices.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the addition of C and A aligned with its own dimensions.
See also
core_clrmm_t
Parameters
[in]AThe low-rank structure of the A matrix to add to C.
[in]transVSpecify if A->v is stored normally or transposed.
  • If PastixNoTrans, AB->v is stored normally for low-rank format.
  • If PastixTrans, AB->v is stored transposed.
  • If PastixConjTrans, AB->v is stored transposed, and conjf() must be applied to the matrix.
[in]infomaskMask of informations returned by the core_cxx2lr() functions. If CORE_LRMM_ORTHOU is set, then A.u is orthogonal, otherwise an orthogonalization step is added before adding it to C.
Returns
The number of flops required to perform the operation.

Definition at line 383 of file core_clr2xx.c.

References core_clrmm_s::C, core_clr2fr(), core_clr2lr(), core_clr2null(), core_clrmm_s::lock, pastix_lrblock_s::rk, and pastix_lrblock_s::rkmax.

Referenced by cpublok_cadd_frlr(), cpublok_cadd_lrlr(), cpucblk_cadd_frlr(), and cpucblk_cadd_lrlr().

◆ core_clrmm()

pastix_fixdbl_t core_clrmm ( core_clrmm_t params)

Compute the matrix matrix product when involved matrices are stored in a low-rank structure.

This function considers the generic matrix matrix product added to a third matric C. All matrices are either null, low-rank or full-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family.
See also
core_clrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 278 of file core_clrmm.c.

References core_clrdbg_check_orthogonality(), core_clrmm_Cfr(), core_clrmm_Clr(), core_clrmm_Cnull(), core_clrmm_s::lwused, PASTE_CORE_CLRMM_PARAMS, PASTE_CORE_CLRMM_VOID, PastixCompressMethodSVD, PastixNoTrans, and core_clrmm_s::work.

Referenced by core_cgemmsp_block_frlr(), core_cgemmsp_block_lrlr(), core_cgemmsp_fulllr(), core_cgemmsp_lr(), and core_cgemmsp_lrfr().

◆ core_slrmm_getws()

static float* core_slrmm_getws ( core_slrmm_t params,
ssize_t  newsize 
)
inlinestatic

Function to get a workspace pointer if space is available in the one provided.

Parameters
[in,out]paramsThe parameters structure for core_slrmm family functions
[in]newsizeThe required workspace size in number of elements
Returns
The pointer to the workspace if enough space available, NULL otherwise.

Definition at line 155 of file pastix_slrcores.h.

References core_slrmm_s::lwork, core_slrmm_s::lwused, and core_slrmm_s::work.

Referenced by core_sfrfr2lr(), core_sfrlr2fr(), core_sfrlr2lr(), core_slr2lr(), core_slr2null(), core_slrfr2fr(), core_slrfr2lr(), and core_slrlr2lr().

◆ core_sfrfr2fr()

pastix_fixdbl_t core_sfrfr2fr ( core_slrmm_t params)

Perform the full-rank operation C = alpha * op(A) * op(B) + beta C.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_slrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 48 of file core_sxx2fr.c.

References PASTE_CORE_SLRMM_PARAMS, PASTE_CORE_SLRMM_VOID, pastix_int_t, and PastixNoTrans.

◆ core_sfrlr2fr()

pastix_fixdbl_t core_sfrlr2fr ( core_slrmm_t params)

Perform the operation C = alpha * op(A) * op(B) + beta C, with A and C full-rank and B low-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_slrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 101 of file core_sxx2fr.c.

References core_slrmm_getws(), PASTE_CORE_SLRMM_PARAMS, PASTE_CORE_SLRMM_VOID, pastix_int_t, and PastixNoTrans.

◆ core_slrfr2fr()

pastix_fixdbl_t core_slrfr2fr ( core_slrmm_t params)

Perform the operation C = alpha * op(A) * op(B) + beta C, with B and C full-rank and A low-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_slrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 202 of file core_sxx2fr.c.

References core_slrmm_getws(), PASTE_CORE_SLRMM_PARAMS, PASTE_CORE_SLRMM_VOID, pastix_int_t, and PastixNoTrans.

◆ core_slrlr2fr()

pastix_fixdbl_t core_slrlr2fr ( core_slrmm_t params)

Perform the operation C = alpha * op(A) * op(B) + beta C, with A and B low-rank and C full-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_slrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 304 of file core_sxx2fr.c.

References core_slrlr2lr(), PASTE_CORE_SLRMM_PARAMS, PASTE_CORE_SLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_ALLOCV, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_sfrfr2lr()

pastix_fixdbl_t core_sfrfr2lr ( core_slrmm_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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_slrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_sxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
[in]KmaxThe maximum K value for which the AB product is contructed as AB.u = A, and AB.v = B
Returns
The number of flops required to perform the operation.

Definition at line 66 of file core_sxx2lr.c.

References core_slrmm_getws(), PASTE_CORE_SLRMM_PARAMS, PASTE_CORE_SLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_sfrlr2lr()

pastix_fixdbl_t core_sfrlr2lr ( core_slrmm_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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_slrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_sxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
[in]BrkminThreshold for which B->rk is considered as the final rank of AB
Returns
The number of flops required to perform the operation.

Definition at line 152 of file core_sxx2lr.c.

References core_slrmm_getws(), PASTE_CORE_SLRMM_PARAMS, PASTE_CORE_SLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_slrfr2lr()

pastix_fixdbl_t core_slrfr2lr ( core_slrmm_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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_slrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_sxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
[in]ArkminThreshold for which A->rk is considered as the final rank of AB
Returns
The number of flops required to perform the operation.

Definition at line 298 of file core_sxx2lr.c.

References core_slrmm_getws(), PASTE_CORE_SLRMM_PARAMS, PASTE_CORE_SLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_ALLOCV, PASTIX_LRM3_ORTHOU, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_slrlr2lr()

pastix_fixdbl_t core_slrlr2lr ( core_slrmm_t params,
pastix_lrblock_t AB,
int *  infomask 
)

Perform the operation AB = op(A) * op(B), with A, B, and AB low-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_slrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_sxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
Returns
The number of flops required to perform the operation.

The rank of AB is smaller than min(rankA, rankB)

Definition at line 442 of file core_sxx2lr.c.

References core_slrfree(), core_slrmm_getws(), PASTE_CORE_SLRMM_PARAMS, PASTE_CORE_SLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_ALLOCV, PASTIX_LRM3_ORTHOU, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_slrlr2fr().

◆ core_slradd()

pastix_fixdbl_t core_slradd ( core_slrmm_t params,
const pastix_lrblock_t A,
pastix_trans_t  transV,
int  infomask 
)

Perform the addition of two low-rank matrices.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the addition of C and A aligned with its own dimensions.
See also
core_slrmm_t
Parameters
[in]AThe low-rank structure of the A matrix to add to C.
[in]transVSpecify if A->v is stored normally or transposed.
  • If PastixNoTrans, AB->v is stored normally for low-rank format.
  • If PastixTrans, AB->v is stored transposed.
  • If PastixTrans, AB->v is stored transposed, and () must be applied to the matrix.
[in]infomaskMask of informations returned by the core_sxx2lr() functions. If CORE_LRMM_ORTHOU is set, then A.u is orthogonal, otherwise an orthogonalization step is added before adding it to C.
Returns
The number of flops required to perform the operation.

Definition at line 383 of file core_slr2xx.c.

References core_slrmm_s::C, core_slr2fr(), core_slr2lr(), core_slr2null(), core_slrmm_s::lock, pastix_lrblock_s::rk, and pastix_lrblock_s::rkmax.

Referenced by cpublok_sadd_frlr(), cpublok_sadd_lrlr(), cpucblk_sadd_frlr(), and cpucblk_sadd_lrlr().

◆ core_slrmm()

pastix_fixdbl_t core_slrmm ( core_slrmm_t params)

Compute the matrix matrix product when involved matrices are stored in a low-rank structure.

This function considers the generic matrix matrix product added to a third matric C. All matrices are either null, low-rank or full-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family.
See also
core_slrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 278 of file core_slrmm.c.

References core_slrdbg_check_orthogonality(), core_slrmm_Cfr(), core_slrmm_Clr(), core_slrmm_Cnull(), core_slrmm_s::lwused, PASTE_CORE_SLRMM_PARAMS, PASTE_CORE_SLRMM_VOID, PastixCompressMethodSVD, PastixNoTrans, and core_slrmm_s::work.

Referenced by core_sgemmsp_block_frlr(), core_sgemmsp_block_lrlr(), core_sgemmsp_fulllr(), core_sgemmsp_lr(), and core_sgemmsp_lrfr().

◆ core_dlrmm_getws()

static double* core_dlrmm_getws ( core_dlrmm_t params,
ssize_t  newsize 
)
inlinestatic

Function to get a workspace pointer if space is available in the one provided.

Parameters
[in,out]paramsThe parameters structure for core_dlrmm family functions
[in]newsizeThe required workspace size in number of elements
Returns
The pointer to the workspace if enough space available, NULL otherwise.

Definition at line 155 of file pastix_dlrcores.h.

References core_dlrmm_s::lwork, core_dlrmm_s::lwused, and core_dlrmm_s::work.

Referenced by core_dfrfr2lr(), core_dfrlr2fr(), core_dfrlr2lr(), core_dlr2lr(), core_dlr2null(), core_dlrfr2fr(), core_dlrfr2lr(), and core_dlrlr2lr().

◆ core_dfrfr2fr()

pastix_fixdbl_t core_dfrfr2fr ( core_dlrmm_t params)

Perform the full-rank operation C = alpha * op(A) * op(B) + beta C.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_dlrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 48 of file core_dxx2fr.c.

References PASTE_CORE_DLRMM_PARAMS, PASTE_CORE_DLRMM_VOID, pastix_int_t, and PastixNoTrans.

◆ core_dfrlr2fr()

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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_dlrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 101 of file core_dxx2fr.c.

References core_dlrmm_getws(), PASTE_CORE_DLRMM_PARAMS, PASTE_CORE_DLRMM_VOID, pastix_int_t, and PastixNoTrans.

◆ core_dlrfr2fr()

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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_dlrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 202 of file core_dxx2fr.c.

References core_dlrmm_getws(), PASTE_CORE_DLRMM_PARAMS, PASTE_CORE_DLRMM_VOID, pastix_int_t, and PastixNoTrans.

◆ core_dlrlr2fr()

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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_dlrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 304 of file core_dxx2fr.c.

References core_dlrlr2lr(), PASTE_CORE_DLRMM_PARAMS, PASTE_CORE_DLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_ALLOCV, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_dfrfr2lr()

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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_dlrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_dxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
[in]KmaxThe maximum K value for which the AB product is contructed as AB.u = A, and AB.v = B
Returns
The number of flops required to perform the operation.

Definition at line 66 of file core_dxx2lr.c.

References core_dlrmm_getws(), PASTE_CORE_DLRMM_PARAMS, PASTE_CORE_DLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_dfrlr2lr()

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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_dlrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_dxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
[in]BrkminThreshold for which B->rk is considered as the final rank of AB
Returns
The number of flops required to perform the operation.

Definition at line 152 of file core_dxx2lr.c.

References core_dlrmm_getws(), PASTE_CORE_DLRMM_PARAMS, PASTE_CORE_DLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_dlrfr2lr()

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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_dlrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_dxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
[in]ArkminThreshold for which A->rk is considered as the final rank of AB
Returns
The number of flops required to perform the operation.

Definition at line 298 of file core_dxx2lr.c.

References core_dlrmm_getws(), PASTE_CORE_DLRMM_PARAMS, PASTE_CORE_DLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_ALLOCV, PASTIX_LRM3_ORTHOU, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_dlrlr2lr()

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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_dlrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_dxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
Returns
The number of flops required to perform the operation.

The rank of AB is smaller than min(rankA, rankB)

Definition at line 442 of file core_dxx2lr.c.

References core_dlrfree(), core_dlrmm_getws(), PASTE_CORE_DLRMM_PARAMS, PASTE_CORE_DLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_ALLOCV, PASTIX_LRM3_ORTHOU, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_dlrlr2fr().

◆ core_dlradd()

pastix_fixdbl_t core_dlradd ( core_dlrmm_t params,
const pastix_lrblock_t A,
pastix_trans_t  transV,
int  infomask 
)

Perform the addition of two low-rank matrices.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the addition of C and A aligned with its own dimensions.
See also
core_dlrmm_t
Parameters
[in]AThe low-rank structure of the A matrix to add to C.
[in]transVSpecify if A->v is stored normally or transposed.
  • If PastixNoTrans, AB->v is stored normally for low-rank format.
  • If PastixTrans, AB->v is stored transposed.
  • If PastixTrans, AB->v is stored transposed, and () must be applied to the matrix.
[in]infomaskMask of informations returned by the core_dxx2lr() functions. If CORE_LRMM_ORTHOU is set, then A.u is orthogonal, otherwise an orthogonalization step is added before adding it to C.
Returns
The number of flops required to perform the operation.

Definition at line 383 of file core_dlr2xx.c.

References core_dlrmm_s::C, core_dlr2fr(), core_dlr2lr(), core_dlr2null(), core_dlrmm_s::lock, pastix_lrblock_s::rk, and pastix_lrblock_s::rkmax.

Referenced by cpublok_dadd_frlr(), cpublok_dadd_lrlr(), cpucblk_dadd_frlr(), and cpucblk_dadd_lrlr().

◆ core_dlrmm()

pastix_fixdbl_t core_dlrmm ( core_dlrmm_t params)

Compute the matrix matrix product when involved matrices are stored in a low-rank structure.

This function considers the generic matrix matrix product added to a third matric C. All matrices are either null, low-rank or full-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family.
See also
core_dlrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 278 of file core_dlrmm.c.

References core_dlrdbg_check_orthogonality(), core_dlrmm_Cfr(), core_dlrmm_Clr(), core_dlrmm_Cnull(), core_dlrmm_s::lwused, PASTE_CORE_DLRMM_PARAMS, PASTE_CORE_DLRMM_VOID, PastixCompressMethodSVD, PastixNoTrans, and core_dlrmm_s::work.

Referenced by core_dgemmsp_block_frlr(), core_dgemmsp_block_lrlr(), core_dgemmsp_fulllr(), core_dgemmsp_lr(), and core_dgemmsp_lrfr().

◆ core_zlrmm_getws()

static pastix_complex64_t* core_zlrmm_getws ( core_zlrmm_t params,
ssize_t  newsize 
)
inlinestatic

Function to get a workspace pointer if space is available in the one provided.

Parameters
[in,out]paramsThe parameters structure for core_zlrmm family functions
[in]newsizeThe required workspace size in number of elements
Returns
The pointer to the workspace if enough space available, NULL otherwise.

Definition at line 155 of file pastix_zlrcores.h.

References core_zlrmm_s::lwork, core_zlrmm_s::lwused, and core_zlrmm_s::work.

Referenced by core_zfrfr2lr(), core_zfrlr2fr(), core_zfrlr2lr(), core_zlr2lr(), core_zlr2null(), core_zlrfr2fr(), core_zlrfr2lr(), and core_zlrlr2lr().

◆ core_zfrfr2fr()

pastix_fixdbl_t core_zfrfr2fr ( core_zlrmm_t params)

Perform the full-rank operation C = alpha * op(A) * op(B) + beta C.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_zlrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 48 of file core_zxx2fr.c.

References PASTE_CORE_ZLRMM_PARAMS, PASTE_CORE_ZLRMM_VOID, pastix_int_t, and PastixNoTrans.

◆ core_zfrlr2fr()

pastix_fixdbl_t core_zfrlr2fr ( core_zlrmm_t params)

Perform the operation C = alpha * op(A) * op(B) + beta C, with A and C full-rank and B low-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_zlrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 101 of file core_zxx2fr.c.

References core_zlrmm_getws(), PASTE_CORE_ZLRMM_PARAMS, PASTE_CORE_ZLRMM_VOID, pastix_int_t, and PastixNoTrans.

◆ core_zlrfr2fr()

pastix_fixdbl_t core_zlrfr2fr ( core_zlrmm_t params)

Perform the operation C = alpha * op(A) * op(B) + beta C, with B and C full-rank and A low-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_zlrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 202 of file core_zxx2fr.c.

References core_zlrmm_getws(), PASTE_CORE_ZLRMM_PARAMS, PASTE_CORE_ZLRMM_VOID, pastix_int_t, and PastixNoTrans.

◆ core_zlrlr2fr()

pastix_fixdbl_t core_zlrlr2fr ( core_zlrmm_t params)

Perform the operation C = alpha * op(A) * op(B) + beta C, with A and B low-rank and C full-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_zlrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 304 of file core_zxx2fr.c.

References core_zlrlr2lr(), PASTE_CORE_ZLRMM_PARAMS, PASTE_CORE_ZLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_ALLOCV, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_zfrfr2lr()

pastix_fixdbl_t core_zfrfr2lr ( core_zlrmm_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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_zlrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_zxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
[in]KmaxThe maximum K value for which the AB product is contructed as AB.u = A, and AB.v = B
Returns
The number of flops required to perform the operation.

Definition at line 66 of file core_zxx2lr.c.

References core_zlrmm_getws(), PASTE_CORE_ZLRMM_PARAMS, PASTE_CORE_ZLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_zfrlr2lr()

pastix_fixdbl_t core_zfrlr2lr ( core_zlrmm_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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_zlrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_zxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
[in]BrkminThreshold for which B->rk is considered as the final rank of AB
Returns
The number of flops required to perform the operation.

Definition at line 152 of file core_zxx2lr.c.

References core_zlrmm_getws(), PASTE_CORE_ZLRMM_PARAMS, PASTE_CORE_ZLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_zlrfr2lr()

pastix_fixdbl_t core_zlrfr2lr ( core_zlrmm_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.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_zlrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_zxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
[in]ArkminThreshold for which A->rk is considered as the final rank of AB
Returns
The number of flops required to perform the operation.

Definition at line 298 of file core_zxx2lr.c.

References core_zlrmm_getws(), PASTE_CORE_ZLRMM_PARAMS, PASTE_CORE_ZLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_ALLOCV, PASTIX_LRM3_ORTHOU, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_zlrlr2lr()

pastix_fixdbl_t core_zlrlr2lr ( core_zlrmm_t params,
pastix_lrblock_t AB,
int *  infomask 
)

Perform the operation AB = op(A) * op(B), with A, B, and AB low-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the product AB aligned with its own dimensions.
See also
core_zlrmm_t
Parameters
[in,out]ABThe low-rank structure of the AB matrix in which to store the AB product.
[in,out]infomaskThe mask of informations returned by the core_zxx2lr() functions.
  • If AB.u is orthogonal on exit, then PASTIX_LRM3_ORTHOU is set.
  • If AB.u is allocated, then PASTIX_LRM3_ALLOCU is set.
  • If AB.v is allocated, then PASTIX_LRM3_ALLOCV is set.
  • If AB.v is inistialized as one of the given pointer and op(B) is not applyed, then PASTIX_LRM3_TRANSB is set.
Returns
The number of flops required to perform the operation.

The rank of AB is smaller than min(rankA, rankB)

Definition at line 442 of file core_zxx2lr.c.

References core_zlrfree(), core_zlrmm_getws(), PASTE_CORE_ZLRMM_PARAMS, PASTE_CORE_ZLRMM_VOID, pastix_int_t, PASTIX_LRM3_ALLOCU, PASTIX_LRM3_ALLOCV, PASTIX_LRM3_ORTHOU, PASTIX_LRM3_TRANSB, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_zlrlr2fr().

◆ core_zlradd()

pastix_fixdbl_t core_zlradd ( core_zlrmm_t params,
const pastix_lrblock_t A,
pastix_trans_t  transV,
int  infomask 
)

Perform the addition of two low-rank matrices.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family. On exit, the C matrix contains the addition of C and A aligned with its own dimensions.
See also
core_zlrmm_t
Parameters
[in]AThe low-rank structure of the A matrix to add to C.
[in]transVSpecify if A->v is stored normally or transposed.
  • If PastixNoTrans, AB->v is stored normally for low-rank format.
  • If PastixTrans, AB->v is stored transposed.
  • If PastixConjTrans, AB->v is stored transposed, and conj() must be applied to the matrix.
[in]infomaskMask of informations returned by the core_zxx2lr() functions. If CORE_LRMM_ORTHOU is set, then A.u is orthogonal, otherwise an orthogonalization step is added before adding it to C.
Returns
The number of flops required to perform the operation.

Definition at line 383 of file core_zlr2xx.c.

References core_zlrmm_s::C, core_zlr2fr(), core_zlr2lr(), core_zlr2null(), core_zlrmm_s::lock, pastix_lrblock_s::rk, and pastix_lrblock_s::rkmax.

Referenced by cpublok_zadd_frlr(), cpublok_zadd_lrlr(), cpucblk_zadd_frlr(), and cpucblk_zadd_lrlr().

◆ core_zlrmm()

pastix_fixdbl_t core_zlrmm ( core_zlrmm_t params)

Compute the matrix matrix product when involved matrices are stored in a low-rank structure.

This function considers the generic matrix matrix product added to a third matric C. All matrices are either null, low-rank or full-rank.

Parameters
[in,out]paramsThe LRMM structure that stores all the parameters used in the LRMM functions family.
See also
core_zlrmm_t
Returns
The number of flops required to perform the operation.

Definition at line 278 of file core_zlrmm.c.

References core_zlrdbg_check_orthogonality(), core_zlrmm_Cfr(), core_zlrmm_Clr(), core_zlrmm_Cnull(), core_zlrmm_s::lwused, PASTE_CORE_ZLRMM_PARAMS, PASTE_CORE_ZLRMM_VOID, PastixCompressMethodSVD, PastixNoTrans, and core_zlrmm_s::work.

Referenced by core_zgemmsp_block_frlr(), core_zgemmsp_block_lrlr(), core_zgemmsp_fulllr(), core_zgemmsp_lr(), and core_zgemmsp_lrfr().