37 int32_t *highRadixDecompositions)
39 int32_t fftSize = pKerInitArgs->
fftSize;
40 int32_t batchSize = pKerInitArgs->
batchSize;
41 uint32_t interleave = pKerInitArgs->
interleave;
45 *highRadixDecompositions = 0;
46 if (fftSize <= MMA_SIZE/2) {
48 }
else if (fftSize == MMA_SIZE) {
50 }
else if (fftSize == MMA_SIZE*2) {
51 if (batchSize < MMA_SIZE/2) {
52 *highRadixDecompositions = 1;
53 }
else if (batchSize == MMA_SIZE/2) {
55 *highRadixDecompositions = 1;
63 *highRadixDecompositions = 1;
78 int32_t dftSmall, dftLarge, highRadixDecompositions;
81 printf(
"In FFTLIB_FFT_fft_ixX_cxX_oxX_init_checkParams()..\n");
103 &highRadixDecompositions);
106 #if FFTLIB_DEBUGPRINT
107 printf(
"About to call FFTLIB_FFT_dftSmall_ixX_cxX_oxX_init_checkParams()..\n");
118 #if FFTLIB_DEBUGPRINT
119 printf(
"About to call FFTLIB_FFT_dftLarge_ixX_cxX_oxX_init_checkParams()..\n");
129 if (highRadixDecompositions) {
130 #if FFTLIB_DEBUGPRINT
131 printf(
"About to call FFTLIB_FFT_highRadixDecompositions_ixX_cxX_oxX_init_checkParams()..\n");
147 const void *restrict pX,
148 const void *restrict pW,
149 const void *restrict pY)
153 if ((pX == NULL) || (pW == NULL) || (pY == NULL) ) {
220 int32_t dftSmall, dftLarge, highRadixDecompositions;
222 #if FFTLIB_DEBUGPRINT
223 printf(
"In FFTLIB_FFT_fft_ixX_cxX_oxX_init()..\n");
240 pKerPrivArgs->
mmaSize = MMA_SIZE;
241 pKerPrivArgs->
initArgs = *pKerInitArgs;
248 &highRadixDecompositions);
251 #if FFTLIB_DEBUGPRINT
252 printf(
"About to call FFTLIB_FFT_dftSmall_ixX_cxX_oxX_init()..\n");
264 #if FFTLIB_DEBUGPRINT
265 printf(
"About to call FFTLIB_FFT_dftLarge_ixX_cxX_oxX_init()..\n");
276 if (highRadixDecompositions) {
277 #if FFTLIB_DEBUGPRINT
278 printf(
"About to call FFTLIB_FFT_highRadixDecompositions_ixX_cxX_oxX_init()..\n");
301 int32_t MMA_SIZE = pKerPrivArgs->
mmaSize;
302 int32_t dftSmall, dftLarge, highRadixDecompositions;
304 #if FFTLIB_DEBUGPRINT
305 printf(
"In FFTLIB_FFT_fft_ixX_cxX_oxX_exec()..\n");
313 &highRadixDecompositions);
316 #if FFTLIB_DEBUGPRINT
317 printf(
"About to call FFTLIB_FFT_dftSmall_ixX_cxX_oxX_exec()..\n");
328 #if FFTLIB_DEBUGPRINT
329 printf(
"About to call FFTLIB_FFT_dftLarge_ixX_cxX_oxX_exec()..\n");
339 if (highRadixDecompositions) {
340 #if FFTLIB_DEBUGPRINT
341 printf(
"About to call FFTLIB_FFT_highRadixDecompositions_ixX_cxX_oxX_exec()..\n");
void FFTLIB_FFT_fft_ixX_cxX_oxX_determineKernelVariant(const FFTLIB_FFT_fft_ixX_cxX_oxX_InitArgs *pKerInitArgs, int32_t MMA_SIZE, int32_t *dftSmall, int32_t *dftLarge, int32_t *highRadixDecompositions)
This is an internal function that is used to determine which FFT kernel variant to call for optimal D...
template FFTLIB_STATUS FFTLIB_FFT_fft_ixX_cxX_oxX_twGen< int32_t >(const FFTLIB_FFT_fft_ixX_cxX_oxX_InitArgs *pKerInitArgs, void *restrict pW, const FFTLIB_bufParams1D_t *bufParamsW)
template FFTLIB_STATUS FFTLIB_FFT_fft_ixX_cxX_oxX_getSizes< FFTLIB_INT16 >(const FFTLIB_FFT_fft_ixX_cxX_oxX_InitArgs *pKerInitArgs, FFTLIB_bufParams1D_t *bufParamsX, FFTLIB_bufParams1D_t *bufParamsW, FFTLIB_bufParams1D_t *bufParamsY)
template FFTLIB_STATUS FFTLIB_FFT_fft_ixX_cxX_oxX_twGen< int16_t >(const FFTLIB_FFT_fft_ixX_cxX_oxX_InitArgs *pKerInitArgs, void *restrict pW, const FFTLIB_bufParams1D_t *bufParamsW)
template FFTLIB_STATUS FFTLIB_FFT_fft_ixX_cxX_oxX_getSizes< FFTLIB_INT32 >(const FFTLIB_FFT_fft_ixX_cxX_oxX_InitArgs *pKerInitArgs, FFTLIB_bufParams1D_t *bufParamsX, FFTLIB_bufParams1D_t *bufParamsW, FFTLIB_bufParams1D_t *bufParamsY)
void * FFTLIB_kernelHandle
Handle type for FFTLIB operations.
FFTLIB_STATUS_NAME
The enumeration of all status codes.
@ FFTLIB_ERR_NOT_IMPLEMENTED
@ FFTLIB_ERR_NULL_POINTER
#define FFTLIB_MMA_SIZE_16_BIT
type is 16-bit integers
#define FFTLIB_MMA_SIZE_32_BIT
type is 32-bit integers
FFTLIB_STATUS FFTLIB_FFT_dftLarge_ixX_cxX_oxX_init_checkParams(FFTLIB_kernelHandle handle, const FFTLIB_bufParams1D_t *bufParamsX, const FFTLIB_bufParams1D_t *bufParamsW, const FFTLIB_bufParams1D_t *bufParamsY, const FFTLIB_FFT_dftLarge_ixX_cxX_oxX_InitArgs *pKerInitArgs)
This function checks the validity of the parameters passed to FFTLIB_FFT_dftLarge_ixX_cxX_oxX_init fu...
FFTLIB_STATUS FFTLIB_FFT_dftLarge_ixX_cxX_oxX_init(FFTLIB_kernelHandle handle, const FFTLIB_bufParams1D_t *bufParamsX, const FFTLIB_bufParams1D_t *bufParamsW, const FFTLIB_bufParams1D_t *bufParamsY, const FFTLIB_FFT_dftLarge_ixX_cxX_oxX_InitArgs *pKerInitArgs)
This function should be called before the FFTLIB_FFT_dftLarge_ixX_cxX_oxX_exec function is called....
FFTLIB_STATUS FFTLIB_FFT_dftLarge_ixX_cxX_oxX_exec(FFTLIB_kernelHandle handle, const void *restrict pX, const void *restrict pW, void *restrict pY)
This function is the main kernel compute function.
FFTLIB_STATUS FFTLIB_FFT_dftSmall_ixX_cxX_oxX_init_checkParams(FFTLIB_kernelHandle handle, const FFTLIB_bufParams1D_t *bufParamsX, const FFTLIB_bufParams1D_t *bufParamsW, const FFTLIB_bufParams1D_t *bufParamsY, const FFTLIB_FFT_dftSmall_ixX_cxX_oxX_InitArgs *pKerInitArgs)
This function checks the validity of the parameters passed to FFTLIB_FFT_dftSmall_ixX_cxX_oxX_init fu...
FFTLIB_STATUS FFTLIB_FFT_dftSmall_ixX_cxX_oxX_init(FFTLIB_kernelHandle handle, FFTLIB_bufParams1D_t *bufParamsX, FFTLIB_bufParams1D_t *bufParamsW, FFTLIB_bufParams1D_t *bufParamsY, FFTLIB_FFT_dftSmall_ixX_cxX_oxX_InitArgs *pKerInitArgs)
This function should be called before the FFTLIB_FFT_dftSmall_ixX_cxX_oxX_exec function is called....
FFTLIB_STATUS FFTLIB_FFT_dftSmall_ixX_cxX_oxX_exec(FFTLIB_kernelHandle handle, void *restrict pX, void *restrict pW, void *restrict pY)
This function is the main kernel compute function.
int32_t FFTLIB_FFT_fft_ixX_cxX_oxX_getHandleSize(FFTLIB_FFT_fft_ixX_cxX_oxX_InitArgs *pKerInitArgs)
This is a query function to calculate the size of internal handle.
FFTLIB_STATUS FFTLIB_FFT_fft_ixX_cxX_oxX_exec_checkParams(FFTLIB_kernelHandle handle, const void *restrict pX, const void *restrict pW, const void *restrict pY)
This function checks the validity of the parameters passed to FFTLIB_FFT_fft_ixX_cxX_oxX_exec functio...
FFTLIB_STATUS FFTLIB_FFT_fft_ixX_cxX_oxX_init(FFTLIB_kernelHandle handle, FFTLIB_bufParams1D_t *bufParamsX, FFTLIB_bufParams1D_t *bufParamsW, FFTLIB_bufParams1D_t *bufParamsY, const FFTLIB_FFT_fft_ixX_cxX_oxX_InitArgs *pKerInitArgs)
This function should be called before the FFTLIB_FFT_fft_ixX_cxX_oxX_exec function is called....
FFTLIB_STATUS FFTLIB_FFT_fft_ixX_cxX_oxX_twGen(const FFTLIB_FFT_fft_ixX_cxX_oxX_InitArgs *pKerInitArgs, void *pW, const FFTLIB_bufParams1D_t *bufParamsW)
This is a utility function that generates the computational matrix (DFT matrix and twiddle factors) i...
FFTLIB_STATUS FFTLIB_FFT_fft_ixX_cxX_oxX_getSizes(const FFTLIB_FFT_fft_ixX_cxX_oxX_InitArgs *pKerInitArgs, FFTLIB_bufParams1D_t *bufParamsX, FFTLIB_bufParams1D_t *bufParamsW, FFTLIB_bufParams1D_t *bufParamsY)
This is a query function to calculate the sizes of input, output and the computational matrix buffers...
FFTLIB_STATUS FFTLIB_FFT_fft_ixX_cxX_oxX_init_checkParams(FFTLIB_kernelHandle handle, const FFTLIB_bufParams1D_t *bufParamsX, const FFTLIB_bufParams1D_t *bufParamsW, const FFTLIB_bufParams1D_t *bufParamsY, const FFTLIB_FFT_fft_ixX_cxX_oxX_InitArgs *pKerInitArgs)
This function checks the validity of the parameters passed to FFTLIB_FFT_fft_ixX_cxX_oxX_init functio...
FFTLIB_STATUS FFTLIB_FFT_fft_ixX_cxX_oxX_exec(FFTLIB_kernelHandle handle, void *restrict pX, void *restrict pW, void *restrict pY)
This function is the main kernel compute function.
FFTLIB_STATUS FFTLIB_FFT_highRadixDecompositions_ixX_cxX_oxX_init(FFTLIB_kernelHandle handle, FFTLIB_bufParams1D_t *bufParamsX, FFTLIB_bufParams1D_t *bufParamsW, FFTLIB_bufParams1D_t *bufParamsY, FFTLIB_FFT_highRadixDecompositions_ixX_cxX_oxX_InitArgs *pKerInitArgs)
This function should be called before the FFTLIB_FFT_highRadixDecompositions_ixX_cxX_oxX_exec functio...
FFTLIB_STATUS FFTLIB_FFT_highRadixDecompositions_ixX_cxX_oxX_exec(FFTLIB_kernelHandle handle, void *restrict pX, void *restrict pW, void *restrict pY)
This function is the main kernel compute function.
FFTLIB_STATUS FFTLIB_FFT_highRadixDecompositions_ixX_cxX_oxX_init_checkParams(FFTLIB_kernelHandle handle, const FFTLIB_bufParams1D_t *bufParamsX, const FFTLIB_bufParams1D_t *bufParamsW, const FFTLIB_bufParams1D_t *bufParamsY, const FFTLIB_FFT_highRadixDecompositions_ixX_cxX_oxX_InitArgs *pKerInitArgs)
This function checks the validity of the parameters passed to FFTLIB_FFT_highRadixDecompositions_ixX_...
Structure containing the parameters for DFT computation.
Structure containing the parameters for DFT computation.
Structure containing the parameters for DFT computation.
uint32_t interleave
Flag to indicate if the real and imaginary parts of data are interleaved or not. A value of 1 indicat...
uint32_t fftSize
Size of each channel's data in terms of number of complex points.
uint32_t batchSize
Size of the batch in terms of number of channels of DFT's.
Structure that is reserved for internal use by the kernel.
union FFTLIB_FFT_fft_ixX_cxX_oxX_PrivArgs::@0 privArgs
FFTLIB_FFT_dftSmall_ixX_cxX_oxX_PrivArgs dftSmall
Structure to maintain the internal use parameters of FFTLIB_FFT_dftSmall_ixX_cxX_oxX kernel
FFTLIB_FFT_highRadixDecompositions_ixX_cxX_oxX_PrivArgs highRadixDecompositions
Structure to maintain the internal use parameters of FFTLIB_FFT_highRadixDecompositions_ixX_cxX_oxX k...
int32_t mmaSize
Field to maintain the MMA vector width value
FFTLIB_FFT_fft_ixX_cxX_oxX_InitArgs initArgs
Structure holding initialization parameters
FFTLIB_FFT_dftLarge_ixX_cxX_oxX_PrivArgs dftLarge
Structure to maintain the internal use parameters of FFTLIB_FFT_dftLarge_ixX_cxX_oxX kernel
Structure containing the parameters for DFT computation.
A structure for a 1 dimensional buffer descriptor.
uint32_t data_type
Values are of type FFTLIB_data_type_e.