Nexys 2 1200K FPGA Xilinx Spartan-3E подходит?
Я хочу ускорить вычисления некоторых математических алгоритмов, работающих с ценами на финансовые инструменты. Это FPGA что-то уместное? Как это сравнивается с другими FPGA? Должен ли я придерживаться CUDA, а не беспокоиться о FPGA (но все же я хотел бы научиться программировать гейты, поэтому я очень хочу его купить). Это правильный выбор или есть лучший выбор цена / качество? Сколько сложных программ он может обрабатывать? Могу ли я использовать библиотеки C++ (например, QuantLib) и скомпилировать код в чип?
Nexys 2 1200K FPGA Xilinx Spartan-3E
информация: http://kamami.pl/index.php?ukey=product&productID=59726
Ключевая особенность:
Xilinx Spartan-3E FPGA 1200K gate USB2 port providing board power, device configuration, and high-speed data transfers Works with ISE/Webpack and EDK 16MB fast Micron PSDRAM 16MB Intel StrataFlash Flash R Xilinx Platform Flash ROM High-efficiency switching power supplies (good for battery-powered applications 50MHz oscillator, plus a socket for a second oscillator 75 FPGA I/O's routed to expansion connectors (one high-speed Hirose FX2 connector with 43 signals and four 2x6 Pmod connectors) All I/O signals are ESD and short-circuit protected, ensuring a long operating life in any environment. On-board I/O includes eight LEDs, four-digit seven-segment display, four pushbuttons, eight slide switches Ships in a DVD case with a high-speed USB2 cable
Есть ли аналогичный инструмент для C++? http://blogs.msdn.com/b/satnam_singh/archive/2010/10/15/compiling-c-programs-into-fpga-circuits-factorial-example.aspx
кажется, есть такие инструменты: http://www.fpgarelated.com/usenet/fpga/show/21843-1.php
я могу преобразовать в Verilog или VHDL C++ код, который использует внешнюю библиотеку C++?
2 ответа
Я нашел хороший источник информации здесь: 1, 2
и здесь:
"Сейчас мы видим, как производители используют всю мощь чипа", - говорит Перретт.
"Традиционно они предлагали разработчикам чистый холст, затем они применяли подход, согласно которому были добавлены различные ядра, такие как MegaWizard от Altera и CORE Gen из Xilinx, которые были известными, хорошо известными конструкциями вокруг таких вещей, как FIFO (первыми в первых). -из). Это было здорово, потому что вы могли довольно легко создать дизайн, используя это "Lego". Но на самом деле он не предлагал многогранную платформу для разработки алгоритмов. Да, у вас были операторы AND, OR и другие арифметические операторы, но попытка построения логических или алгоритмических выражений с использованием отдельных компонентов может оказаться довольно весомой и не очень оптимизированной. Таким образом, чтобы сделать что-то умное, например, стандартное отклонение, вы были в основном сами по себе и должны были разработать его самостоятельно ".
По словам Перретта, сейчас ситуация меняется.
"Сейчас мы видим инкапсуляцию некоторых из этих алгоритмов, предлагаемых самими поставщиками", - говорит он. "Это означает, что в будущем такие компании, как наша, могут смотреть на предложение разработки алгоритмов либо в качестве инструмента профессиональных услуг, либо с помощью нашего собственного API, к которому клиенты могут подключиться как часть платформы EMS".
Такие вещи, как стандартное отклонение, могут включать обработку с плавающей запятой, которая является областью, в которой FPGA традиционно были слабыми, хотя производители микросхем FPGA, такие как Altera, проделали большую работу в своей цепочке инструментов для поддержки разработки с плавающей запятой, используя IEEE 754, формат с плавающей запятой для математических сопроцессоров.
Однако, по словам Рона Хуизена, вице-президента по технологиям в BittWare, поставщике вычислительных систем FPGA, разработка конструкций с плавающей запятой в FPGA может все еще быть трудоемкой разработкой, поэтому его фирма предложила альтернативный подход.
"Плавающая точка в FPGA может обеспечить колоссальную производительность, но это не так просто сделать для сложных алгоритмов", - заявляет Хуйзен. "Таким образом, мы инвестировали в то, что мы называем сопроцессором с плавающей запятой для FPGA, Anemone, который на самом деле представляет собой небольшой многоядерный программируемый C-процессор с очень низким энергопотреблением, предназначенный для установки рядом с FPGA, чтобы вы могли разгрузить с плавающей точкой к нему и написать C-код для управления им. Таким образом, вы можете оптимизировать более простые части ваших алгоритмов в чистой FPGA и оставить сложные части, или те, которые часто меняются, в C на программируемом сопроцессоре ".
Это отличается от большинства других подходов, согласно Huizen.
"Другие люди пошли по пути, когда программируемый процессор является центром с ПЛИС на периферии, но поскольку мы работаем в основном в ПЛИС, мы видим это с другой стороны. Мы сознательно сделали этот сопроцессор небольшим, с низким энергопотреблением и очень высокой производительностью, потому что нам не нужны все остальные интерфейсы, для этого и нужна сама FPGA. Если вы посмотрите на типичный сопроцессор Texas Instruments, это большой энергоемкий чип с встроенным интерфейсом PCIe, 10GbE и всеми этими интерфейсами, тогда как у нас есть очень маленький чип с внешними портами, которые подключаются к FPGA и тогда есть 16 ядер, которые просто работают. Таким образом, мы получаем 24 гигафлопс в менее чем 1 Вт общей мощности ядра.
"Парни, которые занимаются чисто сетевым интерфейсом, вероятно, не заботятся о плавающей точке так же сильно, как те, кто занимается аппаратным ускорением и анализом рисков", - предлагает Хайзен, - "но для людей, пытающихся использовать свои большие алгоритмы на ПЛИС Есть некоторые вещи, которые все еще трудно сделать в FPGA. Таким образом, при таком подходе, где происходит много принятия решений или если есть вещи, которые меняются очень часто, они могут поместить это в C-код и вместо этого запустить его в сопроцессоре Anemone.
"Мы наблюдаем большой интерес к этому со стороны людей из области финансов, потому что это означает, что они могут принимать решения в пространстве FPGA вместо того, чтобы отправлять их в ЦП Intel по шине PCIe, где есть задержка, а Linux имеет иметь дело с этим. Имея процессор Anemone, находящийся непосредственно в стороне от FPGA, они могут принять некоторое решение и приблизить его к аппаратному обеспечению, но все же записать его в коде C ", - говорит Хуизен, -" Они признали, что сопроцессор Anemone действительно 16 маленьких RISC-движков, которые могут запускать любой код, он не обязательно должен быть основан на плавающей запятой. Таким образом, вы можете запустить 16 потоков управления параллельно без переключения контекста ".
другое решение: http://www.bittware.com/products-services-value-add-products-for-fpga/anemone104-co-processor-for-fpgas
Это хорошая учеба, но я сомневаюсь, что вы сможете получить хоть какую-то приличную карту CUDA по производительности с плавающей запятой (обратите внимание, что Spartan-3 уже устарела на несколько поколений).
И нет, вы не можете взять библиотеку C++ и скомпилировать ее в дизайн FGPA.