STARS-H
Software for Testing Accuracy, Reliability and Scalability of Hierarchical computations
starsh-mpi.h
Go to the documentation of this file.
1 
13 #ifndef __STARSH_MPI_H__
14 #define __STARSH_MPI_H__
15 
16 
18 // H-FORMAT //
20 
21 // Check if this is enabled in Doxygen
23 
27 // This will automatically include all entities between @{ and @} into group.
28 
30  char symm, STARSH_cluster *row_cluster, STARSH_cluster *col_cluster,
31  STARSH_int nblocks_far, STARSH_int *block_far,
32  STARSH_int nblocks_far_local, STARSH_int *block_far_local,
33  STARSH_int nblocks_near, STARSH_int *block_near,
34  STARSH_int nblocks_near_local, STARSH_int *block_near_local,
35  enum STARSH_BLRF_TYPE type);
37  char symm, STARSH_cluster *row_cluster, STARSH_cluster *col_cluster);
38 
40 // End of group
41 
42 
44 // H-MATRIX //
46 
50 // This will automatically include all entities between @{ and @} into group.
51 
52 int starsh_blrm_new_mpi(STARSH_blrm **matrix, STARSH_blrf *format,
53  int *far_rank, Array **far_U, Array **far_V, int onfly, Array **near_D,
54  void *alloc_U, void *alloc_V, void *alloc_D, char alloc_type);
55 void starsh_blrm_free_mpi(STARSH_blrm *matrix);
56 
58 // End of group
59 
60 
62 // APPROXIMATIONS //
64 
68 // This will automatically include all entities between @{ and @} into group.
69 
70 int starsh_blrm__dsdd_mpi(STARSH_blrm **matrix, STARSH_blrf *format,
71  int maxrank, double tol, int onfly);
72 int starsh_blrm__drsdd_mpi(STARSH_blrm **matrix, STARSH_blrf *format,
73  int maxrank, double tol, int onfly);
74 int starsh_blrm__dqp3_mpi(STARSH_blrm **matrix, STARSH_blrf *format,
75  int maxrank, double tol, int onfly);
76 int starsh_blrm__dna_mpi(STARSH_blrm **matrix, STARSH_blrf *format,
77  int maxrank, double tol, int onfly);
78 
80 // End of group
81 
82 
84 // MATRIX-MATRIX MULTIPLICATION //
86 
90 // This will automatically include all entities between @{ and @} into group.
91 
92 int starsh_blrm__dmml_mpi(STARSH_blrm *matrix, int nrhs, double alpha,
93  double *A, int lda, double beta, double *B, int ldb);
94 int starsh_blrm__dmml_mpi_tlr(STARSH_blrm *matrix, int nrhs, double alpha,
95  double *A, int lda, double beta, double *B, int ldb);
96 
98 // End of group
99 
100 
102 // MEASURE APPROXIMATION ERROR //
104 
108 // This will automatically include all entities between @{ and @} into group.
109 
110 double starsh_blrm__dfe_mpi(STARSH_blrm *matrix);
111 
113 // End of group
114 
115 
117 // ITERATIVE SOLVERS //
119 
123 // This will automatically include all entities between @{ and @} into group.
124 
125 int starsh_itersolvers__dcg_mpi(STARSH_blrm *matrix, int nrhs, double *B,
126  int ldb, double *X, int ldx, double tol, double *work);
127 
129 // End of group
130 
132 // End of condition
133 
134 #endif // __STARSH_MPI_H__
135 
ssize_t STARSH_int
STARSH signed integer to support more, than MAX_INT rows/columns.
Definition: starsh.h:64
STARSH_BLRF_TYPE
Enum type to show actual block low-rank format.
Definition: starsh-constants.h:101
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.
Definition: dmml.c:221
int starsh_blrf_new_from_coo_mpi(STARSH_blrf **format, STARSH_problem *problem, char symm, STARSH_cluster *row_cluster, STARSH_cluster *col_cluster, STARSH_int nblocks_far, STARSH_int *block_far, STARSH_int nblocks_far_local, STARSH_int *block_far_local, STARSH_int nblocks_near, STARSH_int *block_near, STARSH_int nblocks_near_local, STARSH_int *block_near_local, enum STARSH_BLRF_TYPE type)
Create new STARSH_blrf object on MPI node.
Definition: blrf.c:529
Non-nested block-wise low-rank format.
Definition: starsh.h:345
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).
Definition: dsdd.c:17
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.
Definition: blrm.c:325
Info about clusterization of physical data.
Definition: starsh.h:263
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).
Definition: dqp3.c:17
Matrix/tensor in matrix/tensor-free form.
Definition: starsh.h:186
N-dimensional array.
Definition: starsh.h:120
void starsh_blrm_free_mpi(STARSH_blrm *matrix)
Definition: blrm.c:444
int starsh_blrm__dna_mpi(STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
Simply compute matrix without any approximation.
Definition: dna.c:17
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.
Definition: dmml.c:17
double starsh_blrm__dfe_mpi(STARSH_blrm *matrix)
Approximation error in Frobenius norm of double precision matrix.
Definition: dfe.c:17
int starsh_itersolvers__dcg_mpi(STARSH_blrm *matrix, int nrhs, double *B, int ldb, double *X, int ldx, double tol, double *work)
Conjugate gradient method for STARSH_blrm object on MPI nodes.
Definition: cg.c:96
int starsh_blrm__drsdd_mpi(STARSH_blrm **matrix, STARSH_blrf *format, int maxrank, double tol, int onfly)
Approximate each tile by randomized SVD.
Definition: drsdd.c:27
Non-nested block low-rank matrix.
Definition: starsh.h:497
int starsh_blrf_new_tlr_mpi(STARSH_blrf **format, STARSH_problem *problem, char symm, STARSH_cluster *row_cluster, STARSH_cluster *col_cluster)
TLR partitioning on MPI nodes with 2D block cycling distribution.
Definition: blrf.c:577