首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内核流水线与clEnqueueReadBuffer

内核流水线与clEnqueueReadBuffer
EN

Stack Overflow用户
提问于 2015-11-04 13:26:41
回答 1查看 414关注 0票数 0

我有一条核管道:

1)内核A将数据写入缓冲区X

2)通过clEnqueueReadBuffer将缓冲区X复制到主机

3)以clEnqueueReadBuffer触发的回调方式处理主机数据

重复以上

使用以下标志创建缓冲区X:

代码语言:javascript
复制
 CL_MEM_USE_HOST_PTR | CL_MEM_READ_WRITE; | CL_MEM_HOST_READ_ONLY

我的问题是:一旦clEnqueueReadBuffer完成(我有一个由CL_COMPLETE触发的事件),内核A在不覆盖主机上处理数据的情况下再次运行是否安全?

或者在允许内核A再次运行之前,我应该处理主机上的数据吗?

因为我在代码中看到一个bug,表明在我处理主机上的数据之前,内核A运行是不安全的。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-04 13:34:06

这就是OpenCL 1.2规范对用CL_MEM_USE_HOST_PTR创建的缓冲区的看法。

如果指定,则表示应用程序希望OpenCL实现使用host_ptr引用的内存作为内存对象的存储位。

这意味着,同时从主机和设备访问此缓冲区是不安全的(除非两者都只是读取)。如果希望主机和设备分配是不同的,只需创建没有CL_MEM_USE_HOST_PTR标志的缓冲区即可。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33523133

复制
相关文章

相似问题

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