我们正在检查在 FPGA 与 Normal Quad x86 计算机上运行的算法有多快。
现在在 x86 上,我们多次运行该算法,并取一个中值以消除操作系统开销,这也从错误中“清除”了曲线。那不是问题。
FPGA算法中的度量是以周期为单位,然后将周期计时,而FSMD无论如何都可以计算周期......
我们认为计数周期是太“纯”的度量,这在理论上可以做到,不需要进行真正的度量或在真实的 FPGA 中运行算法。
我想知道是否存在论文或一些想法来进行实时测量。
我们正在检查在 FPGA 与 Normal Quad x86 计算机上运行的算法有多快。
现在在 x86 上,我们多次运行该算法,并取一个中值以消除操作系统开销,这也从错误中“清除”了曲线。那不是问题。
FPGA算法中的度量是以周期为单位,然后将周期计时,而FSMD无论如何都可以计算周期......
我们认为计数周期是太“纯”的度量,这在理论上可以做到,不需要进行真正的度量或在真实的 FPGA 中运行算法。
我想知道是否存在论文或一些想法来进行实时测量。
如果您试图确定您的 FPGA 实现具有竞争力或优越性,因此可能在现实世界中有用,那么我鼓励您比较多处理器与 FPGA 实现上的**挂钟时间**。这也将有助于确保您不会忽视 FSM + 数据路径之外的性能影响(例如 I/O 延迟)。
我同意仅报告周期计数不具有代表性,因为 FPGA 周期时间可能是现成商品微处理器的 10 倍。
现在提供一些额外的不请自来的建议。我参加过无数的 FCCM 会议和类似的会议,并且我听过很多几十篇 FPGA 实现与 CPU 实现性能比较的论文。很多时候,一篇论文比较了耗时数月的定制 FPGA 实现与一个 CPU+软件实现,其中工程师只是将基准源代码从架子上拿下来,编译它,然后在一个下午运行它。我不觉得这样的演讲特别引人注目。
公平的比较将评估使用最佳实践、最佳可用库(例如英特尔 MKL 或 IPP)、使用跨多个内核的多线程、使用矢量 SIMD(例如 SSE、AVX...)而不是标量计算的软件实现,它使用分析器之类的工具来消除容易修复的浪费,并使用 Vtune 之类的工具来理解和调整缓存+内存层次结构。此外,请务必报告 FPGA 与软件实现所花费的实际工程时间。
更多免费建议:在结果/焦耳可能胜过结果/秒的能源集中时代,还应考虑报告实施的能源效率。
更多免费建议:要在“quad x86”上获得最多可重复次数,请务必停止机器,关闭后台处理器、守护进程、服务等,断开网络连接。
快乐黑客!