Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cyclone 4 vs Spartan 6 for ray tracing
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
FROL_256
Добрый день, уважаемые обитатели форума. Я совсем новичок в деле проектирования ПЛИС поэтому ногами просьба не бить.

Некоторое время назад я прочитал несколько статей, где на плис делали трассировку лучей. Например,
"Accelerating the bidirectional path tracing algorithm using a dedicated intersection processor"
"Realtime Ray Tracing of Dynamic Scenes on an FPGA Chip"

И мне захотелось в целях образования сделать свой велосипед. Оценив свои скромные ресурсы в 200-400 (ну максимум 500) долларов, я стал подбирать плату.
Из того что мне удалось найти у российских дистрибьюторов, пока что остановился на 2 вариантах:

1) http://www.xilinx.com/products/devkits/EK-S6-SP605-G.htm (характеристики тут есть http://www.plis.ru/pic/pict/File/Spartan-6_table.pdf)
2) http://www.terasic.com.tw/cgi-bin/page/arc...02&PartNo=1

Меня немного обескураживают вот что:
Несмотря на то что Cyclone 4 стоит дешевле, у него 266 встроенных умножителей против 38 у Spartan6-LX45T. Аналогична ситуация и с кол-вом логических ячеек. 114 тыс. у циклона против 46 тыс. у Spartan.
Ну и вообще циклон вроде бы далеко впереди по ресурсам. Но что-то тут нечисто. Может Spartan все же чем-то лучше? Может там трассировочные ресурсы получше?

В плате фирмы ксайлинкс меня привлекает прежде всего PCI-e. Наверное можно будет организовать шуструю передачу данных между CPU и плис по шине PCI-e.
Но с другой стороны особого смысла в этом нет так как на ПЛИС я все-равно не получу сверх скорости, м.б. только если виртекс-6...
Зато у циклона на плате ЖК дисплей и еще цифры какие-то. И всего за 329 долларов. Выглядит заманчиво)

Как мне кажется, количество умножителей для меня критично т.к. операцию пересечения луча и треугольника я буду реализовывать фактически как умножение точки на матрицу.
Есть такой хитрый способ. И это еще все это во float надо делать. То есть мне кажется что мне нужно много умножителей.

Подскажите пожалуйста, что для меня может быть лучше. Может какие-то еще варианты есть?
Заранее спасибо.

rloc
Сравните стоимости кристаллов на этих платах (по американским ценам):
XC6SLX45T FGG484-3CES ~ 90$
EP4CE115 FBGA780 ~ 320$

Выводы делайте сами.

P.S. На Spartan-6 можно легко запустить обработку на 300MHz.
P.P.S. Материально оценивать надо не свои скромные ресурсы, а ресурсы работодателя.
Shtirlits
Может быть лучше не начинать с покупки плат, а поставить quartus с ise и написать схему так,
чтобы собиралась во под разные платформы.
Это не так страшно, как кажется. Для начала я бы привел к общему знаменателю платформозависимые примитивы - PCIe, умножители, память и менеджеры клоков. Затем, опираясь на унифицированные блоки, описал схему.

О каком качестве принятия решения можно говорить сейчас, когда вы обладаете минимумом информации?
А максимум будет после окончательной отладки и разводки схемы. Сама плата для этого вообще не нужна.
FROL_256
rloc
Большое спасибо, теперь сомнений не осталось.

Shtirlits
Ну я думал так начать что-то делать, но многие говорят что лучше сразу иметь плату чтобы все на ней тестировать.
Вот прямо сделал - посмотрел работает ли. Двигаться маленькими шагами. Мне такой подход тоже более привычен.
Сразу то я рей-трейсинг не сделаю. Сначала флоат-арифметику, потом матрицы и там, я так подозреваю, геморроя будет много.
Maverick
Цитата(FROL_256 @ Sep 3 2010, 17:51) *
Добрый день, уважаемые обитатели форума. Я совсем новичок в деле проектирования ПЛИС поэтому ногами просьба не бить.

Некоторое время назад я прочитал несколько статей, где на плис делали трассировку лучей. Например,
"Accelerating the bidirectional path tracing algorithm using a dedicated intersection processor"
"Realtime Ray Tracing of Dynamic Scenes on an FPGA Chip"

И мне захотелось в целях образования сделать свой велосипед. Оценив свои скромные ресурсы в 200-400 (ну максимум 500) долларов, я стал подбирать плату.

Подскажите пожалуйста, что для меня может быть лучше. Может какие-то еще варианты есть?
Заранее спасибо.


Если не секрет - после выбора платы, где будете покупать, какие гарантии работоспособности купленной платы?. Цена по сравнению с сайта производителя (Xilinx, Altera) возрастет в 1,5-2 раза из-за доставки, таможни и т.д.
PS Во всяком случае в Украине - точно. Деньги - не маленькие sad.gif sad.gif
Shtirlits
Не понимаю, зачем нужно живое железо, если на плате все документированное и есть симулятор.
Какую информацию можно получить запуская вживую, но нельзя получить из симулятора?
vetal
Цитата
Сразу то я рей-трейсинг не сделаю. Сначала флоат-арифметику, потом матрицы и там, я так подозреваю, геморроя будет много.

Этот путь нужно проходить с использованием программных средств отладки. Живые платы нужно использовать когда потребуется отлаживать интерфейс с внешним миром.
Koluchiy
Честно говоря, я не понял, что Вы собираетесь делать с платой в плане трассировки лучей?
FROL_256
Цитата(vetal @ Sep 3 2010, 21:42) *
Этот путь нужно проходить с использованием программных средств отладки. Живые платы нужно использовать когда потребуется отлаживать интерфейс с внешним миром.

Ну разумеется нужен интерфейс с внешним миром. Как же я буду сцену то заливать в память ПЛИС?
Я хочу чтобы можно было перекачать данные с обычной памяти в память ПЛИС, там посчитать что-то и опять-же что то скопировать обратно. Например индекс треугольника.
Ведь там всякая загрузка сцены, построение ускоряющих структур на CPU написано. Я хочу постепенно переносить часть функциональности в плис.
Я опасаюсь что у меня возникнут с этим проблемы.

Покупать собираюсь тут http://www.altera.ru/. Насколько я понял там можно заказать.
Очень хорошо что вы критикуете мое решение, я уже думаю купить плату подешевле- DE0 за 100$).
Я только опасаюсь что в какой-то момент мне не хватит тамошних ресурсов, но 100 это уже не 300, не так страшно в принципе.


Цитата(Koluchiy @ Sep 3 2010, 22:02) *
Честно говоря, я не понял, что Вы собираетесь делать с платой в плане трассировки лучей?

Ну я хочу реализовать частично алгоритм в железе. Просто попробовать сделать специальные юниты, которые будут считать для начала пересечение луча и треугольника.
В данный момент только в обучающих целях. Поиграть и посмотреть что получится. Я не претендую на супер-мега ускорители рей-трейсинга.
dmitry-tomsk
Попробовали бы сделать хотя бы Ваш треугольник в схеме и симуляторе. Как сделаете, уверен, появятся spartan-8 и cyclone-6. Придётся на новое железо тратиться. smile.gif
Koluchiy
Цитата(FROL_256 @ Sep 3 2010, 22:13) *
Ну я хочу реализовать частично алгоритм в железе. Просто попробовать сделать специальные юниты, которые будут считать для начала пересечение луча и треугольника.
В данный момент только в обучающих целях. Поиграть и посмотреть что получится. Я не претендую на супер-мега ускорители рей-трейсинга.


Ну то есть Вы хотите закачивать в ПЛИС данные, чтобы она считала, обратно передавать в комп и отображать/использовать там?
FROL_256
Цитата(Koluchiy @ Sep 3 2010, 22:20) *
Ну то есть Вы хотите закачивать в ПЛИС данные, чтобы она считала, обратно передавать в комп и отображать/использовать там?

Именно так.

Цитата
Попробовали бы сделать хотя бы Ваш треугольник в схеме и симуляторе. Как сделаете, уверен, появятся spartan-8 и cyclone-6. Придётся на новое железо тратиться.

Ну я подозреваю, что так и будет, да. smile.gif

Мне в DE0 не нравится что памяти мало, не влезет большая сцена. А в 128 M DE2-155 можно вполне серьезную сцену засунуть.
И логических ячеек там в 10 раз меньше почти. Пока все-таки думаю что DE2-155 для меня идеально.
Shtirlits
Предлагаю купить один или даже пару дешевых наборов обеих контор, только для того, чтобы подержать это все руками, потыкать осциллографом, запустить на живом железе какую-нибудь лично разработанную схему.
Боевые схемы для трассировки лучей или чего-то еще реально полезного покупать только когда уже есть готовая прошивка.

Как мне кажется, если и будет польза от трассировки лучей в fpga, то на микросхемах верхнего ценового диапазона. Хотя...
VladimirB
Цитата(FROL_256 @ Sep 3 2010, 22:13) *
Ну разумеется нужен интерфейс с внешним миром. Как же я буду сцену то заливать в память ПЛИС?
Я хочу чтобы можно было перекачать данные с обычной памяти в память ПЛИС, там посчитать что-то и опять-же что то скопировать обратно. Например индекс треугольника.
Ведь там всякая загрузка сцены, построение ускоряющих структур на CPU написано. Я хочу постепенно переносить часть функциональности в плис.
Я опасаюсь что у меня возникнут с этим проблемы.


Если вы начинающий, то боюсь что вы 50% времени или даже больше убьёте не на рей-трейсинг,
а на высокоскоростной интерфейс обмена данными с ПК (PCI-E или Gigabit Ethernet).

Есть конечно RS-232, его поднять легко - но скорость просто никакая.

Так что учитывайте при выборе платы, наличие, скорость и простоту поднятия того или иного интерфейса с ПК.
FROL_256
VladimirB
Да, я опасаюсь по поводу передачи данных, что это будет не так просто.
Но для начала можно на низко скоростном интерфейсе. Для экспериментов это не так важно. Такты я смогу померить, значит смогу оценить производительность отдельных элементов.
А по UBS не должно быть какого-нибудь простого способа? Написано что драйвер ПК для USB идет в комплекте, ну что-же он должен делать... Как в первой статье про bidirectional path tracing (но там правда был Virtex-4).

Shtirlits
Ну да, в принципе я так и хочу сделать. Но на пару времени не хватит, с одной бы разобраться. Просто если решать между DE0 и DE2-115 то DE2-115 конечно стоит в 4 раза дороже, но зато ресурсов больше почти в 10 раз.
Как-то я привык выбирать железо, оценивая его характеристики, а не прямой юз-кейс. Хотя м.б. и не очень верно в случае ПЛИС.

В юзер мануале написано что есть пример. Ну я попробую на основе этого примера что-то сделать м.б.
Two complete examples of USB drivers, for both host and device applications, can be found in Sections 6.4 and 6.5. These demonstrations provide examples of software drivers for the Nios II processor.
Но да, я начинаю понимать что все немного хуже чем я думал)

Reanimator++
Frol_256
Смысл в том что на другом конце у вас ничего нету и вам придется сначала создать инфраструктуру, обслуживающую интерфейс, и думать как цеплять ее к своему проекту.
В случае с Nios - частью этой архитектуры является процессор (его зовут Nios) с готовым переферийным модулем, обслуживающим интерфейс. И в примере идут драйвера этого модуля для этого процессора.. Оно конечно гибко и чел может сразу запустить и заодно свой код добавить но для вашего случая имхо лишний процессор внутри не нужен.

У вас же типа вычислитель - ему надо насунуть данные, нажать на рычаг, забрать посчитанные данные..
Надо интерфейс по типу регистров - передали адрес регистра, залили данные. Запустили расчет, подождали. Потом забрали данные из других регистров..
Я вижу это как-то так. И все это железо вам надо будет программировать..
Для ускорения процесса, естественно, данные надо обрабатывать пачками и поставить это дело на поток )
FROL_256
Reanimator++
Ну а что тогда вы можете посоветовать? Мне действительно нужен простой интерфейс вроде того что вы описали.
Конечно идеально было бы просто записать данные по адресу (например) 0xAA003456 и потом считать их по какому-то другому адресу 0xBB003456. Но насколько я понял, изначально такой возможности у меня не будет.
С ethernet-ом пример еще хуже, там уже целый программный стек вместе с ОС на этом ниосе.
Reanimator++
Не факт что Ethernet хуже, лично мне оно даже ближе чем PCI и иже с ними.
Почитайте темы на этом форуме, полный стек протоколов для больших объемов данных не применяют - просто отсылают в raw виде на уровне MAC. Можно сделать UDP.
Я посоветую почитать книжки ) Доки с сайтов производителей. Как вообще плис работает и почему программистский подход там непременим - это железо.
Изначально у вас не будет ничего, просто голый кристалл, куда вы уже будете свою логику вживлять..
vadimuzzz
возьмите такой http://www.altera.com/products/devkits/alt...iv-starter.html кит, там и eth, и pci есть
FROL_256
Цитата(vadimuzzz @ Sep 6 2010, 04:22) *
возьмите такой http://www.altera.com/products/devkits/alt...iv-starter.html кит, там и eth, и pci есть

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

Цитата(Reanimator++ @ Sep 5 2010, 23:21) *
Не факт что Ethernet хуже, лично мне оно даже ближе чем PCI и иже с ними.
Почитайте темы на этом форуме, полный стек протоколов для больших объемов данных не применяют - просто отсылают в raw виде на уровне MAC. Можно сделать UDP.
Я посоветую почитать книжки ) Доки с сайтов производителей. Как вообще плис работает и почему программистский подход там непременим - это железо.
Изначально у вас не будет ничего, просто голый кристалл, куда вы уже будете свою логику вживлять..


Ну ок, спасибо. Если будет нормальный пример который можно начать крутить, то почему бы и нет. юзер-гайде я такого не нашел, но поищу еще где-нибудь.
Reanimator++
http://www.fpga4fun.com/
FROL_256
Цитата(Reanimator++ @ Sep 6 2010, 11:33) *

Здорово, там есть простой на вид пример с 10BaseT. Я думаю что попробую для начала его реализовать.
Reanimator++
для начала рекомендую светодиод и пищалку smile.gif)
yes
по-моему начать надо с алгоритма обработки,
который надо описать платформонезависимо и синтезировать для одной из платформ.

то есть вопрос упирается в выбор метода описания и отладки.
насколько я понимаю приемлемых готовых решений в этой области (3D HW ускорители??) не дают бесплатно

то есть нужно это написать и отладить -
какой язык/метод выберите ?
HDL (SV, Verilog, VHDL...), untimed C, timed C, C2HDL?
какие инструменты сумеете добыть?
и т.д.

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

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




Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.