0

像这样的代码:

__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 循环,其中每个工作项复制几个元素。

4

1 回答 1

1

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

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

函数族可以为所有类型的vloadn()内存加载整个向量,包括常量,因此可能部分符合您的需要。但是,它不是批量复制。

于 2012-08-23T09:25:47.563 回答