FPGA измеряет точное время

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

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

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

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

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


person llazzaro    schedule 26.11.2010    source источник


Ответы (1)


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

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

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

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

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

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

Удачного взлома!

person Jan Gray    schedule 26.11.2010