Other Parts Discussed in Thread: FFTLIB
Tool/software:
Hello Team,
I had created a wrapper for C7x optimized FFT computation based on the Real-to-Complex kernel FFTLIB_fft1d_i32f_c32fc_o32fc for running C7x_0 based applications. While testing for various FFT lengths, it is observed that for N=32, we get a return of 4 (FFTLIB_ERR_INVALID_DIMENSION). Inspecting the kernel source code i.e., freertos_sdk_am275x_11_00_00_16/source/fftlib/src/fft_c7x/FFTLIB_fft1d_i32f_c32fc_o32fc/c71/FFTLIB_fft1d_i32f_c32fc_o32fc_ci.cpp, I see that in the FFTLIB_fft1d_i32fc_c32fc_o32fc_checkParams() function, there is a condition (with comment):
else if (bufParamsX->dim_x < 64 * 2) { /* Minimum number of points is 64 */
status = FFTLIB_ERR_INVALID_DIMENSION;
}
- confirm that, as per the source code, clearly, my FFT lengths of N=32 is not supported (but couldn't find this information in the FFTLIB documentation) for the C7x optimized implementation. Right? It seems the test cases for the FFTLIB_fft1d_i32f_c32fc_o32fc kernel driver seems to not include N=32 as well.
- know why the check for dim_x is for NFFT * 2? Are we expected to store bufParamsData.dim_x as NFFT * 2 as well? I had followed the test driver freertos_sdk_am275x_11_00_00_16/source/fftlib/test/fft_c7x/FFTLIB_fft1d_i32f_c32fc_o32fc/FFTLIB_fft1d_i32f_c32fc_o32fc_d.c for my FFT wrapper and it seems to set bufParamsData.dim_x as NFFT. Am I right to follow
I would really appreciate if the above queries are answered for a clearer understanding of the FFTLIB.
Regards,
Sreekanth