在OpenCL(英特尔FPGA)中声明LUT的最佳方法
我需要在OpenCL内核中声明三个LUT,因此: 在英特尔OpenCL FPGA中声明LUT的最佳方式是什么 我已经看到了关于这一点的示例,但在示例中,他们使用了在OpenCL(英特尔FPGA)中声明LUT的最佳方法,opencl,fpga,lookup-tables,intel-fpga,Opencl,Fpga,Lookup Tables,Intel Fpga,我需要在OpenCL内核中声明三个LUT,因此: 在英特尔OpenCL FPGA中声明LUT的最佳方式是什么 我已经看到了关于这一点的示例,但在示例中,他们使用了开关/case结构。我认为最好的方法是为每个LUT声明一个数组,如下例所示(示例取自:): 如果无法直接寻址LUT数组中的元素,即如果查找位置不遵循0,1,2,…,N,则只需要开关/case。将LUT实现为一个数组并使用foo[position]进行直接寻址更为优雅。 如果LUT足够小,并且您只需要在一个地方使用它,那么您可以将它放在内
开关/case
结构。我认为最好的方法是为每个LUT声明一个数组,如下例所示(示例取自:):
如果无法直接寻址LUT数组中的元素,即如果查找位置不遵循
0,1,2,…,N
,则只需要开关/case
。将LUT实现为一个数组并使用foo[position]进行直接寻址更为优雅代码>。
如果LUT足够小,并且您只需要在一个地方使用它,那么您可以将它放在内核中的私有内存空间中。如果LUT较大(超过几百个条目),则需要转移到常量
内存空间;元素访问保持不变。如果无法直接寻址LUT数组中的元素,即如果查找位置不遵循0,1,2,…,N,则只需要开关/case
。将LUT实现为一个数组并使用foo[position]进行直接寻址更为优雅代码>。
如果LUT足够小,并且您只需要在一个地方使用它,那么您可以将它放在内核中的私有内存空间中。如果LUT较大(超过几百个条目),则需要转移到常量
内存空间;元素访问保持不变
__constant float2 foo[2] = {1.0f, 0.0f};