9#include <thrust/complex.h>
11namespace isce3::cuda::signal {
19 gpuSignal(cufftType _type);
34 void rangeFFT(
int ncolumns,
int nrows);
41 void FFT2D(
int ncolumns,
int nrows);
46 void fftPlan(
int rank,
int* n,
int howmany,
47 int* inembed,
int istride,
int idist,
48 int* onembed,
int ostride,
int odist);
61 void dataToDevice(std::valarray<std::complex<T>> &input);
62 void dataToHost(std::complex<T> *output);
63 void dataToHost(std::valarray<std::complex<T>> &output);
69 void forwardC2C(std::complex<T> *input, std::complex<T> *output);
70 void forwardC2C(std::valarray<std::complex<T>> &input,
71 std::valarray<std::complex<T>> &output);
72 void forwardZ2Z(std::complex<T> *input, std::complex<T> *output);
73 void forwardZ2Z(std::valarray<std::complex<T>> &input,
74 std::valarray<std::complex<T>> &output);
75 void forwardD2Z(T *input, std::complex<T> *output);
77 void forward(std::complex<T> *input, std::complex<T> *output);
78 void forward(std::valarray<std::complex<T>> &input,
79 std::valarray<std::complex<T>> &output);
93 void inverseC2C(std::complex<T> *input, std::complex<T> *output);
94 void inverseC2C(std::valarray<std::complex<T>> &input,
95 std::valarray<std::complex<T>> &output);
96 void inverseZ2Z(std::complex<T> *input, std::complex<T> *output);
97 void inverseZ2Z(std::valarray<std::complex<T>> &input,
98 std::valarray<std::complex<T>> &output);
99 void inverseZ2D(std::complex<T> *input, T *output);
101 void inverse(std::complex<T> *input, std::complex<T> *output);
102 void inverse(std::valarray<std::complex<T>> &input,
103 std::valarray<std::complex<T>> &output);
114 void upsample(std::valarray<std::complex<T>> &input,
115 std::valarray<std::complex<T>> &output,
119 void upsample(std::valarray<std::complex<T>> &input,
120 std::valarray<std::complex<T>> &output,
124 std::valarray<std::complex<T>> &shiftImpact);
126 int getRows() {
return _rows;};
127 int getColumns() {
return _columns;};
128 int getNumElements() {
return _n_elements;};
135 cufftType _cufft_type;
172 std::valarray<std::complex<T>> &input,
173 std::valarray<std::complex<T>> &output);
178 std::valarray<std::complex<T>> &input,
179 std::valarray<std::complex<T>> &output,
180 std::valarray<std::complex<T>> &shiftImpact);
Definition gpuSignal.h:14
void forward()
forward transforms without intermediate return
Definition gpuSignal.cu:345
void forwardZ2Z(std::complex< T > *input, std::complex< T > *output)
unnormalized forward complex double transform
Definition gpuSignal.cu:479
void _configureRangeFFT(int ncolumns, int nrows)
determine the required parameters for setting range FFT plans
Definition gpuSignal.cu:223
void inverse()
inverse transforms using existing device memory
Definition gpuSignal.cu:635
void upsample(std::valarray< std::complex< T > > &input, std::valarray< std::complex< T > > &output, int row, int ncols, int upsampleFactor)
upsample
Definition gpuSignal.cu:1005
void inverseZ2D(std::complex< T > *input, T *output)
unnormalized inverse complex double to double transform
Definition gpuSignal.cu:844
void FFT2D(int ncolumns, int nrows)
initiate plan for FFT in azimuth direction for a block of complex data.
Definition gpuSignal.cu:155
void _configureAzimuthFFT(int ncolumns, int nrows)
determine the required parameters for setting azimuth FFT plans
Definition gpuSignal.cu:256
void nextPowerOfTwo(size_t N, size_t &fftLength)
next power of two
Definition gpuSignal.cu:206
void forwardC2C(std::complex< T > *input, std::complex< T > *output)
forward transforms
Definition gpuSignal.cu:405
void forwardD2Z(T *input, std::complex< T > *output)
unnormalized forward double to complex double transform
Definition gpuSignal.cu:553
void inverseC2C(std::complex< T > *input, std::complex< T > *output)
inverse transforms
Definition gpuSignal.cu:695
void rangeFFT(int ncolumns, int nrows)
initiate plan for FFT in azimuth direction for a block of complex data.
Definition gpuSignal.cu:123
void inverseZ2Z(std::complex< T > *input, std::complex< T > *output)
unnormalized inverse complex double transform
Definition gpuSignal.cu:770
void fftPlan(int rank, int *n, int howmany, int *inembed, int istride, int idist, int *onembed, int ostride, int odist)
initiate cuFFT plan for a block of complex data input parameters cuFFT interface for fftw_plan_many_d...
Definition gpuSignal.cu:182
void dataToDevice(std::complex< T > *input)
moving data in between device and host
Definition gpuSignal.cu:288
void azimuthFFT(int ncolumns, int nrows)
initiate plan for FFT in range direction for a block of complex data.
Definition gpuSignal.cu:139
~gpuSignal()
Destructor.
Definition gpuSignal.cu:106
Definition GDALDataTypeUtil.h:10