isce3 0.25.0
Loading...
Searching...
No Matches
isce3::cuda::signal::gpuSignal< T > Class Template Reference

Public Member Functions

 gpuSignal (cufftType _type)
 Constructor.
 
 ~gpuSignal ()
 Destructor.
 
void azimuthFFT (int ncolumns, int nrows)
 initiate plan for FFT in range direction for a block of complex data.
 
void rangeFFT (int ncolumns, int nrows)
 initiate plan for FFT in azimuth direction for a block of complex data.
 
void FFT2D (int ncolumns, int nrows)
 initiate plan for FFT in azimuth direction for a block of complex data.
 
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_dft
 
void nextPowerOfTwo (size_t N, size_t &fftLength)
 next power of two
 
void _configureRangeFFT (int ncolumns, int nrows)
 determine the required parameters for setting range FFT plans
 
void _configureAzimuthFFT (int ncolumns, int nrows)
 determine the required parameters for setting azimuth FFT plans
 
void dataToDevice (std::complex< T > *input)
 moving data in between device and host
 
void dataToDevice (std::valarray< std::complex< T > > &input)
 copies data from host to device
 
void dataToHost (std::complex< T > *output)
 
void dataToHost (std::valarray< std::complex< T > > &output)
 
void forward ()
 forward transforms without intermediate return
 
void forwardC2C (std::complex< T > *input, std::complex< T > *output)
 forward transforms
 
void forwardC2C (std::valarray< std::complex< T > > &input, std::valarray< std::complex< T > > &output)
 unnormalized forward complex float transform
 
void forwardZ2Z (std::complex< T > *input, std::complex< T > *output)
 unnormalized forward complex double transform
 
void forwardZ2Z (std::valarray< std::complex< T > > &input, std::valarray< std::complex< T > > &output)
 unnormalized forward complex double transform
 
void forwardD2Z (T *input, std::complex< T > *output)
 unnormalized forward double to complex double transform
 
void forward (std::complex< T > *input, std::complex< T > *output)
 
void forward (std::valarray< std::complex< T > > &input, std::valarray< std::complex< T > > &output)
 
void forwardDevMem (thrust::complex< float > *input, thrust::complex< float > *output)
 
void forwardDevMem (thrust::complex< double > *input, thrust::complex< double > *output)
 
void forwardDevMem (thrust::complex< T > *dataInPlace)
 unnormalized forward complex transform performed in place on given device data
 
void inverse ()
 inverse transforms using existing device memory
 
void inverseC2C (std::complex< T > *input, std::complex< T > *output)
 inverse transforms
 
void inverseC2C (std::valarray< std::complex< T > > &input, std::valarray< std::complex< T > > &output)
 unnormalized inverse complex float transform
 
void inverseZ2Z (std::complex< T > *input, std::complex< T > *output)
 unnormalized inverse complex double transform
 
void inverseZ2Z (std::valarray< std::complex< T > > &input, std::valarray< std::complex< T > > &output)
 unnormalized inverse complex double transform
 
void inverseZ2D (std::complex< T > *input, T *output)
 unnormalized inverse complex double to double transform
 
void inverse (std::complex< T > *input, std::complex< T > *output)
 
void inverse (std::valarray< std::complex< T > > &input, std::valarray< std::complex< T > > &output)
 
void inverseDevMem (thrust::complex< float > *input, thrust::complex< float > *output)
 
void inverseDevMem (thrust::complex< double > *input, thrust::complex< double > *output)
 
void inverseDevMem (thrust::complex< T > *dataInPlace)
 unnormalized inverse complex transform performed in place on given device data
 
void upsample (std::valarray< std::complex< T > > &input, std::valarray< std::complex< T > > &output, int row, int ncols, int upsampleFactor)
 upsample
 
void upsample (std::valarray< std::complex< T > > &input, std::valarray< std::complex< T > > &output, int row, int ncols, int upsampleFactor, std::valarray< std::complex< T > > &shiftImpact)
 normalized complex float column/range-wise upsampling
 
int getRows ()
 
int getColumns ()
 
int getNumElements ()
 
thrust::complex< T > * getDevicePtr ()
 
void forwardDevMem (thrust::complex< float > *input, thrust::complex< float > *output)
 unnormalized forward complex float transform performed on given device data
 
void forwardDevMem (thrust::complex< double > *input, thrust::complex< double > *output)
 unnormalized forward complex double transform performed on given device data
 
void forward (std::complex< float > *input, std::complex< float > *output)
 unnormalized forward complex float transform
 
void forward (std::complex< double > *input, std::complex< double > *output)
 unnormalized forward complex double transform
 
void forward (std::valarray< std::complex< float > > &input, std::valarray< std::complex< float > > &output)
 unnormalized forward complex float transform
 
void forward (std::valarray< std::complex< double > > &input, std::valarray< std::complex< double > > &output)
 unnormalized forward complex double transform
 
void inverseDevMem (thrust::complex< float > *input, thrust::complex< float > *output)
 unnormalized inverse complex float transform performed on given device data
 
void inverseDevMem (thrust::complex< double > *input, thrust::complex< double > *output)
 unnormalized inverse complex double transform performed on given device data
 
void inverse (std::complex< float > *input, std::complex< float > *output)
 unnormalized inverse complex float transform
 
void inverse (std::complex< double > *input, std::complex< double > *output)
 unnormalized inverse complex double transform
 
void inverse (std::valarray< std::complex< float > > &input, std::valarray< std::complex< float > > &output)
 unnormalized inverse complex float transform
 
void inverse (std::valarray< std::complex< double > > &input, std::valarray< std::complex< double > > &output)
 unnormalized inverse complex double transform
 

Member Function Documentation

◆ _configureAzimuthFFT()

template<class T>
void isce3::cuda::signal::gpuSignal< T >::_configureAzimuthFFT ( int ncolumns,
int nrows )
inline

determine the required parameters for setting azimuth FFT plans

sets up azimuth specific FFT parameters

Parameters
[in]ncolumnsnumber of columns
[in]nrowsnumber of rows

◆ _configureRangeFFT()

template<class T>
void isce3::cuda::signal::gpuSignal< T >::_configureRangeFFT ( int ncolumns,
int nrows )
inline

determine the required parameters for setting range FFT plans

sets range specific FFT parameters

Parameters
[in]ncolumnsnumber of columns
[in]nrowsnumber of rows

◆ azimuthFFT()

template<class T>
void isce3::cuda::signal::gpuSignal< T >::azimuthFFT ( int ncolumns,
int nrows )

initiate plan for FFT in range direction for a block of complex data.

sets up azimuth 1D FFT

azimuth direction is assumed to be in the direction of the columns of the array.

Parameters
[in]ncolumnsnumber of columns of the block of data
[in]nrowsnumber of rows of the block of data

◆ dataToDevice() [1/2]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::dataToDevice ( std::complex< T > * input)

moving data in between device and host

copies data from host to device

Parameters
[in]pointerto host data

◆ dataToDevice() [2/2]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::dataToDevice ( std::valarray< std::complex< T > > & input)

copies data from host to device

Parameters
[in]valarrayon host data

◆ FFT2D()

template<class T>
void isce3::cuda::signal::gpuSignal< T >::FFT2D ( int ncolumns,
int nrows )

initiate plan for FFT in azimuth direction for a block of complex data.

sets up 2D FFT

range direction is assumed to be in the direction of the columns of the array.

Parameters
[in]ncolumnsnumber of columns of the block of data
[in]nrowsnumber of rows of the block of data

◆ fftPlan()

template<class T>
void isce3::cuda::signal::gpuSignal< T >::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_dft

sets up 1D cufft

Parameters
[in]rankrank of the transform (1: for one dimensional and 2: for two dimensional transform)
[in]sizesize of each transform (ncols: for range FFT, nrows: for azimuth FFT)
[in]howmanynumber of FFT transforms for a block of data (nrows: for range FFT, ncols: for azimuth FFT)
[in]inembed
[in]istride
[in]idist
[in]onembed
[in]ostride
[in]odist

◆ forward() [1/5]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::forward ( )

forward transforms without intermediate return

unnormalized forward complex float transform performed in place on class data

◆ forward() [2/5]

void isce3::cuda::signal::gpuSignal< double >::forward ( std::complex< double > * input,
std::complex< double > * output )

unnormalized forward complex double transform

Parameters
[in]pointerto input block of data
[in]pointerto output block of spectrum

◆ forward() [3/5]

void isce3::cuda::signal::gpuSignal< float >::forward ( std::complex< float > * input,
std::complex< float > * output )

unnormalized forward complex float transform

Parameters
[in]pointerto input block of data
[in]pointerto output block of spectrum

◆ forward() [4/5]

void isce3::cuda::signal::gpuSignal< double >::forward ( std::valarray< std::complex< double > > & input,
std::valarray< std::complex< double > > & output )

unnormalized forward complex double transform

Parameters
[in]valarraycontaining input block of data
[in]valarraycontaining output block of spectrum

◆ forward() [5/5]

void isce3::cuda::signal::gpuSignal< float >::forward ( std::valarray< std::complex< float > > & input,
std::valarray< std::complex< float > > & output )

unnormalized forward complex float transform

Parameters
[in]valarraycontaining input block of data
[in]valarraycontaining output block of spectrum

◆ forwardC2C() [1/2]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::forwardC2C ( std::complex< T > * input,
std::complex< T > * output )

forward transforms

unnormalized forward complex float transform

Parameters
[in]pointerto input block of data
[in]pointerto output block of spectrum

◆ forwardC2C() [2/2]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::forwardC2C ( std::valarray< std::complex< T > > & input,
std::valarray< std::complex< T > > & output )

unnormalized forward complex float transform

Parameters
[in]valarraycontaining input block of data
[in]valarraycontaining output block of spectrum

◆ forwardD2Z()

template<class T>
void isce3::cuda::signal::gpuSignal< T >::forwardD2Z ( T * input,
std::complex< T > * output )

unnormalized forward double to complex double transform

Parameters
[in]pointerto input block of data
[in]pointerto output block of spectrum

◆ forwardDevMem() [1/3]

void isce3::cuda::signal::gpuSignal< double >::forwardDevMem ( thrust::complex< double > * input,
thrust::complex< double > * output )

unnormalized forward complex double transform performed on given device data

Parameters
[in]pointerto source data on device
[out]pointerto output data on device

◆ forwardDevMem() [2/3]

void isce3::cuda::signal::gpuSignal< float >::forwardDevMem ( thrust::complex< float > * input,
thrust::complex< float > * output )

unnormalized forward complex float transform performed on given device data

Parameters
[in]pointerto source data on device
[out]pointerto output data on device

◆ forwardDevMem() [3/3]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::forwardDevMem ( thrust::complex< T > * dataInPlace)

unnormalized forward complex transform performed in place on given device data

Parameters
[in]pointerto source/output data on device

◆ forwardZ2Z() [1/2]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::forwardZ2Z ( std::complex< T > * input,
std::complex< T > * output )

unnormalized forward complex double transform

Parameters
[in]pointerto input block of data
[in]pointerto output block of spectrum

◆ forwardZ2Z() [2/2]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::forwardZ2Z ( std::valarray< std::complex< T > > & input,
std::valarray< std::complex< T > > & output )

unnormalized forward complex double transform

Parameters
[in]valarraycontaining input block of data
[in]valarraycontaining output block of spectrum

◆ inverse() [1/5]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::inverse ( )

inverse transforms using existing device memory

unnormalized inverse complex float transform performed in place on class data

◆ inverse() [2/5]

void isce3::cuda::signal::gpuSignal< double >::inverse ( std::complex< double > * input,
std::complex< double > * output )

unnormalized inverse complex double transform

Parameters
[in]pointerto input block of spectrum
[in]pointerto output block of data

◆ inverse() [3/5]

void isce3::cuda::signal::gpuSignal< float >::inverse ( std::complex< float > * input,
std::complex< float > * output )

unnormalized inverse complex float transform

Parameters
[in]pointerto input block of spectrum
[in]pointerto output block of data

◆ inverse() [4/5]

void isce3::cuda::signal::gpuSignal< double >::inverse ( std::valarray< std::complex< double > > & input,
std::valarray< std::complex< double > > & output )

unnormalized inverse complex double transform

Parameters
[in]valarraycontaining input block of spectrum
[in]valarraycontaining output block of data

◆ inverse() [5/5]

void isce3::cuda::signal::gpuSignal< float >::inverse ( std::valarray< std::complex< float > > & input,
std::valarray< std::complex< float > > & output )

unnormalized inverse complex float transform

Parameters
[in]valarraycontaining input block of spectrum
[in]valarraycontaining output block of data

◆ inverseC2C() [1/2]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::inverseC2C ( std::complex< T > * input,
std::complex< T > * output )

inverse transforms

unnormalized inverse complex float transform

Parameters
[in]pointerto input block of spectrum
[in]pointerto output block of data

◆ inverseC2C() [2/2]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::inverseC2C ( std::valarray< std::complex< T > > & input,
std::valarray< std::complex< T > > & output )

unnormalized inverse complex float transform

Parameters
[in]valarraycontaining input block of spectrum
[in]valarraycontaining output block of data

◆ inverseDevMem() [1/3]

void isce3::cuda::signal::gpuSignal< double >::inverseDevMem ( thrust::complex< double > * input,
thrust::complex< double > * output )

unnormalized inverse complex double transform performed on given device data

Parameters
[in]pointerto source data on device
[out]pointerto output data on device

◆ inverseDevMem() [2/3]

void isce3::cuda::signal::gpuSignal< float >::inverseDevMem ( thrust::complex< float > * input,
thrust::complex< float > * output )

unnormalized inverse complex float transform performed on given device data

Parameters
[in]pointerto source data on device
[out]pointerto output data on device

◆ inverseDevMem() [3/3]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::inverseDevMem ( thrust::complex< T > * dataInPlace)

unnormalized inverse complex transform performed in place on given device data

Parameters
[in]pointerto source/output data on device

◆ inverseZ2D()

template<class T>
void isce3::cuda::signal::gpuSignal< T >::inverseZ2D ( std::complex< T > * input,
T * output )

unnormalized inverse complex double to double transform

Parameters
[in]pointerto input block of spectrum
[in]pointerto output block of data

◆ inverseZ2Z() [1/2]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::inverseZ2Z ( std::complex< T > * input,
std::complex< T > * output )

unnormalized inverse complex double transform

Parameters
[in]pointerto input block of spectrum
[in]pointerto output block of data

◆ inverseZ2Z() [2/2]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::inverseZ2Z ( std::valarray< std::complex< T > > & input,
std::valarray< std::complex< T > > & output )

unnormalized inverse complex double transform

Parameters
[in]valarraycontaining input block of spectrum
[in]valarraycontaining output block of data

◆ nextPowerOfTwo()

template<class T>
void isce3::cuda::signal::gpuSignal< T >::nextPowerOfTwo ( size_t N,
size_t & fftLength )

next power of two

finds next power of 2 >= given size

Parameters
[in]Nthe actual length of a signal
[in]fftLengthnext power of two

◆ rangeFFT()

template<class T>
void isce3::cuda::signal::gpuSignal< T >::rangeFFT ( int ncolumns,
int nrows )

initiate plan for FFT in azimuth direction for a block of complex data.

sets up range 1D FFT

range direction is assumed to be in the direction of the columns of the array.

Parameters
[in]ncolumnsnumber of columns of the block of data
[in]nrowsnumber of rows of the block of data

◆ upsample() [1/2]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::upsample ( std::valarray< std::complex< T > > & input,
std::valarray< std::complex< T > > & output,
int row,
int nfft,
int upsampleFactor )

upsample

normalized complex column/range-wise upsampling

Parameters
[in]valarraycontaining lo res data
[in]valarraycontaining hi res data
[in]rowsin both lo and hi res data
[in]columnsin lo res data
[in]upsamplefactor

◆ upsample() [2/2]

template<class T>
void isce3::cuda::signal::gpuSignal< T >::upsample ( std::valarray< std::complex< T > > & input,
std::valarray< std::complex< T > > & output,
int row,
int col,
int upsampleFactor,
std::valarray< std::complex< T > > & shiftImpact )

normalized complex float column/range-wise upsampling

Parameters
[in]valarraycontaining lo res data
[in]valarraycontaining hi res data
[in]rowsin both lo and hi res data
[in]columnsin lo res data
[in]upsamplefactor
[in]valarraycontaining shift impact

The documentation for this class was generated from the following files:

Generated for ISCE3.0 by doxygen 1.13.2.