Перейти к содержанию
    

Производительность современных GPU при вычислении FFT

Очень тяжелый проект, и физически и морально.

 

:bb-offtopic: Ваши слова да начальству бы в уши :)

 

По делу:

поищите статейку "FPGA implementation of a 32k accumulating FFT with 2-Gs/s throughput".

Она от 2005 года, но, ИМХО, актуальна. Там на V2Pro и V4.

А сейчас ПЛИС намного "веселее", есть где развернуться ;)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 4/5/2018 at 12:22 PM, rloc said:

Скажем, захочу перейти на radix-16, radix-32 ... Что делать в этом случае?

 

On 4/8/2018 at 10:18 AM, rloc said:

Ближе к этапу проектирования станет понятно, как проще и дешевле. 64К и 500МГц - это не конечная цель, можно и больше, важнее иметь масштабируемую структуру, чтобы начать с простого преобразования на 1К и дальше развить до 16M (как пример).

Чем закончились поиски? Удалось решить задачу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, blackfin сказал:

Удалось решить задачу?

R16 и выше - фантазии на этапе изучения современных алгоритмов FFT, увеличение основания не дает никакого выигрыша. GPU также была исключена из рассмотрения по двум причинам - большие накладные расходы на передачу данных в/из GPU и вероятно большую загрузку хоста, а не очень хочется, чтобы конечный пользователь испытывал нехватку производительности под свои задачи. Остановились на оптимальном алгоритме - R42 с учетом реализации в FPGA - конкретно тот вариант, который позволяет обрабатывать данные в потоке (streaming) из расчета по скорости 1:1 временной:частотный отсчет в единицу времени, с минимально возможной шириной полосы памяти на обработку (уменьшение потребления) и возможностью расширения по кол-ву точек обработки за счет дополнительного наращивания однотипных модулей, при исчерпании объема внутренней памяти. С ходу не могу сказать на каком конкретно алгоритме R42 остановились, человек пишет и надо понимать, разработка может растянутся на несколько лет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 minutes ago, rloc said:

С ходу не могу сказать на каком конкретно алгоритме R42 остановились, человек пишет и надо понимать, разработка может растянуться на несколько лет.

OK. Спасибо..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/27/2020 at 12:00 PM, rloc said:

R16 и выше - фантазии на этапе изучения современных алгоритмов FFT, увеличение основания не дает никакого выигрыша.

Radix-32 vs Radix-2:

Quote

This core is designed around a Radix-32 butterfly architecture. With equal performance, the memory resources and bandwidth required by our core are five times less than a design comprising five Radix-2 cores in parallel. 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, blackfin сказал:

the memory resources and bandwidth required

Если сравнивать с библиотечными ядрами FFT Altera и Xilinx, то практически любой алгоритм, отличный от R2, будет лучше. Но по удобству и гибкости использования R42 интереснее, при требованиях к ширине полосы и объему памяти близких к теоретическому минимуму.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/27/2020 at 12:00 PM, rloc said:

R16 и выше - фантазии на этапе изучения современных алгоритмов FFT, увеличение основания не дает никакого выигрыша.

 

«Одна "временная диаграмма" стОит тысячи слов»:

fft_burst_io_64r8r4r.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/15/2023 at 11:39 AM, blackfin said:

«Одна "временная диаграмма" стОит тысячи слов»:

Где посмотреть на исходники/формулы для Radix больше 16?

а то я кроме трудов nussbaumer ничего пока не видел, а там только до Radix-16.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/16/2023 at 1:40 PM, _4afc_ said:

Где посмотреть на исходники/формулы для Radix больше 16?

а то я кроме трудов nussbaumer ничего пока не видел, а там только до Radix-16.

Я делал по книге: Рабинер Л., Гоулд Б., "Теория и применение цифровой обработки сигналов", Мир, 1978.

Но и там максимальный Radix равен 8. Всё что выше - просто по аналогии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

42 minutes ago, blackfin said:

Я делал по книге: Рабинер Л., Гоулд Б., "Теория и применение цифровой обработки сигналов", Мир, 1978.

Но и там максимальный Radix равен 8. Всё что выше - просто по аналогии.

Ваш вариант Radix64 под ПЛИС? Умножители используете или только сложения и сдвиги?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/16/2023 at 3:46 PM, _4afc_ said:

Ваш вариант Radix64 под ПЛИС? Умножители используете или только сложения и сдвиги?

Да, для ПЛИС. Используются умножители из DSP48, но Radix-64 на 2**18 комплексных семплов с 32-х битной точностью не влазит в VU13P по BRAM. 🙂

Так что это пока всего лишь "игры разума".. 🙂

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 minutes ago, blackfin said:

Да, для ПЛИС. Используются умножители из DSP48, но Radix-64 на 2**18 комплексных семплов с 32-х битной точностью не влазит в VU13P по BRAM. 🙂

Так что это пока всего лишь "игры разума".. 🙂

У вас FFT262144 на R64-R64-R64 для которых приходится иметь 3-4 комплексных линий задержки длиной 131072?

 

Интересно есть вариант сделать первый "R64" с меньшей длиной задержки?

T.e. мы знаем о DIT, DIF, о возможности разбивать на меньшие FFT/iFFT, но можно ли произвести некие вычисления сразу над вошедшими 2-32 отсчётами для FFT262144?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/16/2023 at 4:41 PM, _4afc_ said:

У вас FFT262144 на R64-R64-R64 для которых приходится иметь 3-4 комплексных линий задержки длиной 131072?

Не совсем понял вопрос. У меня архитектура FFT аналогична архитектуре "burst_io" у Xilinx'а. То есть, все вычисления "in_place". Нет никаких "комплексных линий задержки".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, blackfin said:

Не совсем понял вопрос. У меня архитектура FFT аналогична архитектуре "burst_io" у Xilin'а. То есть, все вычисления "in_place". Нет никаких "комплексных линий задержки".

Я не понял что значит Radix-64 на 2**18 комплексных семплов. Задача FFT64 или FFT262144?

 

6 minutes ago, blackfin said:

Нет никаких "комплексных линий задержки".

Тогда на что расходуются BRAM в VU13P?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/16/2023 at 4:57 PM, _4afc_ said:

Я не понял что значит Radix-64 на 2**18 комплексных семплов. Задача FFT64 или FFT262144?

Тогда на что расходуются BRAM в VU13P?

Длина БПФ равна 262144. Основание БПФ (кол-во ветвей в "бабочке") равно 64.

То есть, в каждом такте БПФ вычисляются 64 новых комплексных семпла.

BRAM'ы в основном для констант.

PS. Кстати, в новых Versal'ях под константы можно использовать URAM. А их по объему больше, чем BRAM. 🙂

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...