реклама на сайте
подробности

 
 
> Производительность современных GPU при вычислении FFT
rloc
сообщение Apr 4 2018, 21:05
Сообщение #1


Узкополосный широкополосник
******

Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462



Коллеги, подскажите, какой максимальной производительности можно достичь на современных GPU при вычислении FFT 64К комплексных точек, 24 бит, radix-4 или более, с одинарной и двойной точностью? Среда разработки не имеет значения, нужно понять потолок производительности, с учетом полосы памяти. Если GPU умеет вычислять в потоке (streaming), то интересует минимальное время между загрузкой новых данных и выгрузкой обработанных.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
faa
сообщение Apr 7 2018, 13:00
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 726
Регистрация: 14-09-06
Из: Москва
Пользователь №: 20 394



Вот тут английский самоделкин на GPU от Raspberry Pi БПФ-ит.
Можно прикинуть производительность для "толстых" GPU.
Разбивает на мелкие с доворотом между ними.
Мы таким способом делали в ПЛИС БПФ на 16М. 8 реальных каналов на XC6V240, 4 потока, разбор.
Частота семплирования 80МГц, на выходе 8 комплексных спектров в 8М бинов по ~5Гц с перекрытием 50%.
Сейчас на Kintex Ultrascale 16 реальных каналов (семплирование ~118МГц) получилось на 4М бинов по ~7Гц с перекрытием 25%.
На GPU в потоке не получилось - думали-смотрели, но не влезло (а может не осилили). Пришлось плисоводить sm.gif.
Go to the top of the page
 
+Quote Post
rloc
сообщение Apr 7 2018, 16:44
Сообщение #3


Узкополосный широкополосник
******

Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462



Цитата(faa @ Apr 7 2018, 16:00) *
На GPU в потоке не получилось - думали-смотрели, но не влезло (а может не осилили). Пришлось плисоводить sm.gif.

Подсознательно кажется с GPU больше "подводных камней" и на начальном этапе они могут быть не видны. Нет прозрачности в пути ADC->PCIe->GPU->PCIe->Host.

Цитата(faa @ Apr 7 2018, 16:00) *
Сейчас на Kintex Ultrascale 16 реальных каналов (семплирование ~118МГц) получилось на 4М бинов по ~7Гц с перекрытием 25%.

Пробежимся по структуре? RobFPGA, подключайтесь. Набросал по-быстрому схему, могу ошибаться, поправляйте:

Прикрепленное изображение


Подумал, действительно, закладываться на один "жирный" FPGA смысла не имеет. В модульной структуре легче обеспечить большую ширину памяти, ПО модулей может быть одинаковым, соответственно меньше времени на компиляцию и верификацию, выше частота работы. Последовательная структура мне показалась более удобной с точки зрения передачи данных (pipeline). Есть два вопроса:

1. Ширина полосы памяти на один модуль.
По самым оптимистичным оценкам достаточно обеспечить тройную (запись, чтение, коэффициенты) ширину входной полосы с ADC, приведенную к ширине внутренней арифметики.

2. Перектрытие.
За счет чего обеспечить? За счет увеличения кол-ва модулей или гарантии более высокой скорости обработки?
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Apr 7 2018, 20:20
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!
Цитата(rloc @ Apr 7 2018, 19:44) *
Подсознательно кажется с GPU больше "подводных камней" и на начальном этапе они могут быть не видны.
Нет прозрачности в пути ADC->PCIe->GPU->PCIe->Host.
Вот вот ...
Цитата(rloc @ Apr 7 2018, 19:44) *
Пробежимся по структуре? RobFPGA, подключайтесь. Набросал по-быстрому схему, могу ошибаться, поправляйте:
Нее - я предпочитаю медленно спустится с горы и ... wink.gif

Цитата(rloc @ Apr 7 2018, 19:44) *
Подумал, действительно, закладываться на один "жирный" FPGA смысла не имеет. В модульной структуре легче обеспечить большую ширину памяти, ПО модулей может быть одинаковым, соответственно меньше времени на компиляцию и верификацию, выше частота работы. Последовательная структура мне показалась более удобной с точки зрения передачи данных (pipeline). Есть два вопроса:
Еще не знаем что делать но будем делать универсально и модульно wacko.gif !

Цитата(rloc @ Apr 7 2018, 19:44) *
1. Ширина полосы памяти на один модуль.
По самым оптимистичным оценкам достаточно обеспечить тройную (запись, чтение, коэффициенты) ширину входной полосы с ADC, приведенную к ширине внутренней арифметики.

2. Перектрытие.
За счет чего обеспечить? За счет увеличения кол-ва модулей или гарантии более высокой скорости обработки?

Смотрим что есть на входе FFT=64K, I,Q=16 6ит, для таких N коэффициенты нужны не меньше 20 бит.
Начинаем кумекать как можно это считать - например смотрим структуру FFT R22.
Если не забыл то для N точек нужно N слов (I,Q) памяти для данных и N/4 слов коэффициентов.
Грубо - надо 64K * 4 * 1.5 + 16K * 5 = 384 + 80 KByte, + 64 KByte + таблица для окна. ~ 528 KByte.
Влезет даже в средний чип. Если нужно перекрытие %50 + еще 256K на входной буфер.
Если немного по оптимизировать то часть памяти для коэффициентов и таблицу окна можно сэкономить считая на логике все на лету. Самые большие (входных и для первых stage) можно и во внешнюю память вынести (если полосы хватить).

Структура FFT R22 считает семпл за такт - на заморачиваясь можно получить 300 MHz - если "котика выжать" можно получить еще 5 капе.. и 400 MHz тактовой.

Ну а дальше как игра в наперстки - как крутить вертеть данными либо по очереди в один FFT - если успеваем по частоте.
Либо распределяем на несколько FFT по очереди, либо и то и другое.

Вот когда для конкретной системы будут такие квадратики структуры с цифрами ресурсов и со стрелочками описывающими основные потоки данных - тогда можно будет выбирать "тощий" чип и строить универсальный конвейер.

Ах да - а что с данными после FFT делать не забудьте прикинуть и посчитать. Там ведь тоже будет сюрпризов.

Удачи! Rob.
Go to the top of the page
 
+Quote Post
rloc
сообщение Apr 7 2018, 22:45
Сообщение #5


Узкополосный широкополосник
******

Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462



Цитата(RobFPGA @ Apr 7 2018, 23:20) *
будем делать универсально и модульно

Да, раз есть готовое и вкусное.

Цитата(RobFPGA @ Apr 7 2018, 23:20) *
смотрим структуру FFT R22.

Спасибо, посмотрим. Насколько сложно в алгоритме сделать переменную длину?

Цитата(RobFPGA @ Apr 7 2018, 23:20) *
Структура FFT R22 считает семпл за такт

Выравнивающие задержки есть? Какой длины? Зависят от длины преобразования?

Цитата(faa @ Apr 7 2018, 20:57) *
ПЛИС одна.
Память: 4 контроллера DDR3-1600 - 32х, 64х, 64х, 32х; HMC - полтора линка (х8 - слева, х16 - справа ПЛИС).
Наружу: PCIe Gen3 ext x8, PCIe Gen3 ext x4, HMC - два линка х16, serdes - два линка х4 (один слева, другой справа ПЛИС).

Очень тяжелый проект, и физически и морально.
Go to the top of the page
 
+Quote Post
faa
сообщение Apr 8 2018, 10:13
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 726
Регистрация: 14-09-06
Из: Москва
Пользователь №: 20 394



Цитата(rloc @ Apr 8 2018, 01:45) *
Очень тяжелый проект, и физически и морально.


bb-offtopic.gif Ваши слова да начальству бы в уши sm.gif

По делу:
поищите статейку "FPGA implementation of a 32k accumulating FFT with 2-Gs/s throughput".
Она от 2005 года, но, ИМХО, актуальна. Там на V2Pro и V4.
А сейчас ПЛИС намного "веселее", есть где развернуться wink.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- rloc   Производительность современных GPU при вычислении FFT   Apr 4 2018, 21:05
- - Serg76   Занимался подобной проблемой, результат неутешител...   Apr 5 2018, 06:27
|- - rloc   Цитата(Serg76 @ Apr 5 2018, 09:27) главно...   Apr 5 2018, 07:00
|- - _pv   ещё новые шарки SC58x у AD c FFT ускорителями обещ...   Apr 5 2018, 08:59
||- - rloc   На DSP закладываться опасно, основная проблема - в...   Apr 5 2018, 09:22
|- - Serg76   Цитата(rloc @ Apr 5 2018, 10:00) Перейду ...   Apr 5 2018, 10:43
- - krux   длинные поточные FFT удобно делать на ПЛИСах. под ...   Apr 5 2018, 06:40
- - _pv   за/против GPU ещё наверное зависит от того есть ли...   Apr 5 2018, 13:09
|- - rloc   В моем случае данных в хосте изначально нет, снача...   Apr 5 2018, 13:23
- - _pv   2 квадратурных канала сбора данных по 16 бит, част...   Apr 5 2018, 13:44
|- - RobFPGA   Приветствую! Цитата(_pv @ Apr 5 2018, 16...   Apr 5 2018, 14:29
|- - rloc   Цитата(_pv @ Apr 5 2018, 16:44) 2*16*500 ...   Apr 5 2018, 17:21
|- - RobFPGA   Приветствую! Цитата(rloc @ Apr 5 2018, 2...   Apr 5 2018, 18:20
|- - rloc   Цитата(RobFPGA @ Apr 5 2018, 21:20) Моско...   Apr 6 2018, 05:49
- - stealth-coder   GPU предусматривают 2 режима обмена данными - синх...   Apr 6 2018, 15:18
|- - rloc   Цитата(stealth-coder @ Apr 6 2018, 18...   Apr 6 2018, 15:54
||- - stealth-coder   Цитата(rloc @ Apr 6 2018, 18:54) Так нужн...   Apr 7 2018, 08:15
||- - Serg76   Цитата(stealth-coder @ Apr 7 2018, 11...   Apr 7 2018, 11:49
|- - Serg76   Цитата(stealth-coder @ Apr 6 2018, 18...   Apr 6 2018, 19:07
|- - faa   Цитата(rloc @ Apr 7 2018, 19:44) Есть два...   Apr 7 2018, 17:57
||- - RobFPGA   Приветствую! Цитата(rloc @ Apr 8 2018, 0...   Apr 7 2018, 23:25
|- - blackfin   Цитата(rloc @ Apr 7 2018, 19:44) Подумал,...   Apr 8 2018, 04:52
|- - rloc   Цитата(blackfin @ Apr 8 2018, 07:52) Pipe...   Apr 8 2018, 07:18
- - thermit   Странные показатели у вас. gtx1060 complex fft 64...   Apr 7 2018, 13:04
- - blackfin   Цитата(thermit @ Apr 7 2018, 16:04) Стран...   Apr 7 2018, 13:34
- - thermit   Очевидно, что не успевает. Честно говоря, обработ...   Apr 7 2018, 13:59


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01468 секунд с 7
ELECTRONIX ©2004-2016