【发布时间】:2016-05-28 07:24:36
【问题描述】:
非常直接的问题:如何使用二维数组作为 OpenCL 内核参数?
常识建议使用
__kernel void main(__global <datatype> **<name>),
但是编译器似乎对这个想法不太感兴趣:
kernel parameter cannot be declared as a pointer to a pointer.
我是否在监督显而易见的事情,或者究竟是什么,我在这里做错了?
编辑:
hosts (c++) 数据结构如下所示:
vector<vector<Element>>,
其中 Element 是一个结构,其中包含同一数组内的子节点的索引。基本上是指针。
【问题讨论】:
-
你不能在 opencl 中将指针作为全局变量传递。图像/纹理是否适合您的目的?还是一维数组?
-
我正在传递一个存储为结构数组本身的树数组,因此图像根本不适合我的目的。我可以考虑使用一维数组,但我不太确定这是否可行。
-
树木是否平衡?它们可以分别构造成一维数组吗?如果必须,您可以使用不同的参数多次调用内核
-
暗示在大多数答案中,但从未直接说明:
vector<vector<Element>>在内存中没有连续的元素。
标签: arrays multidimensional-array opencl