17 #ifndef _SUTRA_GAMORA_H_
18 #define _SUTRA_GAMORA_H_
62 int nmodes,
int niter,
float *IFvalue,
int *IFrowind,
63 int *IFcolind,
int IFnz,
float *
d_TT,
float *pupil,
int size,
64 int Npts,
float scale,
float *Btt,
float *covmodes);
73 std::vector<CarmaObj<cuFloatComplex> *> d_amplipup_ngpu;
74 std::vector<CarmaObj<cuFloatComplex> *> d_newmodek_ngpu;
75 std::vector<CarmaObj<float> *> d_Btt_ngpu;
76 std::vector<CarmaObj<float> *> d_covmodes_ngpu;
77 std::vector<CarmaObj<float> *> d_term1_ngpu;
78 std::vector<CarmaObj<float> *> d_term2_ngpu;
79 std::vector<CarmaSparseObj<float> *> d_IF_ngpu;
80 std::vector<CarmaObj<float> *> d_TT_ngpu;
81 std::vector<CarmaObj<float> *> d_phase_ngpu;
82 std::vector<CarmaObj<int> *> d_wherephase_ngpu;
83 std::vector<CarmaObj<cuFloatComplex> *> d_pupfft_ngpu;
84 std::vector<CarmaObj<cuFloatComplex> *> d_Dphi_ngpu;
87 int fill_amplipup(cuFloatComplex *amplipup,
float *phase,
int *wherephase,
88 float scale,
int Npts,
int nx,
int Nx,
int puponly,
90 int cumulpsf(
float *d_odata, cuFloatComplex *d_idata,
int N,
92 int abs2complex(cuFloatComplex *d_odata, cuFloatComplex *d_idata,
int N,
95 int fill_mask(
float *d_odata,
float *d_idata,
int N,
int norm,
97 int modulus2(
float *d_odata, cuFloatComplex *d_idata,
int N,
99 int pow2(cuFloatComplex *d_odata, cuFloatComplex *d_idata,
int N,
102 cuFloatComplex *d_pupfft,
int N,
CarmaDevice *device);
103 int add2Dphi(cuFloatComplex *d_odata,
float *d_term1,
float *d_term2,
float e,
106 float *d_mask,
float scale,
int N,
CarmaDevice *device);
107 int ifftscale(cuFloatComplex *d_odata,
float scale,
int N,
this class provides the context in which CarmaObj are created
this class provides the gamora features to COMPASS
CarmaObj< cuFloatComplex > * d_Dphi
CarmaObj< cuFloatComplex > * d_pupfft
CarmaObj< float > * d_covmodes
CarmaObj< float > * d_otftel
CarmaObj< float > * d_psf
CarmaObj< float > * d_Btt
void compute_Dphi_on_mode_k(int k)
CarmaHostObj< float > * h_eigenvals
SutraGamora(CarmaContext *context, int device, char *type, int nactus, int nmodes, int niter, float *IFvalue, int *IFrowind, int *IFcolind, int IFnz, float *d_TT, float *pupil, int size, int Npts, float scale, float *Btt, float *covmodes)
CarmaObj< cuFloatComplex > * d_amplipup
CarmaObj< float > * d_eigenvals
CarmaSparseObj< float > * d_IF
CarmaObj< float > * d_term2
CarmaObj< float > * d_phase
CarmaObj< float > * d_err
CarmaObj< int > * d_wherephase
int psf_rec_roket(float *err)
CarmaObj< cuFloatComplex > * d_newmodek
CarmaContext * current_context
CarmaObj< float > * d_term1
CarmaObj< float > * d_mask
CarmaObj< float > * d_otfVii
int ifftscale(cuFloatComplex *d_odata, float scale, int N, CarmaDevice *device)
int add2Dphi(cuFloatComplex *d_odata, float *d_term1, float *d_term2, float e, int N, CarmaDevice *device)
int pow2(cuFloatComplex *d_odata, cuFloatComplex *d_idata, int N, CarmaDevice *device)
int computeOTFvii(float *d_otfVii, cuFloatComplex *d_Dphi, float *d_otftel, float *d_mask, float scale, int N, CarmaDevice *device)
int fill_term1(float *d_odata, cuFloatComplex *d_idata, cuFloatComplex *d_pupfft, int N, CarmaDevice *device)
int modulus2(float *d_odata, cuFloatComplex *d_idata, int N, CarmaDevice *device)
int fill_amplipup(cuFloatComplex *amplipup, float *phase, int *wherephase, float scale, int Npts, int nx, int Nx, int puponly, CarmaDevice *device)
int real(float *d_odata, cuFloatComplex *d_idata, int N, CarmaDevice *device)
int abs2complex(cuFloatComplex *d_odata, cuFloatComplex *d_idata, int N, CarmaDevice *device)
int fill_mask(float *d_odata, float *d_idata, int N, int norm, CarmaDevice *device)
int cumulpsf(float *d_odata, cuFloatComplex *d_idata, int N, CarmaDevice *device)