FPGA измеряет точное время - PullRequest
1 голос
/ 26 ноября 2010

Мы проверяем, насколько быстрым является алгоритм, работающий на компьютере FPGA по сравнению с компьютером Normal Quad x86.

Теперь на x86 мы много раз запускаем алгоритм и берем медиану, чтобы устранить издержки ОС, также это «очищает» кривую от ошибок. Это не проблема.

Мера в алгоритме FPGA является цикличной, а затем переводит циклы во времени, а FSMD тривиально подсчитывать циклы в любом случае ...

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

Я хочу знать, существует ли бумага или какая-то идея для измерения в реальном времени.

1 Ответ

5 голосов
/ 27 ноября 2010

Если вы пытаетесь установить, что ваша реализация FPGA является конкурентоспособной или превосходящей, и, следовательно, может быть полезна в реальном мире, тогда я рекомендую вам сравнить ** настенные часы ** на многопроцессорной и FPGA-реализации. Это также поможет вам не упустить из виду эффекты производительности, выходящие за пределы канала данных FSM + (например, задержки ввода-вывода).

Я согласен с тем, что число циклов отчетности только не является репрезентативным, поскольку время цикла FPGA может быть в 10 раз больше, чем у стандартных микропроцессоров.

Теперь о некоторых дополнительных нежелательных советах. Я был на многочисленных конференциях FCCM и подобных, и я слышал много десятков сравнительных тестов производительности реализации FPGA и производительности CPU. Слишком часто в статье сравниваются пользовательские реализации FPGA, которые занимали месяцы, с программной реализацией CPU +, в которой инженер просто взял исходный код эталонного теста с полки, скомпилировал его и запустил за один день. Я не считаю такие презентации особенно убедительными.

Достоверное сравнение позволило бы оценить программную реализацию, в которой используются лучшие практики, лучшие доступные библиотеки (например, Intel MKL или IPP), в которых используется многопоточность для нескольких ядер, в которых вместо векторных используется SIMD (например, SSE, AVX, ...) скалярные вычисления, в которых использовались такие инструменты, как профилировщики, для устранения легко исправляемых потерь, и, например, Vtune для понимания и настройки иерархии кэш + память. Также, пожалуйста, не забудьте указать фактическое время, затраченное на разработку FPGA, по сравнению с реализацией программного обеспечения.

Больше бесплатных советов: в эти сфокусированные на энергии времена, когда результаты / джоуль могут превзойти результаты / секунду, рассмотрите также сообщение об энергоэффективности ваших реализаций.

Еще один бесплатный совет: для получения максимально повторяемого времени на «quad x86» обязательно остановите машину, выключите фоновые процессоры, демоны, службы и т. Д., Отключите сеть.

Счастливого взлома!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...