STARS-H
Software for Testing Accuracy, Reliability and Scalability of Hierarchical computations
Low-rank dense routines

Set of low-rank routines for dense matrices. More...

Functions

int starsh_dense_dsvfr (int size, double *S, double tol)
 Returns rank of double precision singular values. More...
 
void starsh_dense_dlrsdd (int nrows, int ncols, double *D, int ldD, double *U, int ldU, double *V, int ldV, int *rank, int maxrank, double tol, double *work, int lwork, int *iwork)
 SVD approximation of a dense double precision matrix. More...
 
void starsh_dense_dlrrsdd (int nrows, int ncols, double *D, int ldD, double *U, int ldU, double *V, int ldV, int *rank, int maxrank, int oversample, double tol, double *work, int lwork, int *iwork)
 Randomized SVD approximation of a dense double precision matrix. More...
 
void starsh_dense_dlrqp3 (int nrows, int ncols, double *D, int ldD, double *U, int ldU, double *V, int ldV, int *rank, int maxrank, int oversample, double tol, double *work, int lwork, int *iwork)
 Rank-revealing QR approximation of a dense double precision matrix. More...
 
void starsh_dense_dlrna (int nrows, int ncols, double *D, double *U, double *V, int *rank, int maxrank, double tol, double *work, int lwork, int *iwork)
 Fake approximation schemes, that returns rank=-1. More...
 
void starsh_dense_dlrsdd_starpu (void *buffers[], void *cl_arg)
 STARPU kernel for DGESDD on a tile.
 
void starsh_dense_dlrrsdd_starpu (void *buffers[], void *cl_arg)
 STARPU kernel for 1-way randomized SVD on a tile.
 
void starsh_dense_dlrqp3_starpu (void *buffers[], void *cl_arg)
 STARPU kernel for RRQR on a tile.
 
void starsh_dense_kernel_starpu (void *buffers[], void *cl_arg)
 STARPU kernel for matrix kernel.
 
void starsh_dense_dgemm_starpu (void *buffers[], void *cl_arg)
 STARPU kernel for matrix kernel.
 
void starsh_dense_fake_init_starpu (void *buffers[], void *cl_arg)
 STARPU kernel for matrix kernel.
 

Detailed Description

Set of low-rank routines for dense matrices.

Function Documentation

◆ starsh_dense_dlrna()

void starsh_dense_dlrna ( int  nrows,
int  ncols,
double *  D,
double *  U,
double *  V,
int *  rank,
int  maxrank,
double  tol,
double *  work,
int  lwork,
int *  iwork 
)

Fake approximation schemes, that returns rank=-1.

This function calls LAPACK and BLAS routines, so integer types are int instead of STARSH_int.

Parameters
[in]nrowsNumber of rows of a matrix.
[in]ncolsNumber of columns of a matrix.
[in,out]DPointer to dense matrix.
[out]UPointer to low-rank factor U.
[out]VPointer to low-rank factor V.
[out]rankAddress of rank variable.
[in]maxrankMaximum possible rank.
[in]tolRelative error for approximation.
[in]workWorking array.
[in]lworkSize of work array.
[in]iworkTemporary integer array.

◆ starsh_dense_dlrqp3()

void starsh_dense_dlrqp3 ( int  nrows,
int  ncols,
double *  D,
int  ldD,
double *  U,
int  ldU,
double *  V,
int  ldV,
int *  rank,
int  maxrank,
int  oversample,
double  tol,
double *  work,
int  lwork,
int *  iwork 
)

Rank-revealing QR approximation of a dense double precision matrix.

This function calls LAPACK and BLAS routines, so integer types are int instead of STARSH_int.

Parameters
[in]nrowsNumber of rows of a matrix.
[in]ncolsNumber of columns of a matrix.
[in,out]DPointer to dense matrix.
[in]ldDleading dimensions of D.
[out]UPointer to low-rank factor U.
[in]ldUleading dimensions of U.
[out]VPointer to low-rank factor V.
[in]ldVleading dimensions of V.
[out]rankAddress of rank variable.
[in]maxrankMaximum possible rank.
[in]oversample
[in]tolRelative error for approximation.
[in]workWorking array.
[in]lworkSize of work array.
[in]iworkTemporary integer array.

◆ starsh_dense_dlrrsdd()

void starsh_dense_dlrrsdd ( int  nrows,
int  ncols,
double *  D,
int  ldD,
double *  U,
int  ldU,
double *  V,
int  ldV,
int *  rank,
int  maxrank,
int  oversample,
double  tol,
double *  work,
int  lwork,
int *  iwork 
)

Randomized SVD approximation of a dense double precision matrix.

This function calls LAPACK and BLAS routines, so integer types are int instead of STARSH_int.

Parameters
[in]nrowsNumber of rows of a matrix.
[in]ncolsNumber of columns of a matrix.
[in,out]DPointer to dense matrix.
[in]ldDleading dimensions of D.
[out]UPointer to low-rank factor U.
[in]ldUleading dimensions of U.
[out]VPointer to low-rank factor V.
[in]ldVleading dimensions of V.
[out]rankAddress of rank variable.
[in]maxrankMaximum possible rank.
[in]oversampleSize of oversampling subset.
[in]tolRelative error for approximation.
[in]workWorking array.
[in]lworkSize of work array.
[in]iworkTemporary integer array.

◆ starsh_dense_dlrsdd()

void starsh_dense_dlrsdd ( int  nrows,
int  ncols,
double *  D,
int  ldD,
double *  U,
int  ldU,
double *  V,
int  ldV,
int *  rank,
int  maxrank,
double  tol,
double *  work,
int  lwork,
int *  iwork 
)

SVD approximation of a dense double precision matrix.

This function calls LAPACK and BLAS routines, so integer types are int instead of STARSH_int.

Parameters
[in]nrowsNumber of rows of a matrix.
[in]ncolsNumber of columns of a matrix.
[in,out]DPointer to dense matrix.
[in]ldDleading dimensions of D.
[out]UPointer to low-rank factor U.
[in]ldUleading dimensions of U.
[out]VPointer to low-rank factor V.
[in]ldVleading dimensions of V.
[out]rankAddress of rank variable.
[in]maxrankMaximum possible rank.
[in]tolRelative error for approximation.
[in]workWorking array.
[in]lworkSize of work array.
[in]iworkTemporary integer array.

◆ starsh_dense_dsvfr()

int starsh_dense_dsvfr ( int  size,
double *  S,
double  tol 
)

Returns rank of double precision singular values.

Tries ranks size, size-1, size-2 and so on. May be accelerated by binary search, but it requires additional temporary memory to be allocated.

Parameters
[in]sizeNumber of singular values.
[in]SArray of singular values.
[in]tolRelative error tolerance.
Returns
rank in terms of relative error in Frobenius norm.