COMPASS  5.4.4
End-to-end AO simulation tool using GPU acceleration
carma_fft.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 
18 #ifndef _CARMA_FFT_H_
19 #define _CARMA_FFT_H_
20 
21 #include <carma_obj.h>
22 #include <cufft.h>
23 
24 template <class T_in, class T_out>
25 class CarmaFFT {
26  protected:
29  cufftHandle plan;
30  cufftType type_plan;
31  int inplace;
32 
33  public:
34  CarmaFFT(long *dims_data, int inplace);
36 
37  int host2device(T_in *data);
38  int device2host(T_out *data);
41  int compute(int dir);
43  int compute(T_in *input, T_out *output, int dir);
45 };
46 
50 
54 
55 #endif // _CARMA_FFT_H_
CarmaFFT< cuDoubleComplex, cufftDoubleReal > caFFT_Z2D
Definition: carma_fft.h:53
CarmaFFT< cuDoubleComplex, cuDoubleComplex > caFFT_Z2Z
Definition: carma_fft.h:51
CarmaFFT< cufftReal, cuFloatComplex > caFFT_R2C
Definition: carma_fft.h:48
CarmaFFT< cufftDoubleReal, cuDoubleComplex > caFFT_D2Z
Definition: carma_fft.h:52
CarmaFFT< cuFloatComplex, cuFloatComplex > caFFT_C2C
Definition: carma_fft.h:47
CarmaFFT< cuFloatComplex, cufftReal > caFFT_C2R
Definition: carma_fft.h:49
this class provides the fft features to CarmaObj
Definition: carma_fft.h:25
int inplace
flag to select inplace transform or not (1 or 0)
Definition: carma_fft.h:31
cufftHandle plan
FFT plan.
Definition: carma_fft.h:29
int compute(int dir)
CarmaObj< T_out > * d_output
Output data.
Definition: carma_fft.h:28
int compute(T_in *input, T_out *output, int dir)
int host2device(T_in *data)
cufftType type_plan
FFT plan type.
Definition: carma_fft.h:30
int device2host(T_out *data)
CarmaObj< T_in > * d_input
Input data.
Definition: carma_fft.h:27
CarmaFFT(long *dims_data, int inplace)