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

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

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

А это уже интереснее, действительно, суммы, разности, логика, особенно битовых операций, на плисках можно сделать эффективнее, из-за того, что в плиске таких устройств много - вот в 4 циклоне 114к операций можно забабахать, при стоимости борды в 500 бакс, а это при частоте в 200мгц будет 2*10^{13} операций в секунду. Если такие операции не удалось распараллелить внутрь 32 битного инта, то самая быстрая карта от АТИ сможет сделать только 5*10^{12}, что, конечно, в 4 раза меньше. А вот придумать реальную задачу, нужную "народному хозяйству", будет довольно не легко.

 

А в ГПУ кстати необходимо имень около 1000-10000 параллельных комманд, чтобы загрузить все арифметические устройства, и, 16к сумма конечно есть довольно плохой пример для ГПУ, так как бинарное дерево параллелится только по логарифму от пика производительности, и умножители не будут задействованы, поэтому эффективность такой операции по сравнению с пиком производительности будет, думаю, около 0.1.

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


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

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

Каждый элемент - 1бит - 1 или 0, как Вы их интерпритировать будете в процессоре - другой вопрос, в ПЛИС - 1 бит. Это к тому, что говорил Maverick

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

 

А вот придумать реальную задачу, нужную "народному хозяйству", будет довольно не легко.

Это есть нормальная задача для ЦОС в цифровых модемах, если требуется расширение спектра посредством ПСП.

 

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

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


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

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

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

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

a+b+c+d

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

Позвольте с Вами не согласиться по поводу утверждения "процессор это будет делать последовательно". Действительно, лет 20 назад десктоповые процессоры были последовательными и языки для них придумывали с последовательной логикой, но сейчас это совсем уже прошлый век, а то и прошлое тысячелетие.

 

Вот сижу я сейчас за обычным и7, вставлен он в режиме мультитреда, и при порграммировании мне приходится писать специальные ОпенМП команды почти перед каждым циклом, чтобы тело цикла было разбросанно по тредам, которых в моем компьютере 8 штук получается. Если в теле цикла у меня есть последовательность арифметических операций, которая не зависит последовательно друг от друга по аргументам, то компиллер (обычный GNU Fortran) разбрасывает это все по SSE2-SSE3 так, что я могу выполнить до 4 операций с двойной точностью за такт, или 8 операций с одинарной точностью за такт В КАЖДОМ треде. Итого, 64 параллельных операций я всегда должен иметь ввиду даже на моем дохлом компе, стоимость которого меньше штуки зеленых, а ведь бывают и по 24 ядра машинки!

 

И это все даже не графические карты, а обычные процессоры, конечно если Вы будите сравнивать плиску с Пиком или Атмегой, то да, там все последовательно, но, не с современными Интелами и АМДшниками, там уже 20 лет как все параллельно, только пользоваться этим правильно надо, как и в плисках!

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


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

А вот придумать реальную задачу, нужную "народному хозяйству", будет довольно не легко.

Такого жесткого требования у меня нет. Думаю, достаточно будет какой-то подзадачи, конкретного алгоритма, который может и не иметь большой ценности сам по себе. Только нужно тогда внятно объяснить, для решения какой цельной задачи это применяется. А я, опять же, с предметной областью DSP не знаком. Если кто приведет пример(ы) - буду благодарен.

 

Это есть нормальная задача для ЦОС в цифровых модемах, если требуется расширение спектра посредством ПСП.

Что такое ПСП?

 

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


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

Это есть нормальная задача для ЦОС в цифровых модемах, если требуется расширение спектра посредством ПСП.

я, к сожалению, не в теме, но, смею предположить, что для того, чтобы просуммировать 16к однобитовых чисел, Вам нужно как-то эти данные в плиску завести. Сколько тактов будет это длится? Поэтому, совершенно согласившись с Вами, что это нужная народному хозяйству задача, сомневаюсь, что в Вами предложенном примере, эта операция выполняется каждый такт, а, если это не так, то, повидимому эту операцию можно из 16к параллельных шагов перевезти в что-то совсем не параллельное. Поправьте меня, пожалуйста, если я не прав!

 

ИМХО, 2 Alexium:

основное достоинство плиски перед процессором - быстрый ввод данных. и еще достоинство - битовые и логические операции.

 

Я бы на Вашем месте попробовал показать все на примере совсем примитивного роутера етернет или еще каких пакетов, соединяющее несколько компьютеров. ИМХО безпроигрышный вариант для Вас, так как можно вместо етернет придумать что-то ну совсем простое (Вы же диплом пишете, или как) ну и на процессоре все тоже просто, а показать, что даже самая самая простая девборда (ДЕ0, например) может на раз прокачать 2-3ГБайта в секунду, а от процессора Вы это еще долго просить будете, тут будет совсем просто.

 

Конечно может прокатить и пример с тяжелыми вычислениями, но только при условии, что профы на защите не в курсе про многопоточность, многоядерность и тд, но тут и самому может быть не сильно приятно утверждать то, что не есть правда на самом деле...

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

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


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

Что такое ПСП?

Коротко - пседво случайная последовательность, псевдо шумовая последовательность. Используется для расширения спектра информационного сигнала. Ну была полоса скажем 1Мгц, после расширения на 1000 будет 1КГц, ну фактически вся мощность расползается по новой полосе. Позволяет достичь помехозащищенности и незаметности. Помехозащизенность - если какой-то поддиапазон нового диапазона будет забит (в разумных пределах), система будет работать. Незаметность - т.к. спектр сигнала размазан, его трудно распознать на фоне шумов (не зная свойств сигнала и ПСП) - все равно что "ловить рукой рыбу в озере с мутной водой".

PS/ Извиняюсь за кривость языка :)

 

я, к сожалению, не в теме, но, смею предположить, что для того, чтобы просуммировать 16к однобитовых чисел, Вам нужно как-то эти данные в плиску завести. Сколько тактов будет это длится? Поэтому, совершенно согласившись с Вами, что это нужная народному хозяйству задача, сомневаюсь, что в Вами предложенном примере, эта операция выполняется каждый такт, а, если это не так, то, повидимому эту операцию можно из 16к параллельных шагов перевезти в что-то совсем не параллельное. Поправьте меня, пожалуйста, если я не прав!

Это обычный КИХ фильтр (цель правда другая), только коэффициенты одноразрядные, разрядность входных данных обычно зависит от АЦП, но поступает на вход фильтра только знак (0 или 1). Данные вводятся в схему последовательно, в сдвиговый регистр. Каждый такт происходит перемножение каждой ячейки регистра на собственный коэффициент и сложение результатов перемножения (в конкретном случае это тупо XOR или XNOR). Схема, между прочим, довольна распространена в различных вариациях и используется для снятия ПШС.

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

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


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

ИМХО, 2 Alexium:

основное достоинство плиски перед процессором - быстрый ввод данных.

К сожалению, моя система этим достоинством не обладает... Хотя бы потому, что подключена к компьютеру через СОМ-порт. Ну и архитектура системы такова, что иметь "подопытный" модуль с суммарной шириной входов больше 16-32 байт нереально.

 

 

Коротко - пседво случайная последовательность, псевдо шумовая последовательность. Используется для расширения спектра информационного сигнала. Ну была полоса скажем 1Мгц, после расширения на 1000 будет 1КГц, ну фактически вся мощность расползается по новой полосе. Позволяет достичь помехозащищенности и незаметности. Помехозащизенность - если какой-то поддиапазон нового диапазона будет забит (в разумных пределах), система будет работать. Незаметность - т.к. спектр сигнала размазан, его трудно распознать на фоне шумов (не зная свойств сигнала и ПСП) - все равно что "ловить рукой рыбу в озере с мутной водой".

PS/ Извиняюсь за кривость языка :)

Понял, спасибо! Я знаком с концепцией расширения спектра (изучал немного основы цифровой беспроводной передачи данных), а вот именно о ПСП не слышал.

 

Я бы на Вашем месте попробовал показать все на примере совсем примитивного роутера етернет или еще каких пакетов, соединяющее несколько компьютеров.

К сожалению, это не пройдет. У меня тема - именно математический сопроцессор, а не коммуникационный контроллер...

Так что, остается только подбор паролей по известному значению хэша? Больше ничего в голову не приходит...

 

 

Может, какие-нибудь численные методы на много-много итераций?

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


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

К сожалению, это не пройдет. У меня тема - именно математический сопроцессор, а не коммуникационный контроллер...

Так что, остается только подбор паролей по известному значению хэша? Больше ничего в голову не приходит...

Может, какие-нибудь численные методы на много-много итераций?

Например такая задача:

Есть фото человека и есть база людей с "кучей" фото. Вам надо быстро найти человека (ФИО, адрес проживания и т.д.). Комп очень долго будет производить сравнение, а если например в ПЛИС организовать распаралеливание и ускорить поиск. Вначале ПЛИС получает начальную фото человека, который разыскивается, т.е происходит начальная инициализация. Потом Комп последовательно выдает в ПЛИС (может быть несколько) фото из базы и получает ответ от ПЛИС совпало или нет, если нет Комп передает новое фото и так далее.

Задача я так думаю будет актуальна правохранительнм органам, особенно если база более 1 000 000 людей.

 

Или тут Комп (процессор) тоже выигрывает?

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


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

Уважаемый jojo,

 

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

 

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

 

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

Это даже можно утверждать :)

 

На вещественных операциях, весьма вероятно, ПЛИС проиграет процессору.

На днях позавидовал четырём терафлопсам ATI, посмотрел IP Virtex-6 LX240T. Пожалуй, что-то близкое к 10...50 Гфлопс из него можно выжать, если сильно повезёт. Но у нас есть в запасе ход конём - можно попытаться выполнить операции в каком-то промежуточном представлении чисел, не производя преобразование в IEEE754 туда-сюда..

 

Был бы интерес к задаче, а оптимизацию мы завсегда можем провести.

 

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

Это значит, что нам достаточно логических ресурсов, достигнута высокая частота, отсутствуют ограничения на потоки данных.

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

Третий файктор влияет на простой юнитов и вызывает снижение производительности.

 

В GPU и x86 есть слабые места - архитектура и набор инструкций.

Например, при недостатке shared memory в GPU или регистров в x86 конвейер может простаивать.

Или в наборе инструкций SSE нет циклического сдвига, тоже теряем производительность. Опять же, двухоперандные инструкции задают свои ограничения.

 

Потом, мы можем сделать нестандартную аппаратуру, например, с синхронным статическим ОЗУ, с гигабитными линками между платами.

Наконец, ПЛИС потребляет значительно меньше, чем GPU и процессор, даже тогда, когда их обгоняет по производительности.

 

 

 

 

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


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

Или тут Комп (процессор) тоже выигрывает?

От скорости ввода/вывода зависит. Если бы по Pci-express мой сопроцессор подключить - можно было б думать, а так - мне надо искать задачи, которые не упираются в ввод-вывод...

 

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


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

От скорости ввода/вывода зависит. Если бы по Pci-express мой сопроцессор подключить - можно было б думать, а так - мне надо искать задачи, которые не упираются в ввод-вывод...

и только от ввода/вывода информации????

Почему Вы так считаете?

 

Было бы не плохо этот документ почитать

 

Довольно интересный докумет :)

 

Документ №2

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


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

Покупать эту статью лениво, но я могу привести

противоположное мнение

 

 

Читаем этот документ, тесты на С1060, получено 3ГФлопа. Достал из чулана старую теслу С1060, чтоб по-чесному было, запустил только что на ней GEMV (то, что эти авторы почему-то называют GAXPY), получил 31ГФлопс. После такого вранья читать дальше этот опус расхотелось.

 

 

 

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

 

ЗЫ: современный 5790 радеон у меня делает ту старую С1060 Теслу раз так в 10. А на плисках за два последних года число умножителей в 10 раз тоже увеличилось? :)

 

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

Это даже можно утверждать :)

 

согласен!

 

На днях позавидовал четырём терафлопсам ATI, посмотрел IP Virtex-6 LX240T. Пожалуй, что-то близкое к 10...50 Гфлопс из него можно выжать, если сильно повезёт.

 

Но у нас есть в запасе ход конём - можно попытаться выполнить операции в каком-то промежуточном представлении чисел, не производя преобразование в IEEE754 туда-сюда..

 

Тоже согласен, если задача позволяет. Одна задача мне позволила сделать такой ход конем на третьем стратиксе, и чтобы получить такую же скорость обработки данных, я должен был достичь 900ГФлопс на ГПУ.

 

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

 

Наконец, ПЛИС потребляет значительно меньше, чем GPU и процессор, даже тогда, когда их обгоняет по производительности.

 

Согласен. Мои данные о той же 900ГФлопной задаче - плисовская борда потребляла 20ватт, а система с двумя ГПУшками на шестиядернике - около 700 ватт. Хотя гигафлопы на бакс оказались одинаковыми :(

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

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


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

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

 

Тут главное, чтобы было, ради чего работать. "А если нам нужно сделать невозможное, мы поручаем это русским инженерам" ©.

 

Чтобы время разработки сократить, нужно сделать свой аналог CUDA SDK.

Один раз пройти через драйверописательство и PCIExpress-строительство, потом делать повторное использование библиотек.

 

Кернелы в ПЛИС можно менять за 100-200 мс через SelectMap.

Наверное, можно сделать даже частичную реконфигурацию, но я не готов бодаться с САПР Xilinx ради неё.

 

 

 

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


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

Я с ГПУ не сталкивался, но можно вставить маленькое абстрактное замечание?

Нельзя ли привинтить условия, в которых GPU проигрывает?

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

Рассмотреть две задачи: работа в стерильном ангаре с большой трубой, из которой поступает жидкий азот со скоростью 10 м3/с, питание от маленькой АЭС рядом с ангаром.

И обратная ситуация. Пыль, грязь, шум, гам, вибрации, устройства размером со спичечный коробок, питание от батареек игрушек серии "Ну погоди" и охлаждение, только если техперсонал подбежит к прибору и подует. Ну и навводить каких-нибудь критериев. Что вот для таких условий ГПУ - это наше все, а вот в таких - ПЛИСы при меньшей производительности рвут ГПУ, как тузик грелку.

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


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

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

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

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

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

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

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

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

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

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