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

Ищу любые вычислительные проекты для FPGA

UPD: посмотрел таблицу. Процессор Core 2, операция 32-битного умножения: latency - 5, throughput - 1.5. Так что даже в такой задаче небольшим ПЛИС приходится туго.

Ну где туго. Берите порядок под 100, влезть должно, умножители по лутам раскидайте, промежуточные результаты - в регистры, частоту в 50МГц всяко получите. Процессору 100 умножений за 150 тактов плюс еще 100 сложений. Выгода - 250 раз, частота для одного ядра - 50МГц*250=7,5ГГц. Сравнивать уже можно.

PS/ Почему 50МГц? Максимальная тактовая же для spartan 3a - 320МГц вроде, ну понятно что ее не получить, но 150 то можно думаю будет выжать при полной конвейеризации?

PSS/Попробуйте реализовать какой-нить FIR 10 порядка и посмотреть во что это выльется в процентном соотношении к полной площади и частоте (только отключите использование аппаратных умножителей). Дальше можно будет рассчитать примерный максимальный порядок фильтра.

Изменено пользователем bogaev_roman

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


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

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

А во-вторых - можно ведь сравнить со Спартаном на 50 МГц и экстраполировать на впятеро больший Виртекс на 200 МГц. Стоимость сравнить, опять же... Сказать, что в таких-то задачах такие-то FPGA выгоднее, чем современные ЦП (надеюсь, что где-то все-таки выгоднее).

 

Ну где туго. Берите порядок под 100

Да, так гораздо интереснее. А 50 МГц потому, что такой кварц на плате. Если и не 150, то 100-120 точно можно выжать, но нужно будет внешний генератор изготовить. Хотя я где-то читал, что вдвое частоту умножить можно с помощью ресурсов платы.

 

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


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

Сказать, что в таких-то задачах такие-то FPGA выгоднее, чем современные ЦП (надеюсь, что где-то все-таки выгоднее).

чип, оптимизированный под определенную задачу по определению справится лучше, чем универсальный процессор.

можно выжать, но нужно будет внешний генератор изготовить

точно не помню, но в спартане есть pll

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


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

чип, оптимизированный под определенную задачу по определению справится лучше, чем универсальный процессор.

Конечно, на то и расчет! Только нужно теперь, чтобы кто-то поделился проектами для ПЛИС, чтобы я мог именно в своей системе. со своими накладными расходами проанализировать производительность.

 

точно не помню, но в спартане есть pll

Я посмотрел документацию - DCM (digital clock manager) умеет удваивать частоту. Выходит, что с одного DCM можно получить 100 МГц, а с двух - любую частоту от 100 до 200. Не знаю, правда, рассчитаны ли они на последовательное соединение.

 

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


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

Не знаю, правда, рассчитаны ли они на последовательное соединение.

читайте или пробуйте :)

Конечно, на то и расчет! Только нужно теперь, чтобы кто-то поделился проектами для ПЛИС, чтобы я мог именно в своей системе. со своими накладными расходами проанализировать производительность.

может, я не врубаюсь, но сравнивать автобус и грузовую машину тяжело. дело в том, что на защите у Вас спросят: "и что Вы хотите доказать? что на ПЛИС можно считать?"

к примеру, есть потоковые процессоры (SPI), в них несколько АЛУ, из которых можно сделать конвейер. многие задачи решаются быстрее чем на х86 и не хуже чем на ПЛИС.

 

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


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

может, я не врубаюсь, но сравнивать автобус и грузовую машину тяжело. дело в том, что на защите у Вас спросят: "и что Вы хотите доказать? что на ПЛИС можно считать?"

Может, я не врубаюсь, но по-моему, сравнение все-таки имеет смысл при определенных условиях. А защита, все-таки, не суд, чтобы там что-то доказывать. А если мне зададут такой вопрос - я отвечу, что анализировал применимость ПЛИС для решения некоторых классов задач в сравнении с ЦП.

 

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


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

>Во-первых: с GPU, конечно, спавнивать тяжело.

 

Сейчас GPU часто используют для не графических вычислений, а там ПЛИС бывает лучше, чем GPU.

 

>Сказать, что в таких-то задачах такие-то FPGA выгоднее, чем современные ЦП (надеюсь, что где-то все-таки выгоднее).

 

Выгоднее, даже при большой разнице в частотах.

 

Некоторые классы задач прямо перечислены в http://www.altera.com/literature/manual/cookbook.zip.

Я бы ещё добавил генетические задачи http://www.timelogic.com/. Железка простая, а выигрыш в сотни раз.

 

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


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

Сейчас GPU часто используют для не графических вычислений, а там ПЛИС бывает лучше, чем GPU.

Так я о неграфических и говорю.

 

Я бы ещё добавил генетические задачи http://www.timelogic.com/. Железка простая, а выигрыш в сотни раз.

Да, в этой области FPGA сильны. Но, опять же, проектов в свободном доступе нет, чтоб пощупать...

 

Спасибо за книгу!

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


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

Доделал базовый функционал сопроцессора, а что ускорять - так и не придумал :( (DSP-задачи оставил на крайний случай, я там ничерта не смыслю)

Может, еще идей подкинете?..

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


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

Я вот тоже - не знаю, может ли GPU FFT считать, а если может - то с цифрами какой разрядности оперирует и максимальным окном.

На нвидишных графических картах от CUDA 1.3 и выше наш соотечественних Волков, сидящий у Деммеля смог пол аппаратного пика для FFT сделать. То есть если у Вас 4к чисел, то на дешевой карте полное преобразование можно посчитать за 0.4 мкс в двойной точности и примерно за 0.1 мкс в одинарной. Чтобы такое же получить на плиске, минимум пятый стратикс надо взять на 4к умножителей, и то не факт, что влезет. У АТИ-АМД еще круче, недавно видел инфу, что FFT для 1к на одном ядре модернового Радеона можно получить за 20нс, а на карте два ядра, то есть два FFT по 1к за 20нс - боюсь, что ни одна плиска не потянет.

 

 

Если у Вас задача стоит чего-нить наваять и сравнить, а насколько это быстрей будет подсчитано в ПЛИС, чем в процессоре, то сделать все довольно просто.

Сколько в Вашей ПЛИСке встроенных умножителей?

Создаете FIR фильтр с порядком, равным кол-ву аппаратных умножителей и распаралеливаете структуру фильтра, а процессору даете формулу для расчета в лоб - пусть загибается.

Ну и получится, что в ПЛИС результат на выходе будет через latency, но каждый такт, а процессор все вычислит если у него одна оперция за такт через Nx2-1 тактов минимум, N - порядок фильтра. При порядке 51 процессор должен сделать 51 умножений и 50 сложений.

 

А если по-честному, распараллелить по всем ядрам проца, попользовать SSE2-SSE3 то проц очевидно в 4-16 раз быстрее будет все это выплевывать, а если все сидит в кеше, то есть если взять 3-ий стратикс, который результат будет плевать с частотой 400МГц, и квад-кор с 3ГГц, то последний с легкостью сделает по 4 FIRа с частотой 250МГц, ессно что стратикс будет серьезно не дешевле квад кора...

 

Короче я к тому, что задачу подобрать, чтобы плиска была лучше - не совсем-то и просто, особенно если с процессора (а тем более с ГПУ) снимать то, что реально снять можно.

 

ИМХО: у процев и ГПУ очень логические операции хромают, так как АЛУ все на плавующую точку заточены, а у ПЛИСки как раз на оборот. посмотрите в эту сторону, криптография, и тд. Возможно что-то и найдется.

 

У меня у самого есть только одна задача, где плиска больше флопов показывает, но только из-за того, что в плиску удается очень быстрый (2ГБайт в секунду) поток завести, а, то же самое с обычным процем потребовало бы больших габаритов.

Изменено пользователем iiv

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


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

Сейчас GPU часто используют для не графических вычислений, а там ПЛИС бывает лучше, чем GPU.

 

Уважаемый jojo,

 

не первый раз вижу, что Вы утверждаете, что ПЛИС лучше или быстрее GPU. Простите меня покорнейше, не ради стеба, а реально сильно интересуюсь на какой же все-таки задаче (не притянутой за уши) такое происходит?

 

ИМХО. Я сам знаю одну такую задачу, но только одну... Во всех остальных, при одинаковой цене, GPU делает плис как тузик грелку, обычно в 10 и более раз. Ессно я не рассматриваю графические карты лаптопов или очень дешевые GPU, но и вычислительные плиски (а борды тем более) редко меньше пары сотен зеленых стоят.

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


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

не первый раз вижу, что Вы утверждаете, что ПЛИС лучше или быстрее GPU. Простите меня покорнейше, не ради стеба, а реально сильно интересуюсь на какой же все-таки задаче (не притянутой за уши) такое происходит?

 

ИМХО. Я сам знаю одну такую задачу, но только одну... Во всех остальных, при одинаковой цене, GPU делает плис как тузик грелку, обычно в 10 и более раз. Ессно я не рассматриваю графические карты лаптопов или очень дешевые GPU, но и вычислительные плиски (а борды тем более) редко меньше пары сотен зеленых стоят.

Да ПЛИС быстрее...

Из-за возможности выполнения параллельно нескольких задач, а процессор все делает последовательно.

Например задача:

a+b+c+d

процессор это будет делать последовательно, а в ПЛИС можно это посчитать за 3 такта.

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


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

Рискну предположить, что современная емкая ПЛИС типа Stratix/Virtex сможет стравняться с GPU среднего уровня в арифметических задачах с меньшей разрядностью, чем разрядность ГП (скажем, 16 бит, или даже 12), а также в задачах, не являющихся арифметическими или арифметически интенсивными, например - работа со строками (поиск подстроки и т.п.).

 

Например задача:

a+b+c+d

процессор это будет делать последовательно, а в ПЛИС можно это посчитать за 3 такта.

Увы, не будет. Процессор это тоже посчитает за 3 такта (дурацкий ОоО! :) ), только такты у него раз в 10 короче.

 

 

Какие вычисления требуют много итераций над небольшим объемом входных данных?

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


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

Увы, не будет. Процессор это тоже посчитает за 3 такта (дурацкий ОоО! :) ), только такты у него раз в 10 короче.

А если требуется подсчитать сумму тысячи элементов? Типичный, кстати, согласованный фильтр (простейший коррелятор), с одноразрядным коэффициентом. Например требуется подсчитать сумму 16384 элементов (одноразрядных), сколько тактов потребуется? Я на virtexIIpro за один такт подсчитаю, правда с latency в несколько тактов на частоте этак в 150-200МГц.

Изменено пользователем bogaev_roman

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


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

Например требуется подсчитать сумму 16384 элементов (одноразрядных)

Что значит одноразрядных? Сколько бит каждый элемент? Они целые?

 

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...