是否允許兩個(或更多)不同的線程寫入OpenCL中全局空間中的相同內存位置?寫入總是將uchar從0更改爲1,所以結果應該是可預測的,但是我的程序中出現了不穩定的結果,所以我想知道是否原因可能是某些寫入失敗。OpenCL是否允許併發寫入相同的內存地址?
它可以幫助宣佈緩衝區只寫並將其複製到只讀緩衝區?
是否允許兩個(或更多)不同的線程寫入OpenCL中全局空間中的相同內存位置?寫入總是將uchar從0更改爲1,所以結果應該是可預測的,但是我的程序中出現了不穩定的結果,所以我想知道是否原因可能是某些寫入失敗。OpenCL是否允許併發寫入相同的內存地址?
它可以幫助宣佈緩衝區只寫並將其複製到只讀緩衝區?
您是否嘗試過使用cl_khr_global_int32_base_atomics
擴展名和atom_inc
內在函數?我首先將數據存儲在int32
而不是uchar
作爲概念驗證,然後優化數據結構的內存佔用量。
我通過將算法更改爲改爲同時閱讀。儘管我相信我已經啓用了cl_khr_byte_addressable_store擴展,但直到我使用int而不是uchar,它才工作。雖然我現在不打算嘗試你的原子技巧,但現在看起來工作得很好,不過謝謝你的提示:) – Wonko 2010-05-21 10:42:20
最重要的是,除非啓用了cl_khr_byte_addressable_store擴展,否則OpenCL不支持寫入'uchar'數組(或指針)。 – avakar 2010-05-18 22:00:51
謝謝,這似乎是問題(雖然我仍然不知道是否同時寫入工作,因爲我改變了我的代碼做同步讀取)。 AFAIK我確實已經啓用了擴展,但它似乎並沒有工作......但是,使用uchar對我來說並不重要,並且更改爲int也有訣竅:) – Wonko 2010-05-21 10:46:05