]> rtime.felk.cvut.cz Git - hercules2020/kcf.git/blob - src/fft_cufft.h
4dd0f1042e1d025ddb17f9118383a0bc10da6b5d
[hercules2020/kcf.git] / src / fft_cufft.h
1 #ifndef FFT_CUDA_H
2 #define FFT_CUDA_H
3
4
5 #include <cufft.h>
6 #include <cuda_runtime.h>
7 #include <cublas_v2.h>
8
9 #include "fft.h"
10 #include "cuda/cuda_error_check.cuh"
11 #include "pragmas.h"
12
13 struct ThreadCtx;
14
15 class cuFFT : public Fft
16 {
17 public:
18     cuFFT();
19     void init(unsigned width, unsigned height, unsigned num_of_feats, unsigned num_of_scales) override;
20     void set_window(const MatDynMem &window) override;
21     void forward(MatDynMem & real_input, ComplexMat & complex_result) override;
22     void forward_window(MatDynMem &patch_feats_in, ComplexMat & complex_result, MatDynMem &tmp) override;
23     void inverse(ComplexMat &  complex_input, MatDynMem & real_result) override;
24     ~cuFFT() override;
25 private:
26     cv::Mat m_window;
27     unsigned m_width, m_height, m_num_of_feats, m_num_of_scales;
28     cufftHandle plan_f, plan_f_all_scales, plan_fw, plan_fw_all_scales, plan_i_features,
29      plan_i_features_all_scales, plan_i_1ch, plan_i_1ch_all_scales;
30     cublasHandle_t cublas;
31 };
32
33 #endif // FFT_CUDA_H