STARS-H
Software for Testing Accuracy, Reliability and Scalability of Hierarchical computations
starsh-spatial.h
Go to the documentation of this file.
1 
14 #ifndef __STARSH_SPATIAL_H__
15 #define __STARSH_SPATIAL_H__
16 
31 // Add definitions for size_t, va_list, STARSH_kernel and STARSH_particles
32 #include "starsh.h"
33 #include "starsh-particles.h"
34 
35 typedef struct starsh_ssdata
37 
39 {
42  //char dtype;
44  double beta;
46  double nu;
48  double noise;
50  double sigma;
52  double nu2;
54  double sigma2;
56  double corr;
59 
62 
74 {
139 };
140 
143 
152 {
171 };
172 
173 int starsh_ssdata_new(STARSH_ssdata **data, STARSH_int count, int ndim);
174 int starsh_ssdata_init(STARSH_ssdata **data, STARSH_int count, int ndim,
175  double *point, double beta, double nu, double noise, double sigma);
177  double *point, double sigma1, double sigma2, double beta, double nu1,
178  double nu2, double corr, double noise);
179 int starsh_ssdata_generate(STARSH_ssdata **data, STARSH_int count, int ndim,
180  double beta, double nu, double noise,
181  enum STARSH_PARTICLES_PLACEMENT place, double sigma);
183  va_list args);
184 int starsh_ssdata_generate_el(STARSH_ssdata **data, STARSH_int count, ...);
186  enum STARSH_SPATIAL_KERNEL type);
188 
189 // KERNELS
190 
191 void starsh_ssdata_block_exp_kernel_1d(int nrows, int ncols, STARSH_int *irow,
192  STARSH_int *icol, void *row_data, void *col_data, void *result,
193  int ld);
194 void starsh_ssdata_block_exp_kernel_2d(int nrows, int ncols, STARSH_int *irow,
195  STARSH_int *icol, void *row_data, void *col_data, void *result,
196  int ld);
197 void starsh_ssdata_block_exp_kernel_3d(int nrows, int ncols, STARSH_int *irow,
198  STARSH_int *icol, void *row_data, void *col_data, void *result,
199  int ld);
200 void starsh_ssdata_block_exp_kernel_4d(int nrows, int ncols, STARSH_int *irow,
201  STARSH_int *icol, void *row_data, void *col_data, void *result,
202  int ld);
203 void starsh_ssdata_block_exp_kernel_nd(int nrows, int ncols, STARSH_int *irow,
204  STARSH_int *icol, void *row_data, void *col_data, void *result,
205  int ld);
206 
207 void starsh_ssdata_block_exp_kernel_1d_simd(int nrows, int ncols,
208  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
209  void *result, int ld);
210 void starsh_ssdata_block_exp_kernel_2d_simd(int nrows, int ncols,
211  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
212  void *result, int ld);
213 void starsh_ssdata_block_exp_kernel_3d_simd(int nrows, int ncols,
214  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
215  void *result, int ld);
216 void starsh_ssdata_block_exp_kernel_4d_simd(int nrows, int ncols,
217  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
218  void *result, int ld);
219 void starsh_ssdata_block_exp_kernel_nd_simd(int nrows, int ncols,
220  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
221  void *result, int ld);
222 
223 void starsh_ssdata_block_sqrexp_kernel_1d(int nrows, int ncols,
224  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
225  void *result, int ld);
226 void starsh_ssdata_block_sqrexp_kernel_2d(int nrows, int ncols,
227  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
228  void *result, int ld);
229 void starsh_ssdata_block_sqrexp_kernel_3d(int nrows, int ncols,
230  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
231  void *result, int ld);
232 void starsh_ssdata_block_sqrexp_kernel_4d(int nrows, int ncols,
233  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
234  void *result, int ld);
235 void starsh_ssdata_block_sqrexp_kernel_nd(int nrows, int ncols,
236  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
237  void *result, int ld);
238 
239 void starsh_ssdata_block_sqrexp_kernel_1d_simd(int nrows, int ncols,
240  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
241  void *result, int ld);
242 void starsh_ssdata_block_sqrexp_kernel_2d_simd(int nrows, int ncols,
243  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
244  void *result, int ld);
245 void starsh_ssdata_block_sqrexp_kernel_3d_simd(int nrows, int ncols,
246  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
247  void *result, int ld);
248 void starsh_ssdata_block_sqrexp_kernel_4d_simd(int nrows, int ncols,
249  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
250  void *result, int ld);
251 void starsh_ssdata_block_sqrexp_kernel_nd_simd(int nrows, int ncols,
252  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
253  void *result, int ld);
254 
255 
256 void starsh_ssdata_block_exp_kernel_2d_simd_gcd(int nrows, int ncols,
257  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
258  void *result, int ld);
259 void starsh_ssdata_block_sqrexp_kernel_2d_simd_gcd(int nrows, int ncols,
260  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
261  void *result, int ld);
262 void starsh_ssdata_block_matern_kernel_2d_simd_gcd(int nrows, int ncols,
263  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
264  void *result, int ld);
265 void starsh_ssdata_block_matern2_kernel_2d_simd_gcd(int nrows, int ncols,
266  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
267  void *result, int ld);
269  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
270  void *result, int ld);
272  STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data,
273  void *result, int ld);
274 // Add definitions for other kernels after Doxygen groups have already been
275 // defined
276 #include "starsh-spatial-gsl.h"
277 
278 // Add function that copies data to GPU
279 #ifdef CUDA
280 void starsh_ssdata_togpu(STARSH_ssdata **dest, STARSH_ssdata *src);
281 void starsh_ssdata_free_gpu(STARSH_ssdata *data);
282 #endif // CUDA
283 
284 #endif // __STARSH_SPATIAL_H__
double sigma
Variance.
Definition: starsh-spatial.h:50
void starsh_ssdata_block_sqrexp_kernel_3d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Square exponential kernel for 3-dimensional spatial statistics problem.
Definition: kernel_sqrexp_3d.c:113
void starsh_ssdata_block_parsimonious_kernel_2d_simd_gcd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Matérn kernel for -dimensional spatial statistics problem.
Definition: spatial.c:1230
ssize_t STARSH_int
STARSH signed integer to support more, than MAX_INT rows/columns.
Definition: starsh.h:64
double nu
Order of Matérn kernel.
Definition: starsh-spatial.h:46
struct starsh_ssdata STARSH_ssdata
Structure for Spatial Statistics problems.
void starsh_ssdata_block_exp_kernel_2d_simd_gcd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Exponential kernel for -dimensional spatial statistics problem.
Definition: spatial.c:904
STARSH_SPATIAL_KERNEL
List of built-in kernels for starsh_ssdata_get_kernel().
Definition: starsh-spatial.h:60
double sigma2
Variance for the second variable (in the parsimonious bivariate case).
Definition: starsh-spatial.h:54
void starsh_ssdata_block_sqrexp_kernel_4d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Square exponential kernel for 4-dimensional spatial statistics problem.
Definition: kernel_sqrexp_4d.c:31
Definition: starsh-spatial.h:119
double corr
spatial range parameter (define the correlation between the two variables in the parsimonious bivaria...
Definition: starsh-spatial.h:56
Order of Matérn kernel for the second variable (in the parsimonious bivariate case).
Definition: starsh-spatial.h:167
Definition: starsh-spatial.h:131
void starsh_ssdata_block_parsimonious2_kernel_2d_simd_gcd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Matérn kernel for -dimensional spatial statistics problem.
Definition: spatial.c:1510
Smoothing parameter for Matérn kernel (nu, double).
Definition: starsh-spatial.h:157
void starsh_ssdata_block_exp_kernel_nd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Exponential kernel for n-dimensional spatial statistics problem.
Definition: kernel_exp_nd.c:31
void starsh_ssdata_block_sqrexp_kernel_1d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Square exponential kernel for 1-dimensional spatial statistics problem.
Definition: kernel_sqrexp_1d.c:113
#define ndim
Replace variable ndim with static integer value.
Definition: kernel_sin_1d.c:28
Definition: starsh-spatial.h:87
Structure for Spatial Statistics problems.
Definition: starsh-spatial.h:35
void starsh_ssdata_block_sqrexp_kernel_nd_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Square exponential kernel for n-dimensional spatial statistics problem.
Definition: kernel_sqrexp_nd.c:113
Dimensionality of space (ndim, integer).
Definition: starsh-spatial.h:153
Definition: starsh-spatial.h:75
Definition: starsh-spatial.h:79
double nu2
Order of Matérn kernel for the second variable (in the parsimonious bivariate case).
Definition: starsh-spatial.h:52
Variance for the second variable (in the parsimonious bivariate case).
Definition: starsh-spatial.h:165
Definition: starsh-spatial.h:83
int starsh_ssdata_init_parsimonious(STARSH_ssdata **data, STARSH_int count, int ndim, double *point, double sigma1, double sigma2, double beta, double nu1, double nu2, double corr, double noise)
Initialize STARSH_ssdata object by given data.
Definition: spatial.c:127
spatial range parameter (define the correlation between the two variables in the parsimonious bivaria...
Definition: starsh-spatial.h:169
STARSH_particles particles
Particles.
Definition: starsh-spatial.h:40
Definition: starsh-spatial.h:95
int starsh_ssdata_init(STARSH_ssdata **data, STARSH_int count, int ndim, double *point, double beta, double nu, double noise, double sigma)
Initialize STARSH_ssdata object by given data.
Definition: spatial.c:56
Noise or what to add to diagonal elements (noise, double).
Definition: starsh-spatial.h:159
int starsh_ssdata_generate_el(STARSH_ssdata **data, STARSH_int count,...)
Generate STARSH_ssdata object with incomplete set of parameters.
Definition: spatial.c:430
void starsh_ssdata_block_sqrexp_kernel_3d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Square exponential kernel for 3-dimensional spatial statistics problem.
Definition: kernel_sqrexp_3d.c:31
void starsh_ssdata_block_matern2_kernel_2d_simd_gcd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Matérn kernel for -dimensional spatial statistics problem.
Definition: spatial.c:1145
STARSH_SPATIAL_PARAM
List of parameters for starsh_application().
Definition: starsh-spatial.h:141
void starsh_ssdata_block_sqrexp_kernel_2d_simd_gcd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Square exponential kernel for -dimensional spatial statistics problem.
Definition: spatial.c:982
void starsh_ssdata_block_exp_kernel_1d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Exponential kernel for 1-dimensional spatial statistics problem.
Definition: kernel_exp_1d.c:31
Definition: starsh-spatial.h:111
void STARSH_kernel(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Definition: starsh.h:68
int starsh_ssdata_generate_va(STARSH_ssdata **data, STARSH_int count, va_list args)
Generate STARSH_ssdata object with incomplete set of parameters.
Definition: spatial.c:332
void starsh_ssdata_block_exp_kernel_nd_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Exponential kernel for n-dimensional spatial statistics problem.
Definition: kernel_exp_nd.c:112
STARSH_PARTICLES_PLACEMENT
Distribution of particles for starsh_particles_generate().
Definition: starsh-particles.h:51
void starsh_ssdata_block_sqrexp_kernel_2d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Square exponential kernel for 2-dimensional spatial statistics problem.
Definition: kernel_sqrexp_2d.c:113
double noise
Noise and regularization parameter.
Definition: starsh-spatial.h:48
void starsh_ssdata_block_exp_kernel_4d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Exponential kernel for 4-dimensional spatial statistics problem.
Definition: kernel_exp_4d.c:31
void starsh_ssdata_block_exp_kernel_1d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Exponential kernel for 1-dimensional spatial statistics problem.
Definition: kernel_exp_1d.c:112
Variance parameter (sigma, double).
Definition: starsh-spatial.h:163
void starsh_ssdata_block_exp_kernel_4d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Exponential kernel for 4-dimensional spatial statistics problem.
Definition: kernel_exp_4d.c:112
int starsh_ssdata_generate(STARSH_ssdata **data, STARSH_int count, int ndim, double beta, double nu, double noise, enum STARSH_PARTICLES_PLACEMENT place, double sigma)
Generate STARSH_ssdata object by given distribution.
Definition: spatial.c:201
int starsh_ssdata_new(STARSH_ssdata **data, STARSH_int count, int ndim)
Allocate memory for STARSH_ssdata object.
Definition: spatial.c:20
int starsh_ssdata_get_kernel(STARSH_kernel **kernel, STARSH_ssdata *data, enum STARSH_SPATIAL_KERNEL type)
Get kernel for spatial statistics problem.
Definition: spatial.c:836
void starsh_ssdata_block_matern_kernel_2d_simd_gcd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Matérn kernel for -dimensional spatial statistics problem.
Definition: spatial.c:1061
Definition: starsh-spatial.h:115
Definition: starsh-spatial.h:123
void starsh_ssdata_block_sqrexp_kernel_nd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Square exponential kernel for n-dimensional spatial statistics problem.
Definition: kernel_sqrexp_nd.c:31
Definition: starsh-spatial.h:127
Correlation length (beta, double).
Definition: starsh-spatial.h:155
Definition: starsh-spatial.h:107
Definition: starsh-spatial.h:99
Definition: starsh-spatial.h:91
void starsh_ssdata_block_sqrexp_kernel_4d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Square exponential kernel for 4-dimensional spatial statistics problem.
Definition: kernel_sqrexp_4d.c:113
Definition: starsh-spatial.h:103
void starsh_ssdata_block_sqrexp_kernel_1d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Square exponential kernel for 1-dimensional spatial statistics problem.
Definition: kernel_sqrexp_1d.c:31
void starsh_ssdata_block_exp_kernel_2d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Exponential kernel for 2-dimensional spatial statistics problem.
Definition: kernel_exp_2d.c:112
Definition: starsh-spatial.h:135
void starsh_ssdata_free(STARSH_ssdata *data)
Free memory of STARSH_ssdata object.
Definition: spatial.c:482
void starsh_ssdata_block_exp_kernel_3d_simd(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Exponential kernel for 3-dimensional spatial statistics problem.
Definition: kernel_exp_3d.c:112
double beta
Characteristical length of covariance.
Definition: starsh-spatial.h:44
void starsh_ssdata_block_exp_kernel_3d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Exponential kernel for 3-dimensional spatial statistics problem.
Definition: kernel_exp_3d.c:31
void starsh_ssdata_block_exp_kernel_2d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Exponential kernel for 2-dimensional spatial statistics problem.
Definition: kernel_exp_2d.c:31
void starsh_ssdata_block_sqrexp_kernel_2d(int nrows, int ncols, STARSH_int *irow, STARSH_int *icol, void *row_data, void *col_data, void *result, int ld)
Square exponential kernel for 2-dimensional spatial statistics problem.
Definition: kernel_sqrexp_2d.c:31
Distribution of particles (place, STARSH_PARTICLES_PLACEMENT).
Definition: starsh-spatial.h:161
Structure for general N-body problems.
Definition: starsh-particles.h:36