首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCL主机同步要求

OpenCL主机同步要求
EN

Stack Overflow用户
提问于 2012-08-23 07:56:35
回答 1查看 214关注 0票数 1

我在我的OpenCL内核中遇到了奇怪的bug。基本上它是二进制排序升级到N != 2的幂。我所做的是检查主机上的序列是否正确排序,而让我来到这里的是答案不正确。

现在这个bug很难追踪,因为它是随机发生的。我每次都以相同的方式对生成的许多不同的序列进行排序,它只是发生了一个序列没有排序,然后是另一个。然而,高百分比的输出是正确的,而且我在for cycle中的主机实现也正确地对相同的输入进行了排序。最有趣的是,当我保持输入并在设备上再次运行它时,它突然被正确排序。

我想到了这可能是竞态条件,因为它的行为就是这样。然而,我在设备代码中没有这样的地方,所以唯一的可能性是主机。我有一个有序的队列,我的读写都阻塞了,所以这应该不会有问题,但是在执行内核之后我没有同步点。

是否需要这样的同步?OpenCL为有序队列提供了什么保证?我是否有可能在内核完成对同一内存块的所有操作之前进行阅读?

这种随机发生的唯一另一个想法是设备中的内存故障,但这是我接受的最后一个选择,所以我也欢迎使用OpenCL获得随机结果/错误的其他一些想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-23 17:13:41

根据规范,如果您有一个有序队列,您的内核和内存读/写将按照它们排队的顺序完成:请参阅clCreateCommandQueue here http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/

如果你想100%确定是这样的话,你可以在内存读取之前将一个屏障排入队列。

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

https://stackoverflow.com/questions/12082999

复制
相关文章

相似问题

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