如何在 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
}
函数参数dim
和n
在编译OpenCL代码之前已知。
典型的方法是将您的值存储在一维数组中并手动计算线性索引。例如,要访问 data(x,y)
,您将加载 data[x + y*dim]
.
如果 dim
是 OpenCL 通过向量类型(2、3、4、8 或 16)提供语言支持的值,那么您可能会使用这些类型的数组(例如 global float8 *data
对于 Nx8 数组,您可以访问 data[i].s0
到 data[i].s7
).
我想将 n
维度 dim
的数学向量数组传递给 OpenCL,下面是函数定义。
__kernel void multiDimFunction(__global float** data, uint dim, uint n)
{
// TO DO: Kernel implementation
}
函数参数dim
和n
在编译OpenCL代码之前已知。
典型的方法是将您的值存储在一维数组中并手动计算线性索引。例如,要访问 data(x,y)
,您将加载 data[x + y*dim]
.
如果 dim
是 OpenCL 通过向量类型(2、3、4、8 或 16)提供语言支持的值,那么您可能会使用这些类型的数组(例如 global float8 *data
对于 Nx8 数组,您可以访问 data[i].s0
到 data[i].s7
).