2010-05-18 85 views
2

是否允许两个(或更多)不同的线程写入OpenCL中全局空间中的相同内存位置?写入总是将uchar从0更改为1,所以结果应该是可预测的,但是我的程序中出现了不稳定的结果,所以我想知道是否原因可能是某些写入失败。OpenCL是否允许并发写入相同的内存地址?

它可以帮助宣布缓冲区只写并将其复制到只读缓冲区?

+3

最重要的是,除非启用了cl_khr_byte_addressable_store扩展,否则OpenCL不支持写入'uchar'数组(或指针)。 – avakar 2010-05-18 22:00:51

+0

谢谢,这似乎是问题(虽然我仍然不知道是否同时写入工作,因为我改变了我的代码做同步读取)。 AFAIK我确实已经启用了扩展,但它似乎并没有工作......但是,使用uchar对我来说并不重要,并且更改为int也有诀窍:) – Wonko 2010-05-21 10:46:05

回答

0

您是否尝试过使用cl_khr_global_int32_base_atomics扩展名和atom_inc内在函数?我首先将数据存储在int32而不是uchar作为概念验证,然后优化数据结构的内存占用量。

+0

我通过将算法更改为改为同时阅读。尽管我相信我已经启用了cl_khr_byte_addressable_store扩展,但直到我使用int而不是uchar,它才工作。虽然我现在不打算尝试你的原子技巧,但现在看起来工作得很好,不过谢谢你的提示:) – Wonko 2010-05-21 10:42:20

相关问题