1#ifndef MODULE_PW_MULTI_DEVICE_H
2#define MODULE_PW_MULTI_DEVICE_H
8template <
typename FPTYPE,
typename Device>
24 const std::complex<FPTYPE>* in,
25 std::complex<FPTYPE>* out);
28template <
typename FPTYPE,
typename Device>
44 const std::complex<FPTYPE>* in,
45 std::complex<FPTYPE>* out);
51 const std::complex<FPTYPE>* in,
55template <
typename FPTYPE,
typename Device>
75 const std::complex<FPTYPE>* in,
76 std::complex<FPTYPE>* out);
84 const std::complex<FPTYPE>* in,
88#if __CUDA || __UT_USE_CUDA || __ROCM || __UT_USE_ROCM
90template <
typename FPTYPE>
95 const std::complex<FPTYPE>* in,
96 std::complex<FPTYPE>* out);
99template <
typename FPTYPE>
100struct set_recip_to_real_output_op<FPTYPE,
base_device::DEVICE_GPU>
105 const std::complex<FPTYPE>* in,
106 std::complex<FPTYPE>* out);
111 const std::complex<FPTYPE>* in,
115template <
typename FPTYPE>
116struct set_real_to_recip_output_op<FPTYPE,
base_device::DEVICE_GPU>
122 const int* box_index,
123 const std::complex<FPTYPE>* in,
124 std::complex<FPTYPE>* out);
129 const int* box_index,
130 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.