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

    

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

Коллеги, подскажите, какой максимальной производительности можно достичь на современных GPU при вычислении FFT 64К комплексных точек, 24 бит, radix-4 или более, с одинарной и двойной точностью? Среда разработки не имеет значения, нужно понять потолок производительности, с учетом полосы памяти. Если GPU умеет вычислять в потоке (streaming), то интересует минимальное время между загрузкой новых данных и выгрузкой обработанных.

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


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

Занимался подобной проблемой, результат неутешительный. Непосредственно сам расчет FFT на GPU выполняется очень быстро по сравнению с CPU (выигрыш может составлять сотни раз), но главной проблемой, таким себе «бутылочным горлышком» остается обмен данными между хостом и девайсом, который «жрет» 99% времени, особенно это касается передачи данных с девайса на хост, это процедура намного медленнее, чем загрузка данных на GPU. Если данные не забирать после расчета, то смысл в этом есть, а так все печально, конечно. Карточка, с которой игрался - бюджетный GeForce GTX750ti/128 bit/1 Gb GDDR5

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


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

длинные поточные FFT удобно делать на ПЛИСах.

под них заточен алгоритм Cooley-Tukey. вполне можно в реалтайме обрабатывать 64Msps 16bit размером в 32M точек в целочисленке.

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


Ссылка на сообщение
Поделиться на другие сайты
главной проблемой, таким себе «бутылочным горлышком» остается обмен данными между хостом и девайсом

Вы можете сказать, чем определяется производительность обмена данными?

 

Перейду к конкретике. Допустим, есть 2 квадратурных канала сбора данных по 16 бит, частота 100 МГц (в перспективе больше, до 500 МГц и выше). Квадратурные каналы - аналоговые, нужно предварительно подкорректировать смещение нуля, фазы и амплитуды. Потом - FFT с заданным количеством точек (для конкретики - 64К), матобработка между каналами, накопление. На выходе - поток не большой, возможно в разы меньше входного. Насколько легко современные GPU способны "переваривать" такие задачи? В первую очередь конечно интересует скорость FFT, в идеале - с 50% перекрытием, в худшем случае - с минимальными разрывами в обработке.

 

длинные поточные FFT удобно делать на ПЛИСах.

Да, в части FPGA мне все более-менее понятно, по гибкости и ширине полосы памяти (внутренней) возможностей значительно больше.

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


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

ещё новые шарки SC58x у AD c FFT ускорителями обещают ~5нс на отсчёт, (1к ФФТ за 5 мкс)

то есть 100МГц с 50% перекрытием пережевать вроде должны.

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


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

На DSP закладываться опасно, основная проблема - в гибкости проектирования. Скажем, захочу перейти на radix-16, radix-32 ... Что делать в этом случае? Не позволяет DSP разменивать память на вычислительные ресурсы. С GPU чувствую такая же проблема будет.

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


Ссылка на сообщение
Поделиться на другие сайты
Перейду к конкретике. Допустим, есть 2 квадратурных канала сбора данных по 16 бит, частота 100 МГц (в перспективе больше, до 500 МГц и выше). Квадратурные каналы - аналоговые, нужно предварительно подкорректировать смещение нуля, фазы и амплитуды. Потом - FFT с заданным количеством точек (для конкретики - 64К), матобработка между каналами, накопление. На выходе - поток не большой, возможно в разы меньше входного. Насколько легко современные GPU способны "переваривать" такие задачи? В первую очередь конечно интересует скорость FFT, в идеале - с 50% перекрытием, в худшем случае - с минимальными разрывами в обработке.

Прогнал тест, при таких нач.условиях ( i/q 16 bit, FFT Size = 64K) получилась скорость входного потока порядка 3 Gbit/s, т.е. практически Ваши 100 МГц. если взять более топовую карту, то думаю будет по-веселее

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


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

за/против GPU ещё наверное зависит от того есть ли эти 3, а в перспективе до 15 Гбит/с уже в ПК или их ещё туда засунуть надо?

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


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

В моем случае данных в хосте изначально нет, сначала плата оцифровки должна передать их по шине PCIe, и возможно, если она умеет быть мастером, то напрямую в GPU. Вопрос, что является узким звеном в этом обмене?

 

в перспективе до 15 Гбит/с

Откуда берется эта цифра?

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


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

2 квадратурных канала сбора данных по 16 бит, частота 100 МГц (в перспективе больше, до 500 МГц и выше)

2*16*100 = 3.2ГБит/с

2*16*500 = 16ГБит/с

 

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


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

Приветствую!

 

2 квадратурных канала сбора данных по 16 бит, частота 100 МГц (в перспективе больше, до 500 МГц и выше)

2*16*100 = 3.2ГБит/с

2*16*500 = 16ГБит/с

Если Вам надо закапчить пару гигабайт данных и потом пережевывать FFT и считать хитрую математику то можно попыхтеть и на GPU. Если же надо работать непрерывно с потоком то лучше потратить время с FPGA - лет 7-10 назад делал похоже на 4 Virtex - 2 канала 16 бит/250MHz, 16K FFT с перекрытием 50%, с кросс-кореляцией и с накоплением. Сейчас такое можно собрать на готовом модуле с Artix/Kintex/Zynq от $300 будет заодно и интерфейс к ADC и выдача результата через Ethernet.

 

Успехов! Rob.

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


Ссылка на сообщение
Поделиться на другие сайты
2*16*500 = 16ГБит/с

Решил, что ограничение в 3 Гбит/c (в конкретном примере) было больше связано с интерфейсом, по первым ответам.

 

По моим расчетам, узким местом в GPU может быть ограниченная полоса памяти и возможность ее эффективного использования в случае рандомного доступа. Насколько эффективно компиляторы могут оптимизировать алгоритм - для меня темный лес, что и хотелось выяснить, с экстраполяцией результатов на Pascal GP100/Radeon RX Vega с памятью HBM2 2048 бит.

 

делал похоже на 4 Virtex - 2 канала 16 бит/250MHz, 16K FFT с перекрытием 50%, с кросс-кореляцией и с накоплением.

С удовольствием посмотрел бы на рабочий образец в действии ) Продолжение было?

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


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

Приветствую!

 

Решил, что ограничение в 3 Гбит/c (в конкретном примере) было больше связано с интерфейсом, по первым ответам.

...

С удовольствием посмотрел бы на рабочий образец в действии ) Продолжение было?

А че на него смотреть - сначала был PCIX модуль на базе Virtex4SX35 от Московской ISYS.

Потом сделали свой на базе модуля на Spartan6 и Artix7. Причем FFT обработка была на Spartan6!

а Artix7 использовался для интерфейсов 1G Ethernet и либо PCIe x4 либо Ethernet 10G.

 

Ну а продолжение потом было на Virtex5 - в realtime считался поток 6.6 GByte/s (12 бит/2.2GHz), правда FFT всего 512 точек но зато обработка каждого спектра геморройная.

Ну а на сегодняшнем железе ( UltaScale, UltaScale+ ... ) такие чудеса можно наворотить....

 

Успехов! Rob.

 

 

 

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


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

БукоФФки не хватает. Знаком с компанией ни один десяток лет. Как раз недавно ведущий разработчик делал доклад в тему:

 

https://www.youtube.com/watch?v=pmLUZ8hFoa0

 

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


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

GPU предусматривают 2 режима обмена данными - синхронный и асинхронный. Скорость копирования в асинхронном режиме ограничивается только скоростью памяти хоста и карточки и скоростью PCIe, со скоростью 15 Гбит/с на мощном железе не должно возникнуть проблем, такую скорость дает PCIe Gen 2 x4, для DDR 1600 МГц/64 бита это вообще ни о чем. В задаче ТС больше вопросов может возникнуть к карточке, скорость вычислений сильно зависит, например, от разрядности шины. Вообще информация по FLOP для разных карточек есть в интернете, для БПФ сделать оценку требуемой производительности не составляет труда.

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти