首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >uint结构数组上的async_work_group_copy

uint结构数组上的async_work_group_copy
EN

Stack Overflow用户
提问于 2015-10-12 17:51:26
回答 1查看 124关注 0票数 0

我希望能够将结构数组从全局内存复制到本地内存。这些结构的类型如下:

代码语言:javascript
运行
复制
typedef struct{
  uint boo;
  uint moo;
} boo_moo;

我有一个名为B的boo_moo*指向的这些家伙数组,我希望能够将全局内存中B的内容复制到本地内存中称为B_loc的相当大的数组中。

不幸的是,我的内核的工作组大小不能很好地映射到这个操作,所以我尝试使用async_work_group_copy。问题是,async_work_group_copy需要一个温和的类型,而boo_moo*则不是。

是否有一种方法可以将B和B_loc转换为温和类型,这样async_work_group_copy就可以工作,而不必更改数组的初始声明或在全局内存中执行额外的复制?

理想情况下,我仍然希望能够像这样引用B:

代码语言:javascript
运行
复制
A[i] = B[i].moo;

我已经看到了一种叫做as_type的东西,但是我还没有看到它在数组中使用过。如果我能告诉async_work_group_copy把B和B_local当作两个uint2 2*,那就太棒了。

代码语言:javascript
运行
复制
async_work_group_copy((uint2*)B_loc, (uint2*) B, num_elements, 0);

但是,当我在内核中这样做时,AMD的OpenCL编译器会抱怨:

代码语言:javascript
运行
复制
invalid type conversion
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-12 20:02:40

您缺少内存地址空间限定符。这是固定代码:

代码语言:javascript
运行
复制
async_work_group_copy((__local uint2*)B_loc, (__global uint2*) B, num_elements, 0);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33087271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档