Intel® FPGA SDK for OpenCL™ Pro Edition: 最佳实践实践指南

ID 683521
日期 9/26/2022
Public
文档目录

9.4. 算法操作考量

为您的OpenCL™应用程序选择适当的算法操作以避免过多的FPGA面积使用。
  1. 仅在必要时引入浮点算法运算。
  2. Intel® FPGA SDK for OpenCL™ Offline Compiler默认浮点常量为double数据类型。向常量添加一个f标志,使其成为一个单精度浮点运算。

    例如,算法运算sin(1.0)表示双精度浮点正弦函数。算法运算sin(1.0f)表示单精度浮点正弦函数。

  3. 如果您不需要复杂函数的全精度结果,请计算更简单的算法运算得到一个近似结果。考虑以下实例场景:
    1. 不计算函数pow(x,n),其中n是一个较小的值,但是通过执行重复的平方运算来获得近似结果,因为它们需要的硬件资源和面积要少得多。
    2. 请确保您了解原始和近似面积使用情况,因为在某些情况下,通过近似计算的结果可能导致过度的使用面积。例如,sqrt函数不是资源密集型。除了粗略的近似之外,将sqrt函数替换为主机必须在运行时计算的算法运算可能会导致使用更大的面积。
    3. 如果您使用一小组输入值,请考虑改用LUT。

  4. 如果您的内核使用离线编译器在编译时计算的常量(例如,log(PI/2.0))来执行复杂算法运算,请改为在主机上执行算法运算并将结果作为自变量在运行时传递给内核。