来自__constant的async_work_group_copy

时间:2012-08-22 13:49:13

标签: constants opencl

这样的代码:

__constant char a[1] = "x";
...
__local char b[1];
async_work_group_copy(b, a, 1, 0);

抛出编译错误:

no instance of overloaded function "async_work_group_copy" matches the argument list

所以似乎这个函数不能用于从__constant地址空间复制。我对吗?如果是,那么将__constant数据复制到__local内存以便更快访问的首选方法是什么?现在我使用一个简单的for循环,其中每个工作项复制几个元素。

1 个答案:

答案 0 :(得分:1)

async_work_group_copy()被定义为仅在本地和全局内存之间复制(请参阅此处:http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/)。

据我所知,没有方法可以执行从常量到本地内存的批量复制。也许原因是常量内存实际上缓存在我所知道的所有GPU上,这实际上意味着它以与本地内存相同的速度工作。

vloadn()系列函数可以为所有类型的内存加载整个向量,包括常量,这样可以部分匹配您需要的内容。但是,它不是批量复制。