ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
fft_cuda.h
Go to the documentation of this file.
1#ifndef FFT_CUDA_H
2#define FFT_CUDA_H
3
4#include "fft_base.h"
5#include "cufft.h"
6#include "cuda_runtime.h"
7namespace ModulePW
8{
9template <typename FPTYPE>
10class FFT_CUDA : public FFT_BASE<FPTYPE>
11{
12 public:
15
16 void setupFFT() override;
17
18 void clear() override;
19
20 void cleanFFT() override;
21
29 void initfft(int nx_in,
30 int ny_in,
31 int nz_in) override;
32
37 std::complex<FPTYPE>* get_auxr_3d_data() const override;
38
46 void fft3D_forward(std::complex<FPTYPE>* in,
47 std::complex<FPTYPE>* out) const override;
55 void fft3D_backward(std::complex<FPTYPE>* in,
56 std::complex<FPTYPE>* out) const override;
57 private:
58 cufftHandle c_handle = {};
59 cufftHandle z_handle = {};
60
61 std::complex<float>* c_auxr_3d = nullptr; // fft space
62 std::complex<double>* z_auxr_3d = nullptr; // fft space
63
64};
65
66} // namespace ModulePW
67#endif
Definition fft_base.h:9
virtual int int nz_in
Definition fft_base.h:21
virtual int ny_in
Definition fft_base.h:20
Definition fft_cuda.h:11
void setupFFT() override
Setup the fft plan and data as pure virtual function.
void fft3D_backward(std::complex< FPTYPE > *in, std::complex< FPTYPE > *out) const override
Backward FFT in 3D.
void clear() override
Clear the fft data as pure virtual function.
cufftHandle z_handle
Definition fft_cuda.h:59
void fft3D_forward(std::complex< FPTYPE > *in, std::complex< FPTYPE > *out) const override
Forward FFT in 3D.
std::complex< FPTYPE > * get_auxr_3d_data() const override
Get the real space data.
void cleanFFT() override
Clean the fft plan as pure virtual function.
FFT_CUDA()
Definition fft_cuda.h:13
~FFT_CUDA()
Definition fft_cuda.h:14
cufftHandle c_handle
Definition fft_cuda.h:58
void initfft(int nx_in, int ny_in, int nz_in) override
Initialize the fft parameters.
Definition fft_cuda.cpp:9
std::complex< double > * z_auxr_3d
Definition fft_cuda.h:62
std::complex< float > * c_auxr_3d
Definition fft_cuda.h:61
Definition pw_op.cpp:3