Alexium 0 10 марта, 2011 Опубликовано 10 марта, 2011 (изменено) · Жалоба Здравствуйте. Пишу диплом магистра. Тема - ускорение вычислений (реконфигурируемый сопроцессор на ПЛИС). Сейчас делаю собственно сопроцессор (фреймворк, в некотором роде). Потом надо будет исследовать производительность разных задач на ПЛИС, сравнивать с чисто программной реализацией. Проблема в том, что время уже ой как поджимает, а еще сам фреймворк не готов. Времени писать для ПЛИС решения каких-то практически значимых задач нет вообще. Может, кто-то поделится каким-нибудь проектом? Или кто-то где-то что-то видел и даст ссылку... Понимаю, что вряд ли кто-то поделится со мной своей интеллектуальной собственностью, но если вдруг - конфиденциальность я, разумеется, гарантирую. В отчет пойдет только краткое описание решаемой задачи и графики производительности. Изменено 10 марта, 2011 пользователем Alexium Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба На Opencores посмотрите - там математики всякой хватает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexium 0 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба Смотрел, конечно. Мало там подходящих для меня проектов. В основном всякие небольшие модули, вроде сумматоров и умножителей, которые не решают конкретных задач. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба Там есть как минимум (из законченного): - CORDIC - DCT - AES - SHA - Reed-Solomon - Twofish - FIR, CIC, DDS, Hilbert И еще куча похожего в процессе. Или вам это тоже кажется простоватым? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexium 0 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба Нет, шифрование и хэширование - это то, что надо. DCT, наверное, тоже. Насчет CORDIC не уверен, я не очень хорошо знаком с его функциями, но подозреваю все же, что посчитать то же самое на ЦП будет быстрее. А вот DDS и Reed-Solomon, по-моему, не из той оперы совсем. Мне ведь нужны задачи, которые обычно решаются на компьютере, и в которых производительность ЦП является узким местом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jojo 0 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба >Сейчас делаю собственно сопроцессор (фреймворк, в некотором роде). А что такое фреймворк? Просто интересно. Advanced Synthesis Cookbook: A Design Guide for Stratix II, Stratix III, and Stratix IV Devices http://www.altera.com/literature/manual/cookbook.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexium 0 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба А что такое фреймворк? Просто интересно. Что-то такое Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
superdetka 0 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба Restricted Boltzmann Machines :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба Мне ведь нужны задачи, которые обычно решаются на компьютере, и в которых производительность ЦП является узким местом. Возьмите блок FFT Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexium 0 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба Restricted Boltzmann Machines Искал. Так, чтоб можно было скачать и запустить - не нашел. Только статьи находятся. :( Возьмите блок FFT Обязательно! Но во-первых - это банально, а во-вторых - в этой задаче мне вряд ли светит догнать GPU. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба а во-вторых - в этой задаче мне вряд ли светит догнать GPU. Да неужели??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexium 0 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба Да неужели??? Честно - не знаю. Просто мне так кажется почему-то. Конечно, зависит еще от того, какой GPU и какая FPGA. У меня, например, плата на Spartan xc3s700A, не слишком вместительная и не слишком быстрая. Всякие Virtех 4-6 многомиллионные - другое дело, но у них и цена заоблачная... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 11 марта, 2011 Опубликовано 11 марта, 2011 (изменено) · Жалоба Честно - не знаю. Просто мне так кажется почему-то. Конечно, зависит еще от того, какой GPU и какая FPGA. У меня, например, плата на Spartan xc3s700A, не слишком вместительная и не слишком быстрая. Всякие Virtех 4-6 многомиллионные - другое дело, но у них и цена заоблачная... Я вот тоже - не знаю, может ли GPU FFT считать, а если может - то с цифрами какой разрядности оперирует и максимальным окном. Если у Вас задача стоит чего-нить наваять и сравнить, а насколько это быстрей будет подсчитано в ПЛИС, чем в процессоре, то сделать все довольно просто. Сколько в Вашей ПЛИСке встроенных умножителей? Создаете FIR фильтр с порядком, равным кол-ву аппаратных умножителей и распаралеливаете структуру фильтра, а процессору даете формулу для расчета в лоб - пусть загибается. Ну и получится, что в ПЛИС результат на выходе будет через latency, но каждый такт, а процессор все вычислит если у него одна оперция за такт через Nx2-1 тактов минимум, N - порядок фильтра. При порядке 51 процессор должен сделать 51 умножений и 50 сложений. Изменено 11 марта, 2011 пользователем bogaev_roman Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexium 0 11 марта, 2011 Опубликовано 11 марта, 2011 (изменено) · Жалоба Я вот тоже - не знаю, может ли 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. Так что даже в такой задаче небольшим ПЛИС приходится туго. Изменено 11 марта, 2011 пользователем Alexium Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bav 0 11 марта, 2011 Опубликовано 11 марта, 2011 · Жалоба Честно - не знаю. Просто мне так кажется почему-то. Конечно, зависит еще от того, какой 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 сравнили с четырехядерником :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться