如何在 OpenCL 中声明一个包含多个 n 维点的数组

How do I declare an array of multiple n-dimensional points in OpenCL

我想将 n 维度 dim 的数学向量数组传递给 OpenCL,下面是函数定义。

__kernel void multiDimFunction(__global float** data, uint dim, uint n)
{
  // TO DO: Kernel implementation  
}

函数参数dimn在编译OpenCL代码之前已知。

典型的方法是将您的值存储在一维数组中并手动计算线性索引。例如,要访问 data(x,y),您将加载 data[x + y*dim].

如果 dim 是 OpenCL 通过向量类型(2、3、4、8 或 16)提供语言支持的值,那么您可能会使用这些类型的数组(例如 global float8 *data 对于 Nx8 数组,您可以访问 data[i].s0data[i].s7).