Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/nhibernate/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OpenCL(英特尔FPGA)中声明LUT的最佳方法_Opencl_Fpga_Lookup Tables_Intel Fpga - Fatal编程技术网

在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足够小,并且您只需要在一个地方使用它,那么您可以将它放在内

我需要在OpenCL内核中声明三个LUT,因此:

在英特尔OpenCL FPGA中声明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};