-2
我正在CUDA中編寫一個函數,該函數將三維網格中的未排序點集分開。基於點集的邊界,我可以找到每個點的座標並將其寫入網格單元格內的數組中。如何避免CUDA中不同塊的競爭條件
我使用線程數等於點數的方式啓動內核,方法是將它們分爲不同的塊以獲得最大線程數。
現在每個線程找到它的座標並在單元格中寫入點,但同一塊或不同塊中的其他線程也可以同時計算相同的座標。由於競爭條件,代碼在這裏失敗。
我讀了關於原子,鎖和關鍵部分,但這些同步僅在一個線程塊內使用,這在我的情況中不太可能。
有什麼建議嗎?
我最初的猜測是,我需要根據網格單元尺寸的距離的點進行排序,並啓動籽粒每一塊等於網格單元