Параллельная обработка на ПЛИС.Как начать с? - PullRequest
3 голосов
/ 22 октября 2011

У меня сложная вычислительная задача, которую я использовал для реализации CUDA, и теперь я хочу сделать ее еще быстрее с помощью FPGA (если это возможно)

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

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

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

Ответы [ 2 ]

2 голосов
/ 24 октября 2011

Большие преимущества от FPGA по сравнению с использованием графического процессора обусловлены:

  • Использование нестандартной ширины слова, оптимизированной для вашего приложения.Это допускает более плотную логику, которая позволяет использовать более параллельные блоки обработки
  • , используя ваши знания необходимых обращений к внешнему ОЗУ, чтобы планировать их аппаратно более эффективно, чем контроллер памяти общего назначения.

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

Вероятно, вам понадобится плата на основе PCI Express.Что является (я представляю) совершенно новой кривой обучения, прежде чем вы сможете что-то делать с ПЛИС - но если вы готовы к этому, это будет очень интересная задача!

С точки зрения выбора ПЛИС, поиграйте с программными инструментами разных производителей - на этапе обучения это гораздо важнее самих чипов.Вы не найдете (на этой ранней стадии обучения) функции «стоп-шоу» ни в одном из различных чипов.Также учитывайте наличие плат с необходимыми интерфейсами и любое IP-ядро, которое может потребоваться для высокоскоростного интерфейса (например, PCIe)

1 голос
/ 22 октября 2011

Вы можете значительно ускорить большинство параллельных задач с FPGA.

Однако, помимо реализации ваших вычислений на ПЛИС, существует много работы по получению данных назад и вперед из ЦП / основной памяти. Это потребует реализации (например) конечной точки PCI Express в логике FPGA (мастеринг шины для максимальной скорости) и пользовательских драйверов на стороне программного обеспечения. Большинство операционных систем требуют, чтобы эти драйверы разрабатывались в режиме ядра.

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

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

Если вы полны решимости сделать это самостоятельно, вам понадобится какое-то оборудование. Многие разные компании предлагают ПЛИС, подключенные в качестве ускорителей, например http://www.nallatech.com/pci-express-cards.html

В зависимости от того, выберете ли вы ПЛИС Xilinx или Altera, вы найдете много примеров кода и учебных пособий для работы PCI Express.

...