1#ifndef MODULE_PW_MULTI_DEVICE_H
2#define MODULE_PW_MULTI_DEVICE_H
9template <
typename FPTYPE,
typename Device>
25 const std::complex<FPTYPE>* in,
26 std::complex<FPTYPE>* out);
29template <
typename FPTYPE,
typename Device>
45 const std::complex<FPTYPE>* in,
46 std::complex<FPTYPE>* out);
52 const std::complex<FPTYPE>* in,
56template <
typename FPTYPE,
typename Device>
76 const std::complex<FPTYPE>* in,
77 std::complex<FPTYPE>* out);
85 const std::complex<FPTYPE>* in,
89#if __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM
91template <
typename FPTYPE>
96 const std::complex<FPTYPE>* in,
97 std::complex<FPTYPE>* out);
100template <
typename FPTYPE>
101struct set_recip_to_real_output_op<FPTYPE,
base_device::DEVICE_GPU>
106 const std::complex<FPTYPE>* in,
107 std::complex<FPTYPE>* out);
112 const std::complex<FPTYPE>* in,
116template <
typename FPTYPE>
117struct set_real_to_recip_output_op<FPTYPE,
base_device::DEVICE_GPU>
123 const int* box_index,
124 const std::complex<FPTYPE>* in,
125 std::complex<FPTYPE>* out);
130 const int* box_index,
131 const std::complex<FPTYPE>* in,
void operator()(const int npwk, const int *box_index, const std::complex< FPTYPE > *in, std::complex< FPTYPE > *out)
Set the 3D fft box for fft transfrom between the recip and real space. To map the 1D psi(1D continuou...
void operator()(const int npw_k, const int nxyz, const bool add, const FPTYPE factor, const int *box_index, const std::complex< FPTYPE > *in, std::complex< FPTYPE > *out)
Calculate the outputs after the FFT translation of real_to_recip.
void operator()(const int nrxx, const bool add, const FPTYPE factor, const std::complex< FPTYPE > *in, std::complex< FPTYPE > *out)
Calculate the outputs after the FFT translation of recip_to_real.