【发布时间】:2014-10-21 17:03:46
【问题描述】:
我有一个关于 OpenCl 编程的问题。场景是:我有一个从不同长度的文件中获取的单词列表,我必须将此列表传递给 OpenCl Kernel。我尝试使用由包含单词的 char 数组和包含大小的 int 组成的结构。但是这种解决方案不起作用,因为在内核中,我必须创建一个具有结构中指示的大小的新数组,但内核不喜欢可变大小的数组。有一种方法可以实现这个解决方案(我的意思是为每个不同大小的线程创建一个数组)?如果这种方式没有解决办法,我该怎么办? 谢谢:)
编辑:这是示例代码..我希望它能澄清事情
typedef struct word{
char word[100];
int len;
}word_t;
__kernel void test(__global word_t *data, __global res_t *result)
{
size_t id=get_global_id(0);
int size=0;
size=data[id].len;
char word[size];
//working with the word
}
但是 clBuildProgram 说我不能有一个可变大小的数组..
【问题讨论】:
-
请提供一些代码,很难看出你在做什么。
-
感谢您的回答。我已经编辑了主帖