|
Производительность современных GPU при вычислении FFT |
|
|
|
Apr 5 2018, 06:27
|
Профессионал
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775
|
Занимался подобной проблемой, результат неутешительный. Непосредственно сам расчет FFT на GPU выполняется очень быстро по сравнению с CPU (выигрыш может составлять сотни раз), но главной проблемой, таким себе «бутылочным горлышком» остается обмен данными между хостом и девайсом, который «жрет» 99% времени, особенно это касается передачи данных с девайса на хост, это процедура намного медленнее, чем загрузка данных на GPU. Если данные не забирать после расчета, то смысл в этом есть, а так все печально, конечно. Карточка, с которой игрался - бюджетный GeForce GTX750ti/128 bit/1 Gb GDDR5
|
|
|
|
|
Apr 5 2018, 07:00
|
Узкополосный широкополосник
Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462
|
Цитата(Serg76 @ Apr 5 2018, 09:27) главной проблемой, таким себе «бутылочным горлышком» остается обмен данными между хостом и девайсом Вы можете сказать, чем определяется производительность обмена данными? Перейду к конкретике. Допустим, есть 2 квадратурных канала сбора данных по 16 бит, частота 100 МГц (в перспективе больше, до 500 МГц и выше). Квадратурные каналы - аналоговые, нужно предварительно подкорректировать смещение нуля, фазы и амплитуды. Потом - FFT с заданным количеством точек (для конкретики - 64К), матобработка между каналами, накопление. На выходе - поток не большой, возможно в разы меньше входного. Насколько легко современные GPU способны "переваривать" такие задачи? В первую очередь конечно интересует скорость FFT, в идеале - с 50% перекрытием, в худшем случае - с минимальными разрывами в обработке. Цитата(krux @ Apr 5 2018, 09:40) длинные поточные FFT удобно делать на ПЛИСах. Да, в части FPGA мне все более-менее понятно, по гибкости и ширине полосы памяти (внутренней) возможностей значительно больше.
|
|
|
|
|
Apr 5 2018, 10:43
|
Профессионал
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775
|
Цитата(rloc @ Apr 5 2018, 10:00) Перейду к конкретике. Допустим, есть 2 квадратурных канала сбора данных по 16 бит, частота 100 МГц (в перспективе больше, до 500 МГц и выше). Квадратурные каналы - аналоговые, нужно предварительно подкорректировать смещение нуля, фазы и амплитуды. Потом - FFT с заданным количеством точек (для конкретики - 64К), матобработка между каналами, накопление. На выходе - поток не большой, возможно в разы меньше входного. Насколько легко современные GPU способны "переваривать" такие задачи? В первую очередь конечно интересует скорость FFT, в идеале - с 50% перекрытием, в худшем случае - с минимальными разрывами в обработке. Прогнал тест, при таких нач.условиях ( i/q 16 bit, FFT Size = 64K) получилась скорость входного потока порядка 3 Gbit/s, т.е. практически Ваши 100 МГц. если взять более топовую карту, то думаю будет по-веселее
|
|
|
|
|
Apr 5 2018, 14:29
|
Профессионал
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643
|
Приветствую! Цитата(_pv @ Apr 5 2018, 16:44) 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.
|
|
|
|
|
Apr 5 2018, 17:21
|
Узкополосный широкополосник
Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462
|
Цитата(_pv @ Apr 5 2018, 16:44) 2*16*500 = 16ГБит/с Решил, что ограничение в 3 Гбит/c (в конкретном примере) было больше связано с интерфейсом, по первым ответам. По моим расчетам, узким местом в GPU может быть ограниченная полоса памяти и возможность ее эффективного использования в случае рандомного доступа. Насколько эффективно компиляторы могут оптимизировать алгоритм - для меня темный лес, что и хотелось выяснить, с экстраполяцией результатов на Pascal GP100/Radeon RX Vega с памятью HBM2 2048 бит. Цитата(RobFPGA @ Apr 5 2018, 17:29) делал похоже на 4 Virtex - 2 канала 16 бит/250MHz, 16K FFT с перекрытием 50%, с кросс-кореляцией и с накоплением. С удовольствием посмотрел бы на рабочий образец в действии ) Продолжение было?
|
|
|
|
|
Apr 5 2018, 18:20
|
Профессионал
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643
|
Приветствую! Цитата(rloc @ Apr 5 2018, 20:21) Решил, что ограничение в 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.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|