PaStiX Handbook  6.3.2

Modules

 Internal functions for low-rank kernels
 
 Low-rank debug kernels
 
 Low-rank update kernels
 
 Low-rank Rank-Revealing QR kernels
 
 Low-rank SVD kernels
 

PastixComplex32 low-rank kernels

void core_clralloc (pastix_int_t M, pastix_int_t N, pastix_int_t rkmax, pastix_lrblock_t *A)
 Allocate a low-rank matrix. More...
 
void core_clrfree (pastix_lrblock_t *A)
 Free a low-rank matrix. More...
 
int core_clrsze (int copy, pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, pastix_int_t newrk, pastix_int_t newrkmax, pastix_int_t rklimit)
 Resize a low-rank matrix. More...
 
int core_clr2ge (pastix_trans_t trans, pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *Alr, pastix_complex32_t *A, pastix_int_t lda)
 Convert a low rank matrix into a dense matrix. More...
 
void core_clrcpy (const pastix_lr_t *lowrank, pastix_trans_t transA, pastix_complex32_t alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offx, pastix_int_t offy)
 Copy a small low-rank structure into a large one. More...
 
void core_clrconcatenate_u (pastix_complex32_t alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_lrblock_t *B, pastix_int_t offx, pastix_complex32_t *u1u2)
 Concatenate left parts of two low-rank matrices. More...
 
void core_clrconcatenate_v (pastix_trans_t transA1, pastix_complex32_t alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offy, pastix_complex32_t *v1v2)
 Concatenate right parts of two low-rank matrices. More...
 
float core_clrnrm (pastix_normtype_t ntype, int transV, pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *A)
 Compute the norm of a low-rank matrix. More...
 
size_t core_clrgetsize (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A)
 Compute the size of a block to send in LR. More...
 
char * core_clrpack (pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *A, char *buffer)
 Pack low-rank data by side. More...
 
char * core_clrunpack (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, char *buffer)
 Unpack low rank data and fill the cblk concerned by the computation. More...
 
const char * core_clrunpack2 (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, const char *input, char **outptr)
 Unpack low rank data and fill the cblk concerned by the computation. More...
 

PastixFloat low-rank kernels

void core_slralloc (pastix_int_t M, pastix_int_t N, pastix_int_t rkmax, pastix_lrblock_t *A)
 Allocate a low-rank matrix. More...
 
void core_slrfree (pastix_lrblock_t *A)
 Free a low-rank matrix. More...
 
int core_slrsze (int copy, pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, pastix_int_t newrk, pastix_int_t newrkmax, pastix_int_t rklimit)
 Resize a low-rank matrix. More...
 
int core_slr2ge (pastix_trans_t trans, pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *Alr, float *A, pastix_int_t lda)
 Convert a low rank matrix into a dense matrix. More...
 
void core_slrcpy (const pastix_lr_t *lowrank, pastix_trans_t transA, float alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offx, pastix_int_t offy)
 Copy a small low-rank structure into a large one. More...
 
void core_slrconcatenate_u (float alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_lrblock_t *B, pastix_int_t offx, float *u1u2)
 Concatenate left parts of two low-rank matrices. More...
 
void core_slrconcatenate_v (pastix_trans_t transA1, float alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offy, float *v1v2)
 Concatenate right parts of two low-rank matrices. More...
 
float core_slrnrm (pastix_normtype_t ntype, int transV, pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *A)
 Compute the norm of a low-rank matrix. More...
 
size_t core_slrgetsize (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A)
 Compute the size of a block to send in LR. More...
 
char * core_slrpack (pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *A, char *buffer)
 Pack low-rank data by side. More...
 
char * core_slrunpack (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, char *buffer)
 Unpack low rank data and fill the cblk concerned by the computation. More...
 
const char * core_slrunpack2 (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, const char *input, char **outptr)
 Unpack low rank data and fill the cblk concerned by the computation. More...
 

PastixDouble low-rank kernels

void core_dlralloc (pastix_int_t M, pastix_int_t N, pastix_int_t rkmax, pastix_lrblock_t *A)
 Allocate a low-rank matrix. More...
 
void core_dlrfree (pastix_lrblock_t *A)
 Free a low-rank matrix. More...
 
int core_dlrsze (int copy, pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, pastix_int_t newrk, pastix_int_t newrkmax, pastix_int_t rklimit)
 Resize a low-rank matrix. More...
 
int core_dlr2ge (pastix_trans_t trans, pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *Alr, double *A, pastix_int_t lda)
 Convert a low rank matrix into a dense matrix. More...
 
void core_dlrcpy (const pastix_lr_t *lowrank, pastix_trans_t transA, double alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offx, pastix_int_t offy)
 Copy a small low-rank structure into a large one. More...
 
void core_dlrconcatenate_u (double alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_lrblock_t *B, pastix_int_t offx, double *u1u2)
 Concatenate left parts of two low-rank matrices. More...
 
void core_dlrconcatenate_v (pastix_trans_t transA1, double alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offy, double *v1v2)
 Concatenate right parts of two low-rank matrices. More...
 
double core_dlrnrm (pastix_normtype_t ntype, int transV, pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *A)
 Compute the norm of a low-rank matrix. More...
 
size_t core_dlrgetsize (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A)
 Compute the size of a block to send in LR. More...
 
char * core_dlrpack (pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *A, char *buffer)
 Pack low-rank data by side. More...
 
char * core_dlrunpack (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, char *buffer)
 Unpack low rank data and fill the cblk concerned by the computation. More...
 
const char * core_dlrunpack2 (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, const char *input, char **outptr)
 Unpack low rank data and fill the cblk concerned by the computation. More...
 

PastixComplex64 low-rank kernels

void core_zlralloc (pastix_int_t M, pastix_int_t N, pastix_int_t rkmax, pastix_lrblock_t *A)
 Allocate a low-rank matrix. More...
 
void core_zlrfree (pastix_lrblock_t *A)
 Free a low-rank matrix. More...
 
int core_zlrsze (int copy, pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, pastix_int_t newrk, pastix_int_t newrkmax, pastix_int_t rklimit)
 Resize a low-rank matrix. More...
 
int core_zlr2ge (pastix_trans_t trans, pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *Alr, pastix_complex64_t *A, pastix_int_t lda)
 Convert a low rank matrix into a dense matrix. More...
 
void core_zlrcpy (const pastix_lr_t *lowrank, pastix_trans_t transA, pastix_complex64_t alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offx, pastix_int_t offy)
 Copy a small low-rank structure into a large one. More...
 
void core_zlrconcatenate_u (pastix_complex64_t alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t M2, pastix_lrblock_t *B, pastix_int_t offx, pastix_complex64_t *u1u2)
 Concatenate left parts of two low-rank matrices. More...
 
void core_zlrconcatenate_v (pastix_trans_t transA1, pastix_complex64_t alpha, pastix_int_t M1, pastix_int_t N1, const pastix_lrblock_t *A, pastix_int_t N2, pastix_lrblock_t *B, pastix_int_t offy, pastix_complex64_t *v1v2)
 Concatenate right parts of two low-rank matrices. More...
 
double core_zlrnrm (pastix_normtype_t ntype, int transV, pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *A)
 Compute the norm of a low-rank matrix. More...
 
size_t core_zlrgetsize (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A)
 Compute the size of a block to send in LR. More...
 
char * core_zlrpack (pastix_int_t M, pastix_int_t N, const pastix_lrblock_t *A, char *buffer)
 Pack low-rank data by side. More...
 
char * core_zlrunpack (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, char *buffer)
 Unpack low rank data and fill the cblk concerned by the computation. More...
 
const char * core_zlrunpack2 (pastix_int_t M, pastix_int_t N, pastix_lrblock_t *A, const char *input, char **outptr)
 Unpack low rank data and fill the cblk concerned by the computation. More...
 

Detailed Description

This module contains all the low-rank kernels working on pastix_lr_t matrix representations.

Function Documentation

◆ core_clralloc()

void core_clralloc ( pastix_int_t  M,
pastix_int_t  N,
pastix_int_t  rkmax,
pastix_lrblock_t A 
)

Allocate a low-rank matrix.

Parameters
[in]MNumber of rows of the matrix A.
[in]NNumber of columns of the matrix A.
[in]rkmax
  • -1: the matrix is allocated tight to its rank.
  • >0: the matrix is allocated to the minimum of rkmax and its maximum rank.
[out]AThe allocated low-rank matrix

Definition at line 56 of file core_cgelrops.c.

References pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_cge2lr_qrcp(), core_cge2lr_qrrt(), core_cge2lr_svd(), core_clrcpy(), cpucblk_calloc_lr(), and cpucblk_cuncompress().

◆ core_clrfree()

void core_clrfree ( pastix_lrblock_t A)

Free a low-rank matrix.

Parameters
[in,out]AThe low-rank matrix that will be desallocated.

Definition at line 116 of file core_cgelrops.c.

References pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_clrcpy(), core_clrlr2lr(), cpucblk_cfree(), and cpucblk_cuncompress().

◆ core_clrsze()

int core_clrsze ( int  copy,
pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A,
pastix_int_t  newrk,
pastix_int_t  newrkmax,
pastix_int_t  rklimit 
)

Resize a low-rank matrix.

Parameters
[in]copyEnable/disable the copy of the data from A->u and A->v into the new low-rank representation.
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in,out]AThe low-rank representation of the matrix. At exit, this structure is modified with the new low-rank representation of A, is the rank is small enough
[in]newrkThe new rank of the matrix A.
[in]newrkmaxThe new maximum rank of the matrix A. Useful if the low-rank structure was allocated with more data than the rank.
[in]rklimitThe maximum rank to store the matrix in low-rank format. If -1, set to core_get_rklimit(M, N)
Returns
The new rank of A

Definition at line 173 of file core_cgelrops.c.

References core_get_rklimit, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_cge2lr_svd(), and core_clrunpack().

◆ core_clr2ge()

int core_clr2ge ( pastix_trans_t  trans,
pastix_int_t  m,
pastix_int_t  n,
const pastix_lrblock_t Alr,
pastix_complex32_t A,
pastix_int_t  lda 
)

Convert a low rank matrix into a dense matrix.

Convert a low-rank matrix of size m-by-n into a full rank matrix. A = op( u * v^t ) with op(A) = A or A^t

Parameters
[in]trans
  • PastixNoTrans: returns A = u * v^t
  • PastixTrans: returns A = v * u^t
[in]mNumber of rows of the low-rank matrix Alr.
[in]nNumber of columns of the low-rank matrix Alr.
[in]AlrThe low rank matrix to be converted into a full rank matrix
[in,out]AThe matrix of dimension lda-by-k in which to store the uncompressed version of Alr. k = n if trans == PastixNoTrans, m otherwise.
[in]ldaThe leading dimension of the matrix A. lda >= max(1, m) if trans == PastixNoTrans, lda >= max(1,n) otherwise.
Return values
0in case of success.
-iif the ith parameter is incorrect.

Definition at line 302 of file core_cgelrops.c.

References core_cgetmo(), PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_clrcpy(), cpucblk_cgetschur_lr(), and cpucblk_cuncompress().

◆ core_clrcpy()

void core_clrcpy ( const pastix_lr_t lowrank,
pastix_trans_t  transAv,
pastix_complex32_t  alpha,
pastix_int_t  M1,
pastix_int_t  N1,
const pastix_lrblock_t A,
pastix_int_t  M2,
pastix_int_t  N2,
pastix_lrblock_t B,
pastix_int_t  offx,
pastix_int_t  offy 
)

Copy a small low-rank structure into a large one.

Parameters
[in]lowrankThe structure with low-rank parameters.
[in]transAv
  • PastixNoTrans: (A.v)' is stored transposed as usual
  • PastixTrans: A.v is stored
  • PastixConjTrans: A.v is stored
[in]alphaThe multiplier parameter: B = B + alpha * A
[in]M1The number of rows of the matrix A.
[in]N1The number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in]M2The number of rows of the matrix B.
[in]N2The number of columns of the matrix B.
[in,out]BThe low-rank representation of the matrix B.
[in]offxThe horizontal offset of A with respect to B.
[in]offyThe vertical offset of A with respect to B.

Definition at line 423 of file core_cgelrops.c.

References core_cgeadd(), core_clr2ge(), core_clralloc(), core_clrfree(), pastix_lr_s::core_ge2lr, pastix_int_t, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lr_s::tolerance, pastix_lrblock_s::u, pastix_lr_s::use_reltol, and pastix_lrblock_s::v.

Referenced by core_crradd_qr(), and core_crradd_svd().

◆ core_clrconcatenate_u()

void core_clrconcatenate_u ( pastix_complex32_t  alpha,
pastix_int_t  M1,
pastix_int_t  N1,
const pastix_lrblock_t A,
pastix_int_t  M2,
pastix_lrblock_t B,
pastix_int_t  offx,
pastix_complex32_t u1u2 
)

Concatenate left parts of two low-rank matrices.

Parameters
[in]alphaalpha * A is add to B
[in]M1The number of rows of the matrix A.
[in]N1The number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in]M2The number of rows of the matrix B.
[in]BThe low-rank representation of the matrix B.
[in]offxThe horizontal offset of A with respect to B.
[in,out]u1u2The workspace where matrices are concatenated

Definition at line 535 of file core_cgelrops.c.

References pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.

Referenced by core_crradd_qr(), and core_crradd_svd().

◆ core_clrconcatenate_v()

void core_clrconcatenate_v ( pastix_trans_t  transA1,
pastix_complex32_t  alpha,
pastix_int_t  M1,
pastix_int_t  N1,
const pastix_lrblock_t A,
pastix_int_t  N2,
pastix_lrblock_t B,
pastix_int_t  offy,
pastix_complex32_t v1v2 
)

Concatenate right parts of two low-rank matrices.

Parameters
[in]transA1
  • PastixNoTrans: No transpose, op( A ) = A;
  • PastixTrans: Transpose, op( A ) = A';
[in]alphaalpha * A is add to B
[in]M1The number of rows of the matrix A.
[in]N1The number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in]N2The number of columns of the matrix B.
[in]BThe low-rank representation of the matrix B.
[in]offyThe vertical offset of A with respect to B.
[in,out]v1v2The workspace where matrices are concatenated

Definition at line 647 of file core_cgelrops.c.

References core_cgeadd(), pastix_int_t, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_crradd_qr(), and core_crradd_svd().

◆ core_clrnrm()

float core_clrnrm ( pastix_normtype_t  ntype,
int  transV,
pastix_int_t  M,
pastix_int_t  N,
const pastix_lrblock_t A 
)

Compute the norm of a low-rank matrix.

Parameters
[in]ntypeThe matrix norm to compute.
[in]transVTODO
[in]MTODO
[in]NTODO
[in]AThe low-rank matrix
Returns
The norm of the matrix A

Definition at line 48 of file core_clrnrm.c.

References PastixFrobeniusNorm, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_crradd_svd().

◆ core_clrgetsize()

size_t core_clrgetsize ( pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A 
)

Compute the size of a block to send in LR.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
Returns
Size of a block to send in LR

Definition at line 1623 of file core_cgelrops.c.

References pastix_lrblock_s::rk.

Referenced by cpublok_ccompute_size_lr().

◆ core_clrpack()

char* core_clrpack ( pastix_int_t  M,
pastix_int_t  N,
const pastix_lrblock_t A,
char *  buffer 
)

Pack low-rank data by side.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in,out]bufferPointer on packed data
Returns
Pointer on packed data shifted to the next block

Definition at line 1660 of file core_cgelrops.c.

References pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by cpublok_cpack_lr().

◆ core_clrunpack()

char* core_clrunpack ( pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A,
char *  buffer 
)

Unpack low rank data and fill the cblk concerned by the computation.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in,out]bufferPointer on packed data
Returns
Pointer on packed data shifted to the next block

Definition at line 1727 of file core_cgelrops.c.

References core_clrsze(), pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by cpublok_cunpack_lr().

◆ core_clrunpack2()

const char* core_clrunpack2 ( pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A,
const char *  input,
char **  outptr 
)

Unpack low rank data and fill the cblk concerned by the computation.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in,out]inputTODO
[in,out]outptrTODO
Returns
Pointer on packed data shifted to the next block

Definition at line 1785 of file core_cgelrops.c.

References pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_slralloc()

void core_slralloc ( pastix_int_t  M,
pastix_int_t  N,
pastix_int_t  rkmax,
pastix_lrblock_t A 
)

Allocate a low-rank matrix.

Parameters
[in]MNumber of rows of the matrix A.
[in]NNumber of columns of the matrix A.
[in]rkmax
  • -1: the matrix is allocated tight to its rank.
  • >0: the matrix is allocated to the minimum of rkmax and its maximum rank.
[out]AThe allocated low-rank matrix

Definition at line 56 of file core_sgelrops.c.

References pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_sge2lr_qrcp(), core_sge2lr_qrrt(), core_sge2lr_svd(), core_slrcpy(), cpucblk_salloc_lr(), and cpucblk_suncompress().

◆ core_slrfree()

void core_slrfree ( pastix_lrblock_t A)

Free a low-rank matrix.

Parameters
[in,out]AThe low-rank matrix that will be desallocated.

Definition at line 116 of file core_sgelrops.c.

References pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_slrcpy(), core_slrlr2lr(), cpucblk_sfree(), and cpucblk_suncompress().

◆ core_slrsze()

int core_slrsze ( int  copy,
pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A,
pastix_int_t  newrk,
pastix_int_t  newrkmax,
pastix_int_t  rklimit 
)

Resize a low-rank matrix.

Parameters
[in]copyEnable/disable the copy of the data from A->u and A->v into the new low-rank representation.
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in,out]AThe low-rank representation of the matrix. At exit, this structure is modified with the new low-rank representation of A, is the rank is small enough
[in]newrkThe new rank of the matrix A.
[in]newrkmaxThe new maximum rank of the matrix A. Useful if the low-rank structure was allocated with more data than the rank.
[in]rklimitThe maximum rank to store the matrix in low-rank format. If -1, set to core_get_rklimit(M, N)
Returns
The new rank of A

Definition at line 173 of file core_sgelrops.c.

References core_get_rklimit, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_sge2lr_svd(), and core_slrunpack().

◆ core_slr2ge()

int core_slr2ge ( pastix_trans_t  trans,
pastix_int_t  m,
pastix_int_t  n,
const pastix_lrblock_t Alr,
float *  A,
pastix_int_t  lda 
)

Convert a low rank matrix into a dense matrix.

Convert a low-rank matrix of size m-by-n into a full rank matrix. A = op( u * v^t ) with op(A) = A or A^t

Parameters
[in]trans
  • PastixNoTrans: returns A = u * v^t
  • PastixTrans: returns A = v * u^t
[in]mNumber of rows of the low-rank matrix Alr.
[in]nNumber of columns of the low-rank matrix Alr.
[in]AlrThe low rank matrix to be converted into a full rank matrix
[in,out]AThe matrix of dimension lda-by-k in which to store the uncompressed version of Alr. k = n if trans == PastixNoTrans, m otherwise.
[in]ldaThe leading dimension of the matrix A. lda >= max(1, m) if trans == PastixNoTrans, lda >= max(1,n) otherwise.
Return values
0in case of success.
-iif the ith parameter is incorrect.

Definition at line 302 of file core_sgelrops.c.

References core_sgetmo(), PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_slrcpy(), cpucblk_sgetschur_lr(), and cpucblk_suncompress().

◆ core_slrcpy()

void core_slrcpy ( const pastix_lr_t lowrank,
pastix_trans_t  transAv,
float  alpha,
pastix_int_t  M1,
pastix_int_t  N1,
const pastix_lrblock_t A,
pastix_int_t  M2,
pastix_int_t  N2,
pastix_lrblock_t B,
pastix_int_t  offx,
pastix_int_t  offy 
)

Copy a small low-rank structure into a large one.

Parameters
[in]lowrankThe structure with low-rank parameters.
[in]transAv
  • PastixNoTrans: (A.v)' is stored transposed as usual
  • PastixTrans: A.v is stored
  • PastixTrans: A.v is stored
[in]alphaThe multiplier parameter: B = B + alpha * A
[in]M1The number of rows of the matrix A.
[in]N1The number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in]M2The number of rows of the matrix B.
[in]N2The number of columns of the matrix B.
[in,out]BThe low-rank representation of the matrix B.
[in]offxThe horizontal offset of A with respect to B.
[in]offyThe vertical offset of A with respect to B.

Definition at line 423 of file core_sgelrops.c.

References pastix_lr_s::core_ge2lr, core_sgeadd(), core_slr2ge(), core_slralloc(), core_slrfree(), pastix_int_t, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lr_s::tolerance, pastix_lrblock_s::u, pastix_lr_s::use_reltol, and pastix_lrblock_s::v.

Referenced by core_srradd_qr(), and core_srradd_svd().

◆ core_slrconcatenate_u()

void core_slrconcatenate_u ( float  alpha,
pastix_int_t  M1,
pastix_int_t  N1,
const pastix_lrblock_t A,
pastix_int_t  M2,
pastix_lrblock_t B,
pastix_int_t  offx,
float *  u1u2 
)

Concatenate left parts of two low-rank matrices.

Parameters
[in]alphaalpha * A is add to B
[in]M1The number of rows of the matrix A.
[in]N1The number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in]M2The number of rows of the matrix B.
[in]BThe low-rank representation of the matrix B.
[in]offxThe horizontal offset of A with respect to B.
[in,out]u1u2The workspace where matrices are concatenated

Definition at line 535 of file core_sgelrops.c.

References pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.

Referenced by core_srradd_qr(), and core_srradd_svd().

◆ core_slrconcatenate_v()

void core_slrconcatenate_v ( pastix_trans_t  transA1,
float  alpha,
pastix_int_t  M1,
pastix_int_t  N1,
const pastix_lrblock_t A,
pastix_int_t  N2,
pastix_lrblock_t B,
pastix_int_t  offy,
float *  v1v2 
)

Concatenate right parts of two low-rank matrices.

Parameters
[in]transA1
  • PastixNoTrans: No transpose, op( A ) = A;
  • PastixTrans: Transpose, op( A ) = A';
[in]alphaalpha * A is add to B
[in]M1The number of rows of the matrix A.
[in]N1The number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in]N2The number of columns of the matrix B.
[in]BThe low-rank representation of the matrix B.
[in]offyThe vertical offset of A with respect to B.
[in,out]v1v2The workspace where matrices are concatenated

Definition at line 647 of file core_sgelrops.c.

References core_sgeadd(), pastix_int_t, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_srradd_qr(), and core_srradd_svd().

◆ core_slrnrm()

float core_slrnrm ( pastix_normtype_t  ntype,
int  transV,
pastix_int_t  M,
pastix_int_t  N,
const pastix_lrblock_t A 
)

Compute the norm of a low-rank matrix.

Parameters
[in]ntypeThe matrix norm to compute.
[in]transVTODO
[in]MTODO
[in]NTODO
[in]AThe low-rank matrix
Returns
The norm of the matrix A

Definition at line 48 of file core_slrnrm.c.

References PastixFrobeniusNorm, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_srradd_svd().

◆ core_slrgetsize()

size_t core_slrgetsize ( pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A 
)

Compute the size of a block to send in LR.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
Returns
Size of a block to send in LR

Definition at line 1623 of file core_sgelrops.c.

References pastix_lrblock_s::rk.

Referenced by cpublok_scompute_size_lr().

◆ core_slrpack()

char* core_slrpack ( pastix_int_t  M,
pastix_int_t  N,
const pastix_lrblock_t A,
char *  buffer 
)

Pack low-rank data by side.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in,out]bufferPointer on packed data
Returns
Pointer on packed data shifted to the next block

Definition at line 1660 of file core_sgelrops.c.

References pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by cpublok_spack_lr().

◆ core_slrunpack()

char* core_slrunpack ( pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A,
char *  buffer 
)

Unpack low rank data and fill the cblk concerned by the computation.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in,out]bufferPointer on packed data
Returns
Pointer on packed data shifted to the next block

Definition at line 1727 of file core_sgelrops.c.

References core_slrsze(), pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by cpublok_sunpack_lr().

◆ core_slrunpack2()

const char* core_slrunpack2 ( pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A,
const char *  input,
char **  outptr 
)

Unpack low rank data and fill the cblk concerned by the computation.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in,out]inputTODO
[in,out]outptrTODO
Returns
Pointer on packed data shifted to the next block

Definition at line 1785 of file core_sgelrops.c.

References pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_dlralloc()

void core_dlralloc ( pastix_int_t  M,
pastix_int_t  N,
pastix_int_t  rkmax,
pastix_lrblock_t A 
)

Allocate a low-rank matrix.

Parameters
[in]MNumber of rows of the matrix A.
[in]NNumber of columns of the matrix A.
[in]rkmax
  • -1: the matrix is allocated tight to its rank.
  • >0: the matrix is allocated to the minimum of rkmax and its maximum rank.
[out]AThe allocated low-rank matrix

Definition at line 56 of file core_dgelrops.c.

References pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_dge2lr_qrcp(), core_dge2lr_qrrt(), core_dge2lr_svd(), core_dlrcpy(), cpucblk_dalloc_lr(), and cpucblk_duncompress().

◆ core_dlrfree()

void core_dlrfree ( pastix_lrblock_t A)

Free a low-rank matrix.

Parameters
[in,out]AThe low-rank matrix that will be desallocated.

Definition at line 116 of file core_dgelrops.c.

References pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_dlrcpy(), core_dlrlr2lr(), cpucblk_dfree(), and cpucblk_duncompress().

◆ core_dlrsze()

int core_dlrsze ( int  copy,
pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A,
pastix_int_t  newrk,
pastix_int_t  newrkmax,
pastix_int_t  rklimit 
)

Resize a low-rank matrix.

Parameters
[in]copyEnable/disable the copy of the data from A->u and A->v into the new low-rank representation.
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in,out]AThe low-rank representation of the matrix. At exit, this structure is modified with the new low-rank representation of A, is the rank is small enough
[in]newrkThe new rank of the matrix A.
[in]newrkmaxThe new maximum rank of the matrix A. Useful if the low-rank structure was allocated with more data than the rank.
[in]rklimitThe maximum rank to store the matrix in low-rank format. If -1, set to core_get_rklimit(M, N)
Returns
The new rank of A

Definition at line 173 of file core_dgelrops.c.

References core_get_rklimit, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_dge2lr_svd(), and core_dlrunpack().

◆ core_dlr2ge()

int core_dlr2ge ( pastix_trans_t  trans,
pastix_int_t  m,
pastix_int_t  n,
const pastix_lrblock_t Alr,
double *  A,
pastix_int_t  lda 
)

Convert a low rank matrix into a dense matrix.

Convert a low-rank matrix of size m-by-n into a full rank matrix. A = op( u * v^t ) with op(A) = A or A^t

Parameters
[in]trans
  • PastixNoTrans: returns A = u * v^t
  • PastixTrans: returns A = v * u^t
[in]mNumber of rows of the low-rank matrix Alr.
[in]nNumber of columns of the low-rank matrix Alr.
[in]AlrThe low rank matrix to be converted into a full rank matrix
[in,out]AThe matrix of dimension lda-by-k in which to store the uncompressed version of Alr. k = n if trans == PastixNoTrans, m otherwise.
[in]ldaThe leading dimension of the matrix A. lda >= max(1, m) if trans == PastixNoTrans, lda >= max(1,n) otherwise.
Return values
0in case of success.
-iif the ith parameter is incorrect.

Definition at line 302 of file core_dgelrops.c.

References core_dgetmo(), PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_dlrcpy(), cpucblk_dgetschur_lr(), and cpucblk_duncompress().

◆ core_dlrcpy()

void core_dlrcpy ( const pastix_lr_t lowrank,
pastix_trans_t  transAv,
double  alpha,
pastix_int_t  M1,
pastix_int_t  N1,
const pastix_lrblock_t A,
pastix_int_t  M2,
pastix_int_t  N2,
pastix_lrblock_t B,
pastix_int_t  offx,
pastix_int_t  offy 
)

Copy a small low-rank structure into a large one.

Parameters
[in]lowrankThe structure with low-rank parameters.
[in]transAv
  • PastixNoTrans: (A.v)' is stored transposed as usual
  • PastixTrans: A.v is stored
  • PastixTrans: A.v is stored
[in]alphaThe multiplier parameter: B = B + alpha * A
[in]M1The number of rows of the matrix A.
[in]N1The number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in]M2The number of rows of the matrix B.
[in]N2The number of columns of the matrix B.
[in,out]BThe low-rank representation of the matrix B.
[in]offxThe horizontal offset of A with respect to B.
[in]offyThe vertical offset of A with respect to B.

Definition at line 423 of file core_dgelrops.c.

References core_dgeadd(), core_dlr2ge(), core_dlralloc(), core_dlrfree(), pastix_lr_s::core_ge2lr, pastix_int_t, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lr_s::tolerance, pastix_lrblock_s::u, pastix_lr_s::use_reltol, and pastix_lrblock_s::v.

Referenced by core_drradd_qr(), and core_drradd_svd().

◆ core_dlrconcatenate_u()

void core_dlrconcatenate_u ( double  alpha,
pastix_int_t  M1,
pastix_int_t  N1,
const pastix_lrblock_t A,
pastix_int_t  M2,
pastix_lrblock_t B,
pastix_int_t  offx,
double *  u1u2 
)

Concatenate left parts of two low-rank matrices.

Parameters
[in]alphaalpha * A is add to B
[in]M1The number of rows of the matrix A.
[in]N1The number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in]M2The number of rows of the matrix B.
[in]BThe low-rank representation of the matrix B.
[in]offxThe horizontal offset of A with respect to B.
[in,out]u1u2The workspace where matrices are concatenated

Definition at line 535 of file core_dgelrops.c.

References pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.

Referenced by core_drradd_qr(), and core_drradd_svd().

◆ core_dlrconcatenate_v()

void core_dlrconcatenate_v ( pastix_trans_t  transA1,
double  alpha,
pastix_int_t  M1,
pastix_int_t  N1,
const pastix_lrblock_t A,
pastix_int_t  N2,
pastix_lrblock_t B,
pastix_int_t  offy,
double *  v1v2 
)

Concatenate right parts of two low-rank matrices.

Parameters
[in]transA1
  • PastixNoTrans: No transpose, op( A ) = A;
  • PastixTrans: Transpose, op( A ) = A';
[in]alphaalpha * A is add to B
[in]M1The number of rows of the matrix A.
[in]N1The number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in]N2The number of columns of the matrix B.
[in]BThe low-rank representation of the matrix B.
[in]offyThe vertical offset of A with respect to B.
[in,out]v1v2The workspace where matrices are concatenated

Definition at line 647 of file core_dgelrops.c.

References core_dgeadd(), pastix_int_t, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_drradd_qr(), and core_drradd_svd().

◆ core_dlrnrm()

double core_dlrnrm ( pastix_normtype_t  ntype,
int  transV,
pastix_int_t  M,
pastix_int_t  N,
const pastix_lrblock_t A 
)

Compute the norm of a low-rank matrix.

Parameters
[in]ntypeThe matrix norm to compute.
[in]transVTODO
[in]MTODO
[in]NTODO
[in]AThe low-rank matrix
Returns
The norm of the matrix A

Definition at line 48 of file core_dlrnrm.c.

References PastixFrobeniusNorm, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_drradd_svd().

◆ core_dlrgetsize()

size_t core_dlrgetsize ( pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A 
)

Compute the size of a block to send in LR.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
Returns
Size of a block to send in LR

Definition at line 1623 of file core_dgelrops.c.

References pastix_lrblock_s::rk.

Referenced by cpublok_dcompute_size_lr().

◆ core_dlrpack()

char* core_dlrpack ( pastix_int_t  M,
pastix_int_t  N,
const pastix_lrblock_t A,
char *  buffer 
)

Pack low-rank data by side.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in,out]bufferPointer on packed data
Returns
Pointer on packed data shifted to the next block

Definition at line 1660 of file core_dgelrops.c.

References pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by cpublok_dpack_lr().

◆ core_dlrunpack()

char* core_dlrunpack ( pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A,
char *  buffer 
)

Unpack low rank data and fill the cblk concerned by the computation.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in,out]bufferPointer on packed data
Returns
Pointer on packed data shifted to the next block

Definition at line 1727 of file core_dgelrops.c.

References core_dlrsze(), pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by cpublok_dunpack_lr().

◆ core_dlrunpack2()

const char* core_dlrunpack2 ( pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A,
const char *  input,
char **  outptr 
)

Unpack low rank data and fill the cblk concerned by the computation.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in,out]inputTODO
[in,out]outptrTODO
Returns
Pointer on packed data shifted to the next block

Definition at line 1785 of file core_dgelrops.c.

References pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

◆ core_zlralloc()

void core_zlralloc ( pastix_int_t  M,
pastix_int_t  N,
pastix_int_t  rkmax,
pastix_lrblock_t A 
)

Allocate a low-rank matrix.

Parameters
[in]MNumber of rows of the matrix A.
[in]NNumber of columns of the matrix A.
[in]rkmax
  • -1: the matrix is allocated tight to its rank.
  • >0: the matrix is allocated to the minimum of rkmax and its maximum rank.
[out]AThe allocated low-rank matrix

Definition at line 56 of file core_zgelrops.c.

References pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_zge2lr_qrcp(), core_zge2lr_qrrt(), core_zge2lr_svd(), core_zlrcpy(), cpucblk_zalloc_lr(), and cpucblk_zuncompress().

◆ core_zlrfree()

void core_zlrfree ( pastix_lrblock_t A)

Free a low-rank matrix.

Parameters
[in,out]AThe low-rank matrix that will be desallocated.

Definition at line 116 of file core_zgelrops.c.

References pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_zlrcpy(), core_zlrlr2lr(), cpucblk_zfree(), and cpucblk_zuncompress().

◆ core_zlrsze()

int core_zlrsze ( int  copy,
pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A,
pastix_int_t  newrk,
pastix_int_t  newrkmax,
pastix_int_t  rklimit 
)

Resize a low-rank matrix.

Parameters
[in]copyEnable/disable the copy of the data from A->u and A->v into the new low-rank representation.
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in,out]AThe low-rank representation of the matrix. At exit, this structure is modified with the new low-rank representation of A, is the rank is small enough
[in]newrkThe new rank of the matrix A.
[in]newrkmaxThe new maximum rank of the matrix A. Useful if the low-rank structure was allocated with more data than the rank.
[in]rklimitThe maximum rank to store the matrix in low-rank format. If -1, set to core_get_rklimit(M, N)
Returns
The new rank of A

Definition at line 173 of file core_zgelrops.c.

References core_get_rklimit, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_zge2lr_svd(), and core_zlrunpack().

◆ core_zlr2ge()

int core_zlr2ge ( pastix_trans_t  trans,
pastix_int_t  m,
pastix_int_t  n,
const pastix_lrblock_t Alr,
pastix_complex64_t *  A,
pastix_int_t  lda 
)

Convert a low rank matrix into a dense matrix.

Convert a low-rank matrix of size m-by-n into a full rank matrix. A = op( u * v^t ) with op(A) = A or A^t

Parameters
[in]trans
  • PastixNoTrans: returns A = u * v^t
  • PastixTrans: returns A = v * u^t
[in]mNumber of rows of the low-rank matrix Alr.
[in]nNumber of columns of the low-rank matrix Alr.
[in]AlrThe low rank matrix to be converted into a full rank matrix
[in,out]AThe matrix of dimension lda-by-k in which to store the uncompressed version of Alr. k = n if trans == PastixNoTrans, m otherwise.
[in]ldaThe leading dimension of the matrix A. lda >= max(1, m) if trans == PastixNoTrans, lda >= max(1,n) otherwise.
Return values
0in case of success.
-iif the ith parameter is incorrect.

Definition at line 302 of file core_zgelrops.c.

References core_zgetmo(), PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_zlrcpy(), cpucblk_zgetschur_lr(), and cpucblk_zuncompress().

◆ core_zlrcpy()

void core_zlrcpy ( const pastix_lr_t lowrank,
pastix_trans_t  transAv,
pastix_complex64_t  alpha,
pastix_int_t  M1,
pastix_int_t  N1,
const pastix_lrblock_t A,
pastix_int_t  M2,
pastix_int_t  N2,
pastix_lrblock_t B,
pastix_int_t  offx,
pastix_int_t  offy 
)

Copy a small low-rank structure into a large one.

Parameters
[in]lowrankThe structure with low-rank parameters.
[in]transAv
  • PastixNoTrans: (A.v)' is stored transposed as usual
  • PastixTrans: A.v is stored
  • PastixConjTrans: A.v is stored
[in]alphaThe multiplier parameter: B = B + alpha * A
[in]M1The number of rows of the matrix A.
[in]N1The number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in]M2The number of rows of the matrix B.
[in]N2The number of columns of the matrix B.
[in,out]BThe low-rank representation of the matrix B.
[in]offxThe horizontal offset of A with respect to B.
[in]offyThe vertical offset of A with respect to B.

Definition at line 423 of file core_zgelrops.c.

References pastix_lr_s::core_ge2lr, core_zgeadd(), core_zlr2ge(), core_zlralloc(), core_zlrfree(), pastix_int_t, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lr_s::tolerance, pastix_lrblock_s::u, pastix_lr_s::use_reltol, and pastix_lrblock_s::v.

Referenced by core_zrradd_qr(), and core_zrradd_svd().

◆ core_zlrconcatenate_u()

void core_zlrconcatenate_u ( pastix_complex64_t  alpha,
pastix_int_t  M1,
pastix_int_t  N1,
const pastix_lrblock_t A,
pastix_int_t  M2,
pastix_lrblock_t B,
pastix_int_t  offx,
pastix_complex64_t *  u1u2 
)

Concatenate left parts of two low-rank matrices.

Parameters
[in]alphaalpha * A is add to B
[in]M1The number of rows of the matrix A.
[in]N1The number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in]M2The number of rows of the matrix B.
[in]BThe low-rank representation of the matrix B.
[in]offxThe horizontal offset of A with respect to B.
[in,out]u1u2The workspace where matrices are concatenated

Definition at line 535 of file core_zgelrops.c.

References pastix_int_t, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, and pastix_lrblock_s::u.

Referenced by core_zrradd_qr(), and core_zrradd_svd().

◆ core_zlrconcatenate_v()

void core_zlrconcatenate_v ( pastix_trans_t  transA1,
pastix_complex64_t  alpha,
pastix_int_t  M1,
pastix_int_t  N1,
const pastix_lrblock_t A,
pastix_int_t  N2,
pastix_lrblock_t B,
pastix_int_t  offy,
pastix_complex64_t *  v1v2 
)

Concatenate right parts of two low-rank matrices.

Parameters
[in]transA1
  • PastixNoTrans: No transpose, op( A ) = A;
  • PastixTrans: Transpose, op( A ) = A';
[in]alphaalpha * A is add to B
[in]M1The number of rows of the matrix A.
[in]N1The number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in]N2The number of columns of the matrix B.
[in]BThe low-rank representation of the matrix B.
[in]offyThe vertical offset of A with respect to B.
[in,out]v1v2The workspace where matrices are concatenated

Definition at line 647 of file core_zgelrops.c.

References core_zgeadd(), pastix_int_t, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_zrradd_qr(), and core_zrradd_svd().

◆ core_zlrnrm()

double core_zlrnrm ( pastix_normtype_t  ntype,
int  transV,
pastix_int_t  M,
pastix_int_t  N,
const pastix_lrblock_t A 
)

Compute the norm of a low-rank matrix.

Parameters
[in]ntypeThe matrix norm to compute.
[in]transVTODO
[in]MTODO
[in]NTODO
[in]AThe low-rank matrix
Returns
The norm of the matrix A

Definition at line 48 of file core_zlrnrm.c.

References PastixFrobeniusNorm, PastixNoTrans, pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by core_zrradd_svd().

◆ core_zlrgetsize()

size_t core_zlrgetsize ( pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A 
)

Compute the size of a block to send in LR.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
Returns
Size of a block to send in LR

Definition at line 1623 of file core_zgelrops.c.

References pastix_lrblock_s::rk.

Referenced by cpublok_zcompute_size_lr().

◆ core_zlrpack()

char* core_zlrpack ( pastix_int_t  M,
pastix_int_t  N,
const pastix_lrblock_t A,
char *  buffer 
)

Pack low-rank data by side.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in,out]bufferPointer on packed data
Returns
Pointer on packed data shifted to the next block

Definition at line 1660 of file core_zgelrops.c.

References pastix_lrblock_s::rk, pastix_lrblock_s::rkmax, pastix_lrblock_s::u, and pastix_lrblock_s::v.

Referenced by cpublok_zpack_lr().

◆ core_zlrunpack()

char* core_zlrunpack ( pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A,
char *  buffer 
)

Unpack low rank data and fill the cblk concerned by the computation.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in,out]bufferPointer on packed data
Returns
Pointer on packed data shifted to the next block

Definition at line 1727 of file core_zgelrops.c.

References core_zlrsze(), and pastix_lrblock_s::u.

Referenced by cpublok_zunpack_lr().

◆ core_zlrunpack2()

const char* core_zlrunpack2 ( pastix_int_t  M,
pastix_int_t  N,
pastix_lrblock_t A,
const char *  input,
char **  outptr 
)

Unpack low rank data and fill the cblk concerned by the computation.

Parameters
[in]MThe number of rows of the matrix A.
[in]NThe number of columns of the matrix A.
[in]AThe low-rank representation of the matrix A.
[in,out]inputTODO
[in,out]outptrTODO
Returns
Pointer on packed data shifted to the next block

Definition at line 1785 of file core_zgelrops.c.

References pastix_lrblock_s::rk, and pastix_lrblock_s::rkmax.