The article details the implementation of a direct vectorization method for the Fast Fourier Transform (FFT) algorithm on Elbrus processors. This approach uses SIMD instructions to process multiple data tasks simultaneously, replacing the previous method of using individual vector instructions.
The implementation involves replacing standard float types with vector types like __v2sf or __v4sf, allowing the compiler to generate vectorized code. Data is reformatted into interleaved arrays to align with the requirements of vector instructions, which significantly improves execution speed.
The author demonstrates the vectorization of the Reverse and Stage components of the FFT algorithm. By integrating these components, the system can compute multiple FFTs in parallel. The process includes data conversion to and from vector form, which is embedded within the algorithm's stages.
Optimization techniques include using the bitrevd instruction for bit-reversal operations and manual loop unrolling. The author tested various stream configurations, including reading from four memory streams simultaneously, to achieve a theoretical performance of 32 bytes per clock cycle.





