PaStiX Handbook  6.3.2
Internal functions for low-rank kernels

Data Structures

struct  pastix_lrblock_s
 The block low-rank structure to hold a matrix in low-rank form. More...
 
struct  pastix_lr_s
 Structure to define the type of function to use for the low-rank kernels and their parameters. More...
 

Macros

#define PASTIX_LRM3_ORTHOU   (1 << 0)
 Macro to specify if the U part of a low-rank matrix is orthogonal or not (Used in LRMM functions).
 
#define PASTIX_LRM3_ALLOCU   (1 << 1)
 Macro to specify if the U part of a low-rank matrix has been allocated and need to be freed or not (Used in LRMM functions).
 
#define PASTIX_LRM3_ALLOCV   (1 << 2)
 Macro to specify if the V part of a low-rank matrix has been allocated and need to be freed or not (Used in LRMM functions).
 
#define PASTIX_LRM3_TRANSB   (1 << 3)
 Macro to specify if the the operator on B, still needs to be applied to the V part of the low-rank matrix or not (Used in LRMM functions).
 

Typedefs

typedef struct pastix_lr_s pastix_lr_t
 Structure to define the type of function to use for the low-rank kernels and their parameters.
 
typedef struct pastix_lrblock_s pastix_lrblock_t
 The block low-rank structure to hold a matrix in low-rank form.
 
typedef pastix_fixdbl_t(* fct_ge2lr_t) (int, pastix_fixdbl_t, pastix_int_t, pastix_int_t, pastix_int_t, const void *, pastix_int_t, pastix_lrblock_t *)
 Type of the functions to compress a dense block into a low-rank form.
 
typedef pastix_fixdbl_t(* fct_rradd_t) (const pastix_lr_t *, pastix_trans_t, const void *, pastix_int_t, pastix_int_t, const pastix_lrblock_t *, pastix_int_t, pastix_int_t, pastix_lrblock_t *, pastix_int_t, pastix_int_t)
 Type of the functions to add two low-rank blocks together.
 
typedef enum memory_stats_e memory_stats_t
 Enum to define the type of block.
 

Enumerations

enum  memory_stats_e {
  FR_InDiag = 0 , FR_OffDiag = 1 , LR_InDiag = 2 , LR_InSele = 3 ,
  LR_OffDiag = 4 , LR_DInD = 5 , MEMORY_STATS_SIZE
}
 Enum to define the type of block. More...
 

Functions

static pastix_int_t core_get_rklimit_max (pastix_int_t M, pastix_int_t N)
 Compute the maximal rank accepted for a given matrix size for testings. More...
 
static pastix_int_t core_get_rklimit_end (pastix_int_t M, pastix_int_t N)
 Compute the maximal rank accepted for a given matrix size for Just-In-Time strategy. More...
 
static pastix_int_t core_get_rklimit_begin (pastix_int_t M, pastix_int_t N)
 Compute the maximal rank accepted for a given matrix size for Minimal-Memory strategy. More...
 
static pastix_int_t core_get_rklimit_test (pastix_int_t M, pastix_int_t N)
 TODO. More...
 

Variables

const char * compmeth_shnames [PastixCompressMethodNbr]
 List of short names for the compression kernels.
 
const char * compmeth_lgnames [PastixCompressMethodNbr]
 List of long names for the compression kernels.
 
double pastix_lr_minratio
 Define the minimal ratio for which we accept to compress a matrix into a low-rank form or not. More...
 
pastix_int_t pastix_lr_ortho
 Define the orthogonalization method.
 
pastix_int_t(* core_get_rklimit )(pastix_int_t, pastix_int_t)
 Compute the maximal rank accepted for a given matrix size. The pointer is set according to the low-rank strategy used. More...
 
const fct_ge2lr_t ge2lrMethods [PastixCompressMethodNbr][4]
 Array of pointers to the multiple arithmetic and algorithmic variants of ge2lr.
 
const fct_rradd_t rraddMethods [PastixCompressMethodNbr][4]
 Array of pointers to the multiple arithmetic and algorithmic variants of rradd.
 

Detailed Description

This module contains all the internal functions for low-rank kernels


Data Type Documentation

◆ pastix_lrblock_s

struct pastix_lrblock_s

The block low-rank structure to hold a matrix in low-rank form.

Definition at line 166 of file pastix_lowrank.h.

Data Fields
int rk

Rank of the low-rank matrix: -1 is dense, otherwise rank-rk matrix

int rkmax

Leading dimension of the matrix u

void * u

Contains the dense matrix if rk=-1, or the u factor from u vT representation

void * v

Not referenced if rk=-1, otherwise, the v factor

◆ pastix_lr_s

struct pastix_lr_s

Structure to define the type of function to use for the low-rank kernels and their parameters.

Definition at line 201 of file pastix_lowrank.h.

Data Fields
pastix_compress_when_t compress_when

When to compress in the full solver

pastix_compress_method_t compress_method

Compression method

pastix_int_t compress_min_width

Minimum width to compress a supernode

pastix_int_t compress_min_height

Minimum height to compress an off-diagonal block

int compress_preselect

Enable/disable the compression of preselected blocks

int use_reltol

Enable/disable relative tolerance vs absolute one

int ilu_lvl

The ILU levels above which the blocks are originally compressed

double tolerance

Absolute compression tolerance

fct_rradd_t core_rradd

Recompression function

fct_ge2lr_t core_ge2lr

Compression function

Enumeration Type Documentation

◆ memory_stats_e

Enum to define the type of block.

Enumerator
FR_InDiag 

Full-rank block inside a diagonal block from the non-split partition

FR_OffDiag 

Full-rank block outside a diagonal block from the non-split partition

LR_InDiag 

Non selected Low-rank block inside a diagonal block from the non-split partition

LR_InSele 

Selected low-rank block inside a diagonal block from the non-split partition

LR_OffDiag 

Low-rank block outside a diagonal block from the non-split partition

LR_DInD 

Non-compressible diagonal block inside a diagonal block from the non-split partition

Definition at line 217 of file pastix_lowrank.h.

Function Documentation

◆ core_get_rklimit_max()

static pastix_int_t core_get_rklimit_max ( pastix_int_t  M,
pastix_int_t  N 
)
inlinestatic

Compute the maximal rank accepted for a given matrix size for testings.

Parameters
[in]MThe number of rows of the matrix
[in]NThe number of columns of the matrix
Returns
The maximal rank accepted for this matrix size.

Definition at line 85 of file pastix_lowrank.h.

◆ core_get_rklimit_end()

static pastix_int_t core_get_rklimit_end ( pastix_int_t  M,
pastix_int_t  N 
)
inlinestatic

Compute the maximal rank accepted for a given matrix size for Just-In-Time strategy.

Parameters
[in]MThe number of rows of the matrix
[in]NThe number of columns of the matrix
Returns
The maximal rank accepted for this matrix size.

Definition at line 108 of file pastix_lowrank.h.

References pastix_lr_minratio.

Referenced by pastix_subtask_bcsc2ctab().

◆ core_get_rklimit_begin()

static pastix_int_t core_get_rklimit_begin ( pastix_int_t  M,
pastix_int_t  N 
)
inlinestatic

Compute the maximal rank accepted for a given matrix size for Minimal-Memory strategy.

Parameters
[in]MThe number of rows of the matrix
[in]NThe number of columns of the matrix
Returns
The maximal rank accepted for this matrix size.

Definition at line 131 of file pastix_lowrank.h.

References pastix_lr_minratio.

Referenced by pastix_subtask_bcsc2ctab().

◆ core_get_rklimit_test()

static pastix_int_t core_get_rklimit_test ( pastix_int_t  M,
pastix_int_t  N 
)
inlinestatic

TODO.

Parameters
[in]MThe number of rows of the matrix
[in]NThe number of columns of the matrix
Returns
TODO

Definition at line 154 of file pastix_lowrank.h.

Variable Documentation

◆ pastix_lr_minratio

double pastix_lr_minratio
extern

Define the minimal ratio for which we accept to compress a matrix into a low-rank form or not.

See also
core_get_rklimit()

Definition at line 24 of file lowrank.c.

Referenced by core_get_rklimit_begin(), core_get_rklimit_end(), and pastix_subtask_bcsc2ctab().

◆ core_get_rklimit

pastix_int_t(* core_get_rklimit) (pastix_int_t, pastix_int_t) ( pastix_int_t  M,
pastix_int_t  N 
)
extern

Compute the maximal rank accepted for a given matrix size. The pointer is set according to the low-rank strategy used.

Parameters
[in]MThe number of rows of the matrix
[in]NThe number of columns of the matrix
Returns
The maximal rank accepted for this matrix size.

Definition at line 46 of file kernels_trace.c.

Referenced by core_cge2lr_qrcp(), core_cge2lr_qrrt(), core_cge2lr_svd(), core_clr2lr(), core_clr2null(), core_clrsze(), core_crradd_qr(), core_dge2lr_qrcp(), core_dge2lr_qrrt(), core_dge2lr_svd(), core_dlr2lr(), core_dlr2null(), core_dlrsze(), core_drradd_qr(), core_sge2lr_qrcp(), core_sge2lr_qrrt(), core_sge2lr_svd(), core_slr2lr(), core_slr2null(), core_slrsze(), core_srradd_qr(), core_zge2lr_qrcp(), core_zge2lr_qrrt(), core_zge2lr_svd(), core_zlr2lr(), core_zlr2null(), core_zlrsze(), core_zrradd_qr(), and pastix_subtask_bcsc2ctab().