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