2010-05-18 90 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

相關問題