STARS-H
Software for Testing Accuracy, Reliability and Scalability of Hierarchical computations
H-matrix

Block-wise Low-Rank Matrix/Tensor. More...

Collaboration diagram for H-matrix:

Modules

 Approximation routines
 Approximation schemes for dense matrices.
 
 GEMM
 H-by-dense matrix multiplication.
 
 Error of approximation
 Routines to measure error of approximation.
 

Data Structures

struct  starsh_blrm
 Non-nested block low-rank matrix. More...
 

Typedefs

typedef struct starsh_blrm STARSH_blrm
 

Functions

int starsh_blrm__dca (STARSH_blrm *matrix, Array *A)
 Convert double precision block low-rank matrix to dense Array. More...
 
double starsh_blrm__dfe (STARSH_blrm *matrix)
 Approximation error in Frobenius norm of double precision matrix. More...
 
int starsh_blrm__dmml (STARSH_blrm *matrix, int nrhs, double alpha, double *A, int lda, double beta, double *B, int ldb)
 Multiply blr-matrix by dense matrix. More...
 
int starsh_blrm__dqp3 (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile of BLR matrix with RRQR (GEQP3 function). More...
 
int starsh_blrm__drsdd (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by randomized SVD. More...
 
int starsh_blrm__dsdd (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by divide-and-conquer SVD (GESDD function). More...
 
int starsh_blrm__dqp3_starpu (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile of BLR matrix with RRQR (GEQP3 function). More...
 
int starsh_blrm__drsdd_starpu (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by randomized SVD. More...
 
int starsh_blrm__dsdd_starpu (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by divide-and-conquer SVD (GESDD function). More...
 
int starsh_blrm__drsdd_starpu_kblas (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by randomized SVD. More...
 
int starsh_blrm__drsdd_starpu_kblas2 (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by randomized SVD. More...
 
int starsh_blrm__drsdd_starpu_kblas3_spatial (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by randomized SVD. More...
 
int starsh_blrm__drsdd_starpu_cuda (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by randomized SVD. More...
 
int starsh_blrm__dqp3_omp (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile of BLR matrix with RRQR (GEQP3 function). More...
 
int starsh_blrm__drsdd_omp (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by randomized SVD. More...
 
int starsh_blrm__dsdd_omp (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by divide-and-conquer SVD (GESDD function). More...
 
int starsh_blrm__dmml_omp (STARSH_blrm *matrix, int nrhs, double alpha, double *A, int lda, double beta, double *B, int ldb)
 Multiply blr-matrix by dense matrix. More...
 
double starsh_blrm__dfe_omp (STARSH_blrm *matrix)
 Approximation error in Frobenius norm of double precision matrix. More...
 
int starsh_blrm__dqp3_mpi (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile of BLR matrix with RRQR (GEQP3 function). More...
 
int starsh_blrm__drsdd_mpi (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by randomized SVD. More...
 
double starsh_blrm__dfe_mpi (STARSH_blrm *matrix)
 Approximation error in Frobenius norm of double precision matrix. More...
 
int starsh_blrm__dsdd_mpi (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by divide-and-conquer SVD (GESDD function). More...
 
int starsh_blrm__dmml_mpi (STARSH_blrm *matrix, int nrhs, double alpha, double *A, int lda, double beta, double *B, int ldb)
 Multiply blr-matrix by dense matrix on MPI nodes. More...
 
int starsh_blrm__dmml_mpi_tlr (STARSH_blrm *matrix, int nrhs, double alpha, double *A, int lda, double beta, double *B, int ldb)
 Multiply blr-matrix by dense matrix on MPI nodes. More...
 
int starsh_blrm__dna_mpi (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Simply compute matrix without any approximation. More...
 
int starsh_blrm__dqp3_mpi_starpu (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile of BLR matrix with RRQR (GEQP3 function). More...
 
int starsh_blrm__drsdd_mpi_starpu (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by randomized SVD. More...
 
int starsh_blrm__dsdd_mpi_starpu (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by divide-and-conquer SVD (GESDD function). More...
 
int starsh_blrm__drsdd_mpi_starpu_kblas (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by randomized SVD. More...
 
int starsh_blrm__drsdd_mpi_starpu_kblas2 (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by randomized SVD. More...
 
int starsh_blrm__drsdd_mpi_starpu_kblas3_spatial (STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
 Approximate each tile by randomized SVD. More...
 
int starsh_blrm_new (STARSH_blrm **matrix, STARSH_blrf *format, int *far_rank, Array **far_U, Array **far_V, int onfly, Array **near_D, void *alloc_U, void *alloc_V, void *alloc_D, char alloc_type)
 Init STARSH_blrm object. More...
 
void starsh_blrm_free (STARSH_blrm *matrix)
 
void starsh_blrm_info (STARSH_blrm *matrix)
 
int starsh_blrm_get_block (STARSH_blrm *matrix, STARSH_int i, STARSH_int j, int *shape, int *rank, void **U, void **V, void **D)
 Get shape, rank and low-rank factors or dense representation of a block. More...
 
int starsh_blrm_new_mpi (STARSH_blrm **matrix, STARSH_blrf *format, int *far_rank, Array **far_U, Array **far_V, int onfly, Array **near_D, void *alloc_U, void *alloc_V, void *alloc_D, char alloc_type)
 Init STARSH_blrm object. More...
 
void starsh_blrm_free_mpi (STARSH_blrm *matrix)
 
void starsh_blrm_info_mpi (STARSH_blrm *matrix)
 

Variables

STARSH_blrm_approximatestarsh_blrm_approximate
 

Detailed Description

Block-wise Low-Rank Matrix/Tensor.

Typedef Documentation

◆ STARSH_blrm

Function Documentation

◆ starsh_blrm__dca()

int starsh_blrm__dca ( STARSH_blrm matrix,
Array A 
)

Convert double precision block low-rank matrix to dense Array.

Memory for output array must be allocated prior calling this function.

Parameters
[in]matrixBlock-wise low-rank matrix.
[out]AOutput Array object.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__dfe()

double starsh_blrm__dfe ( STARSH_blrm matrix)

Approximation error in Frobenius norm of double precision matrix.

Measure error of approximation of a dense matrix by block-wise low-rank matrix.

Parameters
[in]matrixBlock-wise low-rank matrix.
Returns
Error of approximation.

◆ starsh_blrm__dfe_mpi()

double starsh_blrm__dfe_mpi ( STARSH_blrm matrix)

Approximation error in Frobenius norm of double precision matrix.

Measure error of approximation of a dense matrix by block-wise low-rank matrix.

Parameters
[in]matrixBlock-wise low-rank matrix.
Returns
Error of approximation.

◆ starsh_blrm__dfe_omp()

double starsh_blrm__dfe_omp ( STARSH_blrm matrix)

Approximation error in Frobenius norm of double precision matrix.

Measure error of approximation of a dense matrix by block-wise low-rank matrix.

Parameters
[in]matrixBlock-wise low-rank matrix.
Returns
Error of approximation.

◆ starsh_blrm__dmml()

int starsh_blrm__dmml ( STARSH_blrm matrix,
int  nrhs,
double  alpha,
double *  A,
int  lda,
double  beta,
double *  B,
int  ldb 
)

Multiply blr-matrix by dense matrix.

Performs C=alpha*A*B+beta*C with STARSH_blrm A and dense matrices B and C. All the integer types are int, since they are used in BLAS calls.

Parameters
[in]matrixPointer to STARSH_blrm object.
[in]nrhsNumber of right hand sides.
[in]alphaScalar mutliplier.
[in]ADense matrix, right havd side.
[in]ldaLeading dimension of A.
[in]betaScalar multiplier.
[in]BResulting dense matrix.
[in]ldbLeading dimension of B.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__dmml_mpi()

int starsh_blrm__dmml_mpi ( STARSH_blrm matrix,
int  nrhs,
double  alpha,
double *  A,
int  lda,
double  beta,
double *  B,
int  ldb 
)

Multiply blr-matrix by dense matrix on MPI nodes.

Performs C=alpha*A*B+beta*C with STARSH_blrm A and dense matrices B and C. All the integer types are int, since they are used in BLAS calls.

Parameters
[in]matrixPointer to STARSH_blrm object.
[in]nrhsNumber of right hand sides.
[in]alphaScalar mutliplier.
[in]ADense matrix, right havd side.
[in]ldaLeading dimension of A.
[in]betaScalar multiplier.
[in]BResulting dense matrix.
[in]ldbLeading dimension of B.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__dmml_mpi_tlr()

int starsh_blrm__dmml_mpi_tlr ( STARSH_blrm matrix,
int  nrhs,
double  alpha,
double *  A,
int  lda,
double  beta,
double *  B,
int  ldb 
)

Multiply blr-matrix by dense matrix on MPI nodes.

Performs C=alpha*A*B+beta*C with STARSH_blrm A and dense matrices B and C. All the integer types are int, since they are used in BLAS calls. Block-wise low-rank matrix A is in TLR format.

Parameters
[in]matrixPointer to STARSH_blrm object.
[in]nrhsNumber of right hand sides.
[in]alphaScalar mutliplier.
[in]ADense matrix, right havd side.
[in]ldaLeading dimension of A.
[in]betaScalar multiplier.
[in]BResulting dense matrix.
[in]ldbLeading dimension of B.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__dmml_omp()

int starsh_blrm__dmml_omp ( STARSH_blrm matrix,
int  nrhs,
double  alpha,
double *  A,
int  lda,
double  beta,
double *  B,
int  ldb 
)

Multiply blr-matrix by dense matrix.

Performs C=alpha*A*B+beta*C with STARSH_blrm A and dense matrices B and C. All the integer types are int, since they are used in BLAS calls.

Parameters
[in]matrixPointer to STARSH_blrm object.
[in]nrhsNumber of right hand sides.
[in]alphaScalar mutliplier.
[in]ADense matrix, right havd side.
[in]ldaLeading dimension of A.
[in]betaScalar multiplier.
[in]BResulting dense matrix.
[in]ldbLeading dimension of B.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__dna_mpi()

int starsh_blrm__dna_mpi ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Simply compute matrix without any approximation.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.

◆ starsh_blrm__dqp3()

int starsh_blrm__dqp3 ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile of BLR matrix with RRQR (GEQP3 function).

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__dqp3_mpi()

int starsh_blrm__dqp3_mpi ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile of BLR matrix with RRQR (GEQP3 function).

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__dqp3_mpi_starpu()

int starsh_blrm__dqp3_mpi_starpu ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile of BLR matrix with RRQR (GEQP3 function).

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__dqp3_omp()

int starsh_blrm__dqp3_omp ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile of BLR matrix with RRQR (GEQP3 function).

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__dqp3_starpu()

int starsh_blrm__dqp3_starpu ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile of BLR matrix with RRQR (GEQP3 function).

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__drsdd()

int starsh_blrm__drsdd ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by randomized SVD.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__drsdd_mpi()

int starsh_blrm__drsdd_mpi ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by randomized SVD.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__drsdd_mpi_starpu()

int starsh_blrm__drsdd_mpi_starpu ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by randomized SVD.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__drsdd_mpi_starpu_kblas()

int starsh_blrm__drsdd_mpi_starpu_kblas ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by randomized SVD.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__drsdd_mpi_starpu_kblas2()

int starsh_blrm__drsdd_mpi_starpu_kblas2 ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by randomized SVD.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__drsdd_mpi_starpu_kblas3_spatial()

int starsh_blrm__drsdd_mpi_starpu_kblas3_spatial ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by randomized SVD.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__drsdd_omp()

int starsh_blrm__drsdd_omp ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by randomized SVD.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.

◆ starsh_blrm__drsdd_starpu()

int starsh_blrm__drsdd_starpu ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by randomized SVD.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__drsdd_starpu_cuda()

int starsh_blrm__drsdd_starpu_cuda ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by randomized SVD.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__drsdd_starpu_kblas()

int starsh_blrm__drsdd_starpu_kblas ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by randomized SVD.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__drsdd_starpu_kblas2()

int starsh_blrm__drsdd_starpu_kblas2 ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by randomized SVD.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__drsdd_starpu_kblas3_spatial()

int starsh_blrm__drsdd_starpu_kblas3_spatial ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by randomized SVD.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__dsdd()

int starsh_blrm__dsdd ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by divide-and-conquer SVD (GESDD function).

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__dsdd_mpi()

int starsh_blrm__dsdd_mpi ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by divide-and-conquer SVD (GESDD function).

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__dsdd_mpi_starpu()

int starsh_blrm__dsdd_mpi_starpu ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by divide-and-conquer SVD (GESDD function).

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm__dsdd_omp()

int starsh_blrm__dsdd_omp ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by divide-and-conquer SVD (GESDD function).

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.

◆ starsh_blrm__dsdd_starpu()

int starsh_blrm__dsdd_starpu ( STARSH_blrm **  matrix,
STARSH_blrf format,
int  maxrank,
double  tol,
int  onfly 
)

Approximate each tile by divide-and-conquer SVD (GESDD function).

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatBlock low-rank format.
[in]maxrankMaximum possible rank.
[in]tolRelative error tolerance.
[in]onflyWhether not to store dense blocks.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm_free()

void starsh_blrm_free ( STARSH_blrm matrix)

Free memory of a non-nested block low-rank matrix.

◆ starsh_blrm_free_mpi()

void starsh_blrm_free_mpi ( STARSH_blrm matrix)

Free memory of a non-nested block low-rank matrix.

◆ starsh_blrm_get_block()

int starsh_blrm_get_block ( STARSH_blrm matrix,
STARSH_int  i,
STARSH_int  j,
int *  shape,
int *  rank,
void **  U,
void **  V,
void **  D 
)

Get shape, rank and low-rank factors or dense representation of a block.

If block is admissible and low-rank, then its low-rank factors are returned and D is NULL (since dense block is not stored). If block is admissible and not low-rank, then its dense version is returned and U and V are NULL. If block is NOT admissible, then it is computed and returned as dense.

Parameters
[in]matrixPointer to STARSH_blrm object.
[in]iIndex of block row.
[in]jIndex of block column.
[out]shapeShape of corresponding block.
[out]rankRank of corresponding block.
[out]ULow-rank factor U.
[out]VLow-rank factor V.
[out]DDense block.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm_info()

void starsh_blrm_info ( STARSH_blrm matrix)

Print short info on non-nested block low-rank matrix.

◆ starsh_blrm_info_mpi()

void starsh_blrm_info_mpi ( STARSH_blrm matrix)

Print short info on non-nested block low-rank matrix.

◆ starsh_blrm_new()

int starsh_blrm_new ( STARSH_blrm **  matrix,
STARSH_blrf format,
int *  far_rank,
Array **  far_U,
Array **  far_V,
int  onfly,
Array **  near_D,
void *  alloc_U,
void *  alloc_V,
void *  alloc_D,
char  alloc_type 
)

Init STARSH_blrm object.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatPointer to STARSH_blrf object.
[in]far_rankArray of ranks of far-field blocks.
[in]far_UArray of low-rank factors U.
[in]far_VArray of low-rank factors V.
[in]onflyWhether not to store dense blocks.
[in]near_DArray of dense near-field blocks.
[in]alloc_UPointer to big buffer for all far_U.
[in]alloc_VPointer to big buffer for all far_V.
[in]alloc_DPointer to big buffer for all near_D.
[in]alloc_typeType of memory allocation. 1 if big buffers are used.
Returns
Error code STARSH_ERRNO.

◆ starsh_blrm_new_mpi()

int starsh_blrm_new_mpi ( STARSH_blrm **  matrix,
STARSH_blrf format,
int *  far_rank,
Array **  far_U,
Array **  far_V,
int  onfly,
Array **  near_D,
void *  alloc_U,
void *  alloc_V,
void *  alloc_D,
char  alloc_type 
)

Init STARSH_blrm object.

Parameters
[out]matrixAddress of pointer to STARSH_blrm object.
[in]formatPointer to STARSH_blrf object.
[in]far_rankArray of ranks of far-field blocks.
[in]far_UArray of low-rank factors U.
[in]far_VArray of low-rank factors V.
[in]onflyWhether not to store dense blocks.
[in]near_DArray of dense near-field blocks.
[in]alloc_UPointer to big buffer for all far_U.
[in]alloc_VPointer to big buffer for all far_V.
[in]alloc_DPointer to big buffer for all near_D.
[in]alloc_typeType of memory allocation. 1 if big buffers are used.
Returns
Error code STARSH_ERRNO.

Variable Documentation

◆ starsh_blrm_approximate

STARSH_blrm_approximate* starsh_blrm_approximate

Approximation routine, chosen by starsh_init().