When configured for TP_API=0
, i.e. iobuffer API, the FFT will default to use ping-pong buffers for performance. However, for the FFT, the resulting buffers can be very large and can limit the point size achievable by a single kernel. It is possible to apply the single_buffer constraint to the input and/or output buffers to reduce the memory cost of the FFT, though this will come at the cost of reduced performance. By this means an FFT with TT_DATA=cint16
of TP_POINT_SIZE=4096
can be made to fit in a single kernel. The following code shows how such a constraint may be applied.
xf::dsp::aie::fft::dit_1ch::fft_ifft_dit_1ch_graph<DATA_TYPE, TWIDDLE_TYPE, POINT_SIZE, FFT_NIFFT, SHIFT, CASC_LEN, DYN_PT_SIZE, WINDOW_VSIZE, API_IO, PARALLEL_POWER> fftGraph; single_buffer(fftGraph.FFTwinproc.m_fftKernels[0].in[0]);