STARS-H
Software for Testing Accuracy, Reliability and Scalability of Hierarchical computations
|
Block-wise Low-Rank Matrix/Tensor. More...
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_approximate * | starsh_blrm_approximate |
Block-wise Low-Rank Matrix/Tensor.
typedef struct starsh_blrm STARSH_blrm |
Typedef for block-wise low-rank matrix
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.
[in] | matrix | Block-wise low-rank matrix. |
[out] | A | Output Array object. |
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.
[in] | matrix | Block-wise low-rank matrix. |
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.
[in] | matrix | Block-wise low-rank matrix. |
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.
[in] | matrix | Block-wise low-rank matrix. |
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.
[in] | matrix | Pointer to STARSH_blrm object. |
[in] | nrhs | Number of right hand sides. |
[in] | alpha | Scalar mutliplier. |
[in] | A | Dense matrix, right havd side. |
[in] | lda | Leading dimension of A . |
[in] | beta | Scalar multiplier. |
[in] | B | Resulting dense matrix. |
[in] | ldb | Leading dimension of B. |
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.
[in] | matrix | Pointer to STARSH_blrm object. |
[in] | nrhs | Number of right hand sides. |
[in] | alpha | Scalar mutliplier. |
[in] | A | Dense matrix, right havd side. |
[in] | lda | Leading dimension of A . |
[in] | beta | Scalar multiplier. |
[in] | B | Resulting dense matrix. |
[in] | ldb | Leading dimension of B. |
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.
[in] | matrix | Pointer to STARSH_blrm object. |
[in] | nrhs | Number of right hand sides. |
[in] | alpha | Scalar mutliplier. |
[in] | A | Dense matrix, right havd side. |
[in] | lda | Leading dimension of A . |
[in] | beta | Scalar multiplier. |
[in] | B | Resulting dense matrix. |
[in] | ldb | Leading dimension of B. |
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.
[in] | matrix | Pointer to STARSH_blrm object. |
[in] | nrhs | Number of right hand sides. |
[in] | alpha | Scalar mutliplier. |
[in] | A | Dense matrix, right havd side. |
[in] | lda | Leading dimension of A . |
[in] | beta | Scalar multiplier. |
[in] | B | Resulting dense matrix. |
[in] | ldb | Leading dimension of B. |
int starsh_blrm__dna_mpi | ( | STARSH_blrm ** | matrix, |
STARSH_blrf * | format, | ||
int | maxrank, | ||
double | tol, | ||
int | onfly | ||
) |
Simply compute matrix without any approximation.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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).
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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).
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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).
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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).
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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).
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
int starsh_blrm__drsdd | ( | STARSH_blrm ** | matrix, |
STARSH_blrf * | format, | ||
int | maxrank, | ||
double | tol, | ||
int | onfly | ||
) |
Approximate each tile by randomized SVD.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
int starsh_blrm__drsdd_mpi | ( | STARSH_blrm ** | matrix, |
STARSH_blrf * | format, | ||
int | maxrank, | ||
double | tol, | ||
int | onfly | ||
) |
Approximate each tile by randomized SVD.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
int starsh_blrm__drsdd_mpi_starpu | ( | STARSH_blrm ** | matrix, |
STARSH_blrf * | format, | ||
int | maxrank, | ||
double | tol, | ||
int | onfly | ||
) |
Approximate each tile by randomized SVD.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
int starsh_blrm__drsdd_omp | ( | STARSH_blrm ** | matrix, |
STARSH_blrf * | format, | ||
int | maxrank, | ||
double | tol, | ||
int | onfly | ||
) |
Approximate each tile by randomized SVD.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
int starsh_blrm__drsdd_starpu | ( | STARSH_blrm ** | matrix, |
STARSH_blrf * | format, | ||
int | maxrank, | ||
double | tol, | ||
int | onfly | ||
) |
Approximate each tile by randomized SVD.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
int starsh_blrm__drsdd_starpu_cuda | ( | STARSH_blrm ** | matrix, |
STARSH_blrf * | format, | ||
int | maxrank, | ||
double | tol, | ||
int | onfly | ||
) |
Approximate each tile by randomized SVD.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
int starsh_blrm__drsdd_starpu_kblas | ( | STARSH_blrm ** | matrix, |
STARSH_blrf * | format, | ||
int | maxrank, | ||
double | tol, | ||
int | onfly | ||
) |
Approximate each tile by randomized SVD.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
int starsh_blrm__drsdd_starpu_kblas2 | ( | STARSH_blrm ** | matrix, |
STARSH_blrf * | format, | ||
int | maxrank, | ||
double | tol, | ||
int | onfly | ||
) |
Approximate each tile by randomized SVD.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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).
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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).
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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).
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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).
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
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).
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Block low-rank format. |
[in] | maxrank | Maximum possible rank. |
[in] | tol | Relative error tolerance. |
[in] | onfly | Whether not to store dense blocks. |
void starsh_blrm_free | ( | STARSH_blrm * | matrix | ) |
Free memory of a non-nested block low-rank matrix.
void starsh_blrm_free_mpi | ( | STARSH_blrm * | matrix | ) |
Free memory of a non-nested block low-rank 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.
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.
[in] | matrix | Pointer to STARSH_blrm object. |
[in] | i | Index of block row. |
[in] | j | Index of block column. |
[out] | shape | Shape of corresponding block. |
[out] | rank | Rank of corresponding block. |
[out] | U | Low-rank factor U. |
[out] | V | Low-rank factor V. |
[out] | D | Dense block. |
void starsh_blrm_info | ( | STARSH_blrm * | matrix | ) |
Print short info on non-nested block low-rank matrix.
void starsh_blrm_info_mpi | ( | STARSH_blrm * | matrix | ) |
Print short info on non-nested block low-rank matrix.
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.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Pointer to STARSH_blrf object. |
[in] | far_rank | Array of ranks of far-field blocks. |
[in] | far_U | Array of low-rank factors U . |
[in] | far_V | Array of low-rank factors V . |
[in] | onfly | Whether not to store dense blocks. |
[in] | near_D | Array of dense near-field blocks. |
[in] | alloc_U | Pointer to big buffer for all far_U . |
[in] | alloc_V | Pointer to big buffer for all far_V . |
[in] | alloc_D | Pointer to big buffer for all near_D . |
[in] | alloc_type | Type of memory allocation. 1 if big buffers are used. |
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.
[out] | matrix | Address of pointer to STARSH_blrm object. |
[in] | format | Pointer to STARSH_blrf object. |
[in] | far_rank | Array of ranks of far-field blocks. |
[in] | far_U | Array of low-rank factors U . |
[in] | far_V | Array of low-rank factors V . |
[in] | onfly | Whether not to store dense blocks. |
[in] | near_D | Array of dense near-field blocks. |
[in] | alloc_U | Pointer to big buffer for all far_U . |
[in] | alloc_V | Pointer to big buffer for all far_V . |
[in] | alloc_D | Pointer to big buffer for all near_D . |
[in] | alloc_type | Type of memory allocation. 1 if big buffers are used. |
STARSH_blrm_approximate* starsh_blrm_approximate |
Approximation routine, chosen by starsh_init().