COMPASS  5.4.4
End-to-end AO simulation tool using GPU acceleration
sutra_kl.h
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------
2 // This file is part of COMPASS <https://anr-compass.github.io/compass/>
3 //
4 // Copyright (C) 2011-2023 COMPASS Team <https://github.com/ANR-COMPASS>
5 // All rights reserved.
6 
7 // -----------------------------------------------------------------------------
8 
16 
17 #ifndef _SUTRA_KL_H_
18 #define _SUTRA_KL_H_
19 
20 #include <carma.h>
21 #include <carma_host_obj.h>
22 #include <carma_obj.h>
23 
24 class SutraKL {
25  public:
26  int device; // # device
27  long dim; // dim of final array
28  long nr; // # radial points
29  long np; // # of elements
30  long nkl; // # of functions in the basis
31  long nord; // # number of radial orders
32 
33  CarmaObj<float> *d_rabas; // the radial array of the basis
34  CarmaObj<float> *d_azbas; // the azimuthal array of the basis
35  CarmaHostObj<int> *h_ord; // the radial orders of the basis
36  CarmaObj<int> *d_ord; // the radial orders of the basis
39 
40  // Florian features
45 
46  CarmaContext *current_context; // the context in which it has been created
47  public:
48  SutraKL(CarmaContext *context, long dim, long nr, long np, long nkl,
49  long nord, int device);
51 
52  int do_compute(float alpha, float ampli, float *odata, int nkl, int size,
53  int xoff, int yoff);
54  int do_compute(float ampli, float *odata, int nkl, int size, int xoff,
55  int yoff);
56  int do_compute(float *odata, int nkl, int size, int xoff, int yoff);
57  int do_combi(float *com, float *odata, int size, int xoff, int yoff);
58 
59  // Florian features
60  int get_flokl();
61 };
62 int getkl(float alpha, float ampli, float *d_odata, float *rabas, float *azbas,
63  float *cr, float *cp, int nr, int np, int nx, int Nx, int xoff,
64  int yoff);
65 int getkl(float ampli, float *d_odata, float *rabas, float *azbas, float *cr,
66  float *cp, int nr, int np, int nx, int Nx, int xoff, int yoff);
67 int getkl(float *d_odata, float *rabas, float *azbas, float *cr, float *cp,
68  int nr, int np, int nx, int Nx, int xoff, int yoff);
69 int combikl(float *com, int nkl, float *d_odata, float *rabas, int *h_ord,
70  float *azbas, float *cr, float *cp, int nr, int np, int nx, int Nx,
71  int xoff, int yoff);
72 int cget_flokl(long nkl, long dim, float *covmat, float *filter, float *bas);
73 // template <class T> void comp_kl(int threads, int blocks, T *d_idata, T
74 // *d_odata, int N);
75 
76 #endif // _SUTRA_KL_H_
this class provides the context in which CarmaObj are created
Definition: carma_context.h:79
this class provides the kl features to COMPASS
Definition: sutra_kl.h:24
int do_combi(float *com, float *odata, int size, int xoff, int yoff)
CarmaObj< int > * d_ord
Definition: sutra_kl.h:36
int device
Definition: sutra_kl.h:26
long dim
Definition: sutra_kl.h:27
CarmaObj< float > * d_rabas
Definition: sutra_kl.h:33
int get_flokl()
CarmaObj< float > * d_azbas
Definition: sutra_kl.h:34
CarmaObj< float > * d_cp
Definition: sutra_kl.h:38
CarmaHostObj< int > * h_ord
Definition: sutra_kl.h:35
CarmaContext * current_context
Definition: sutra_kl.h:46
CarmaObj< float > * d_filter
Definition: sutra_kl.h:42
long nord
Definition: sutra_kl.h:31
CarmaObj< float > * d_evals
Definition: sutra_kl.h:44
int do_compute(float alpha, float ampli, float *odata, int nkl, int size, int xoff, int yoff)
int do_compute(float *odata, int nkl, int size, int xoff, int yoff)
int do_compute(float ampli, float *odata, int nkl, int size, int xoff, int yoff)
SutraKL(CarmaContext *context, long dim, long nr, long np, long nkl, long nord, int device)
long np
Definition: sutra_kl.h:29
long nkl
Definition: sutra_kl.h:30
CarmaObj< float > * d_covmat
Definition: sutra_kl.h:41
long nr
Definition: sutra_kl.h:28
CarmaObj< float > * d_cr
Definition: sutra_kl.h:37
CarmaObj< float > * d_bas
Definition: sutra_kl.h:43
int cget_flokl(long nkl, long dim, float *covmat, float *filter, float *bas)
int getkl(float alpha, float ampli, float *d_odata, float *rabas, float *azbas, float *cr, float *cp, int nr, int np, int nx, int Nx, int xoff, int yoff)
int combikl(float *com, int nkl, float *d_odata, float *rabas, int *h_ord, float *azbas, float *cr, float *cp, int nr, int np, int nx, int Nx, int xoff, int yoff)