我有幾個塊,每個塊都有一個大小爲512的共享內存數組中的一些整數。如何檢查每個塊中的數組是否包含零作爲元素?並行寫入同一全局內存位置
我正在做的是創建一個駐留在全局內存中的數組。這個數組的大小取決於塊的數量,並且它被初始化爲0.因此,如果共享存儲器數組包含零,則每個塊寫入a[blockid] = 1
。
我的問題是當我在同一時間寫一個塊的幾個線程。也就是說,如果共享內存中的數組包含多個零,則多個線程將寫入a[blockid] = 1
。這會產生任何問題嗎?
換句話說,如果2個線程將完全相同的值寫入全局內存中完全相同的數組元素,會是一個問題嗎?
我的+1從CUDA的角度回答它是OP所尋找的,而不是C/C++開發環境的觀點。 – 2011-05-11 03:34:47
請參閱我的回答瞭解更多詳情(不能在評論中發佈鏈接和引用!)。 CUDA確保如果一個warp中的多個線程寫入相同的位置,那麼至少有一個線程將成功寫入該位置,但是哪個線程(或哪個線程最後一個線程)未定義。 – Tom 2012-03-06 16:31:52