2015-10-31 15 views

回答

3

CUDA中沒有獨立的位設置功能。 (在PTX中有一個bit-field-insert指令,但它仍然以32位數量運行。)

每個線程都會通過完整的32位寫入來設置一點。這樣的寫入需要是原子RMW操作,以保留其他位。因此,無論原子的吞吐量是多少,訪問都將被有效地序列化。

如果內存空間不是問題,那麼將這些位拆分爲單獨的整數將允許您避免原子。

然後可以使用__ballot()warp vote function快速組裝32位打包數量。在答案here中給出了一個例子。

(事實上,經投票功能可以讓你避免內存交易完全;一切都可以在寄存器中進行處理,如果唯一的結果你需要的是32位壓縮量。)

+0

選票,這也正是我需要什麼! –

相關問題