Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Parallel computing FPGA
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
nachinayuschiy
Нужно в учебный студенческих целях паписать статью о параллельных вычислениях в ПЛИС, о принципах параллелизма и прочее что с этим связано. Сейчас собираю материал по этому поводу. Не поделитесь интересными и полезными источниками?
DmitryR
Принципиально сами ПЛИС ничего нового именно в параллельные вычисления не вносят. Они могут динамически реконфигурироваться, но это используется нечасто (так как сложно в реализации), и не является опять же фишкой именно параллелизма. Поэтому вы лучше поищите в форумах по вычислениям, а потом просто перенесите эти рассуждения применительно к ПЛИС. То есть если вы тут спросите более конкретно, например какой тип вычислений лучше организовать в ПЛИС, тот или этот вам быстрее и предметнее ответят.
EvgenyNik
Простые пример, от чего бы я начал "копать":
1. f= x1 + y1 + x2 + y2 +... xn + yn
Как будет считать проц? В простейшем случае - по порядку, плюсик за плюсиком. Те, что с двумя АЛУ - чуть оптимальнее.
А ПЛИС может и так: f1 = x1 + y1, одновременно с этим f2 = x2 + y2 и т.д., потом тоже самое f12 = f1 + f2 по принципу пирамиды.
Очень хорошо воспринимается на примере счёта такой суммы одним студентом, например, и целой группой с заранее разбитыми слагаемыми. Сразу понимаешь прирост в скорости и повышение запросов на ресурсы и стоимость (кормить же надо группу smile.gif ).
Но это примитивно.
2. Вычисление с применением последовательных итераций (метод наименьших квадратов в n-мерном пространстве, допустим, где несколько координат). Каждый этап вычисления можно реализовать на своём конвеере. Для наглядности опять на студентах:
первый студент (С1) считает первую операцию (О1), второй студент на основе его результата - вторую (О2)... Так просчитывается вся первая итерация (И1). Но когда начинает считать второй студент (С2) свою О2И1 - первому то С1 уже делать нечего и он может начинать считать О1И2 и т.д. Этакий конвеер конвееров. В отличие от процов, в этом конвеере одновременно выполняются однотипные операции (как если бы было 10-100 АЛУ). Это уже красивее, но какой-то изюминки не хватает.
3. Лично мне изюминкой видится возможность параллельного хода по нескольким ветвлением с постпроверкой условия, особенно, если условие вычисляется слижком уж долго. Параллельно идёт вычисление условия и подготовка реакций и вспомогательные вычисления для любого из случаев. И, в общем то, число ветвлений может быть достаточно велико. Опять-таки, пример со студентами - каждый пишет "бомбу" только на 1 билет, а на экзамене передаёт свой ответ - нуждающемуся smile.gif Выйгрыш по времени подготовки ответа - очевиден, воспитательную сторону дела - опускаем.
nachinayuschiy
Очень удачные размышления, спасибо вам. а ссылочками в тему не владеете? если есть что-то подобное про что вы сейчас пишете только представленное в виде статей, буду очень благодарен.
DeadMoroz
Такая вот например тема была:
http://electronix.ru/forum/index.php?showtopic=59302
В том числе там и ссылочка есть на книжку отечественную.
EvgenyNik
Ссылочек нет. Это личные размышления от 10-летней работы с CPLD/FPGA.
nachinayuschiy
Евгений Николаев, а не могли бы вы ещё озвучить несколько примеров со своего опыта аналогичных тем, что вы приводили в предпоследнем посте. Очень уж заинтересовали ваши идем. smile.gif
syoma
Если получите доступ в Свои, то я там забросил семинар Xilinx по DSP с использованием ПЛИС.
http://electronix.ru/forum/index.php?showtopic=45127

В принципе смысл сводится к тому, что в ПЛИС можно вырастить сколько угодно умножителей и сумматоров. При этом даже самый навороченный DSP будет переплюнут на порядки. Внизу эта тема и пдф с производительностью
http://electronix.ru/forum/index.php?showtopic=50650
nachinayuschiy
У меня вопрос, существуют ли САПРы производящие оптимизацию кода по прнципу параллелизма? Если да то где про это можно почитать?
EvgenyNik
Насколько я понимаю, Вам нужен теоретический подход, "писабельная" информация. Не скажу за всех присутствующих, но я инженер-практик и многие сведения находятся только в сознании в форме близкой к интуиции, а вовсе не тексту статей.
Статьи, наверняка, по этим темам есть, но их коллекционированием не занимаюсь.
FPGA'шные САПРы как раз и оптимизируют параллельные конструкции, т.е. то, что такие САПР существуют - это однозначно smile.gif
nachinayuschiy
Евгений Николаев, мне просто интересно есть САПРы которые делают то что вы предложили в примерах?
dvladim
Цитата(nachinayuschiy @ Jun 5 2009, 18:22) *
Евгений Николаев, мне просто интересно есть САПРы которые делают то что вы предложили в примерах?

САПР сделает то, что вы ему описали. Вы же не будете САПРу на русском писать? Вы ему описываете поведение на Verilog или там еще на чем-нибудь. Опишете последовательные вычисления - получите последовательные, опишете параллельные - получите параллельные. Реализацию делаете вы, а не САПР.
Это я насчет САПРов производителей ПЛИС (Altera Xilinx ...)

А так чтобы софт сам выбрал реализацию - это ближе с синтезу с SystemC, но это дело как-то заглохло ввиду низкой эффективности по сравненю с ручной реализацией.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.