В статье описывается метод прямой векторизации алгоритма быстрого преобразования Фурье (БПФ) для процессоров Эльбрус. В отличие от предыдущих подходов, здесь векторные инструкции SIMD используются для одновременного выполнения нескольких независимых задач, что позволяет ускорить вычисления.

Для реализации прямой векторизации стандартные типы данных float заменяются на векторные __v2sf или __v4sf, что заставляет компилятор генерировать код с использованием SIMD-инструкций. Данные предварительно преобразуются в форму перемежённых массивов, соответствующую требованиям векторных инструкций.

Автор векторизует основные этапы алгоритма: Reverse и Stage. Объединение этих компонентов позволяет вычислять несколько БПФ параллельно. Процедуры преобразования данных в векторную форму и обратно интегрированы непосредственно в код этапов алгоритма для повышения эффективности.

В работе применяются аппаратные инструкции процессора, такие как bitrevd для операций перестановки битов, а также ручная раскрутка циклов. Эксперименты с чтением из нескольких потоков памяти позволили достичь теоретической скорости обработки данных до 32 байт за такт.