58# if defined(AMREX_USE_CUDA)
59# ifdef AMREX_USE_FLOAT
62 using Complex = cuDoubleComplex;
64# elif defined(AMREX_USE_HIP)
65# ifdef AMREX_USE_FLOAT
70# elif defined(AMREX_USE_SYCL)
73# ifdef AMREX_USE_FLOAT
81# if defined(AMREX_USE_CUDA)
82# ifdef AMREX_USE_FLOAT
87# elif defined(AMREX_USE_HIP)
88 # ifdef AMREX_USE_FLOAT
93# elif defined(AMREX_USE_SYCL)
97 c[0] = a[0] * b[0] - a[1] * b[1];
98 c[1] = a[0] * b[1] + a[1] * b[0];
105# if defined(AMREX_USE_CUDA)
106 using VendorFFTPlan = cufftHandle;
107# elif defined(AMREX_USE_HIP)
108 using VendorFFTPlan = rocfft_plan;
109# elif defined(AMREX_USE_SYCL)
110 using VendorFFTPlan = oneapi::mkl::dft::descriptor<
111# ifdef AMREX_USE_FLOAT
112 oneapi::mkl::dft::precision::SINGLE,
114 oneapi::mkl::dft::precision::DOUBLE,
116 oneapi::mkl::dft::domain::REAL> *;
119# ifdef AMREX_USE_FLOAT
120 using VendorFFTPlan = fftwf_plan;
122 using VendorFFTPlan = fftw_plan;
129 enum struct direction {R2C, C2R};
135 amrex::Real* m_real_array;
137 VendorFFTPlan m_plan;
157 Complex* complex_array, direction dir,
int dim);
167 void Execute(FFTplan& fft_plan);
FFTplan CreatePlan(const amrex::IntVect &real_size, amrex::Real *const real_array, Complex *const complex_array, const direction dir, const int dim)
Definition WrapCuFFT.cpp:30