|
Ищу любые вычислительные проекты для FPGA, помогите, кто чем может |
|
|
|
Mar 10 2011, 21:24
|
Частый гость
 
Группа: Участник
Сообщений: 88
Регистрация: 3-03-10
Пользователь №: 55 790

|
Здравствуйте. Пишу диплом магистра. Тема - ускорение вычислений (реконфигурируемый сопроцессор на ПЛИС). Сейчас делаю собственно сопроцессор (фреймворк, в некотором роде). Потом надо будет исследовать производительность разных задач на ПЛИС, сравнивать с чисто программной реализацией. Проблема в том, что время уже ой как поджимает, а еще сам фреймворк не готов. Времени писать для ПЛИС решения каких-то практически значимых задач нет вообще. Может, кто-то поделится каким-нибудь проектом? Или кто-то где-то что-то видел и даст ссылку... Понимаю, что вряд ли кто-то поделится со мной своей интеллектуальной собственностью, но если вдруг - конфиденциальность я, разумеется, гарантирую. В отчет пойдет только краткое описание решаемой задачи и графики производительности.
Сообщение отредактировал Alexium - Mar 10 2011, 21:27
|
|
|
|
|
 |
Ответов
(1 - 14)
|
Mar 11 2011, 07:33
|
Частый гость
 
Группа: Участник
Сообщений: 88
Регистрация: 3-03-10
Пользователь №: 55 790

|
Нет, шифрование и хэширование - это то, что надо. DCT, наверное, тоже. Насчет CORDIC не уверен, я не очень хорошо знаком с его функциями, но подозреваю все же, что посчитать то же самое на ЦП будет быстрее. А вот DDS и Reed-Solomon, по-моему, не из той оперы совсем. Мне ведь нужны задачи, которые обычно решаются на компьютере, и в которых производительность ЦП является узким местом.
|
|
|
|
|
Mar 11 2011, 07:39
|
Знающий
   
Группа: Свой
Сообщений: 574
Регистрация: 9-10-04
Из: FPGA-city
Пользователь №: 827

|
>Сейчас делаю собственно сопроцессор (фреймворк, в некотором роде). А что такое фреймворк? Просто интересно. Advanced Synthesis Cookbook: A Design Guide for Stratix II, Stratix III, and Stratix IV Devices http://www.altera.com/literature/manual/cookbook.zip
|
|
|
|
|
Mar 11 2011, 13:09
|
Частый гость
 
Группа: Участник
Сообщений: 88
Регистрация: 3-03-10
Пользователь №: 55 790

|
Цитата(Kirill_Good @ Mar 11 2011, 13:38)  Restricted Boltzmann Machines Искал. Так, чтоб можно было скачать и запустить - не нашел. Только статьи находятся.  Цитата(bogaev_roman @ Mar 11 2011, 14:24)  Возьмите блок FFT Обязательно! Но во-первых - это банально, а во-вторых - в этой задаче мне вряд ли светит догнать GPU.
|
|
|
|
|
Mar 11 2011, 13:35
|
Частый гость
 
Группа: Участник
Сообщений: 88
Регистрация: 3-03-10
Пользователь №: 55 790

|
Цитата(bogaev_roman @ Mar 11 2011, 15:16)  Да неужели??? Честно - не знаю. Просто мне так кажется почему-то. Конечно, зависит еще от того, какой GPU и какая FPGA. У меня, например, плата на Spartan xc3s700A, не слишком вместительная и не слишком быстрая. Всякие Virtех 4-6 многомиллионные - другое дело, но у них и цена заоблачная...
|
|
|
|
|
Mar 11 2011, 13:53
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Alexium @ Mar 11 2011, 16:35)  Честно - не знаю. Просто мне так кажется почему-то. Конечно, зависит еще от того, какой GPU и какая FPGA. У меня, например, плата на Spartan xc3s700A, не слишком вместительная и не слишком быстрая. Всякие Virtех 4-6 многомиллионные - другое дело, но у них и цена заоблачная... Я вот тоже - не знаю, может ли GPU FFT считать, а если может - то с цифрами какой разрядности оперирует и максимальным окном. Если у Вас задача стоит чего-нить наваять и сравнить, а насколько это быстрей будет подсчитано в ПЛИС, чем в процессоре, то сделать все довольно просто. Сколько в Вашей ПЛИСке встроенных умножителей? Создаете FIR фильтр с порядком, равным кол-ву аппаратных умножителей и распаралеливаете структуру фильтра, а процессору даете формулу для расчета в лоб - пусть загибается. Ну и получится, что в ПЛИС результат на выходе будет через latency, но каждый такт, а процессор все вычислит если у него одна оперция за такт через Nx2-1 тактов минимум, N - порядок фильтра. При порядке 51 процессор должен сделать 51 умножений и 50 сложений.
Сообщение отредактировал bogaev_roman - Mar 11 2011, 14:04
|
|
|
|
|
Mar 11 2011, 14:34
|
Частый гость
 
Группа: Участник
Сообщений: 88
Регистрация: 3-03-10
Пользователь №: 55 790

|
Цитата(bogaev_roman @ Mar 11 2011, 15:53)  Я вот тоже - не знаю, может ли GPU FFT считать, а если может - то с цифрами какой разрядности оперирует и максимальным окном. Если у Вас задача стоит чего-нить наваять и сравнить, а насколько это быстрей будет подсчитано в ПЛИС, чем в процессоре, то сделать все довольно просто. Сколько в Вашей ПЛИСке встроенных умножителей? Создаете FIR фильтр с порядком, равным кол-ву аппаратных умножителей и распаралеливаете структуру фильтра, а процессору даете формулу для расчета в лоб - пусть загибается. Ну и получится, что в ПЛИС результат на выходе будет через latency, но каждый такт, а процессор все вычислит если у него одна оперция за такт через Nx2-1 тактов минимум, N - порядок фильтра. При порядке 51 процессор должен сделать 51 умножений и 50 сложений. Отлично, спасибо за подсказку насчет FIR-фильтра! Умножителей у меня, кажется, 20. Т.е. макс. порядок - 19 (если я правильтно понял). Процессор умножает, я думаю, тактов за 7, складывает - за 1 (мы ведь о целых числах говорим?). Итого - чуть больше 150 тактов на итерацию, или в 150 раз медленнее ПЛИС. При частоте ПЛИС 50 МГц ЦП с ней сравняется на частоте больше 7 ГГц. Но у процессора может быть 4 ядра, и он может пользоваться параллелизмом уровня команд. И у него быстрый доступ к памяти (узкое место моего проекта). Но можно ведь умножители и на LUT сделать. Конечно, тактовая частота упадет, но зато степень параллелизма вырастет... Насчет GPU: FFT они считают вполне неплохо. Конкретных цифр не скажу (еще не изучал), но в принципе - GPU работают с целыми 32-битными числами, 32- и 64-битными с плавающей запятой. Есть исследование производительности GPU NVidia GT200, дочитаю - опишу результаты, если интересно. Кстати, я не учел, что процессор использует конвейер, так что для выполнения 20 умножений нужно гораздо меньше 20х7 тактов. Скорее, 7 + 19х(1 или 2). UPD: посмотрел таблицу. Процессор Core 2, операция 32-битного умножения: latency - 5, throughput - 1.5. Так что даже в такой задаче небольшим ПЛИС приходится туго.
Сообщение отредактировал Alexium - Mar 11 2011, 14:40
|
|
|
|
|
Mar 11 2011, 14:49
|
Знающий
   
Группа: Свой
Сообщений: 693
Регистрация: 21-06-05
Из: Санкт-Петербург
Пользователь №: 6 184

|
Цитата Честно - не знаю. Просто мне так кажется почему-то. Конечно, зависит еще от того, какой GPU и какая FPGA. У меня, например, плата на Spartan xc3s700A, не слишком вместительная и не слишком быстрая. Всякие Virtех 4-6 многомиллионные - другое дело, но у них и цена заоблачная... Цитата Потом надо будет исследовать производительность разных задач на ПЛИС, сравнивать с чисто программной реализацией. Цитата Насчет GPU: FFT они считают вполне неплохо. Конкретных цифр не скажу (еще не изучал), но в принципе - GPU работают с целыми 32-битными числами, 32- и 64-битными с плавающей запятой. Есть исследование производительности GPU NVidia GT200, дочитаю - опишу результаты, если интересно. Кстати, я не учел, что процессор использует конвейер, так что для выполнения 20 умножений нужно гораздо меньше 20х7 тактов. Скорее, 7 + 19х(1 или 2). UPD: посмотрел таблицу. Процессор Core 2, операция 32-битного умножения: latency - 5, throughput - 1.5. Так что даже в такой задаче небольшим ПЛИС приходится туго. сначала нужно определиться что с чем сравнивать. если Ваш Spartan с GPU - мало задач, которые можно сравнивать (но существуют). если брать процы последних поколений, то и FPGA соответственно ... не Spartan  з.ы. Вы бы еще max3032 сравнили с четырехядерником
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|