2010-08-19 42 views
2

與cuda一起編程時,整合與銀行衝突有什麼區別?
只有當共享內存中的銀行衝突時,全局內存纔會發生合併?
我應該擔心聚結,如果我有> 1.2支持的GPU?它是否自己處理聚結?整合與銀行衝突(Cuda)

回答

5

是的,凝聚的讀/寫操作,適用於全球的讀取和銀行的衝突是適用於共享內存讀/寫。

不同的計算能力的設備有不同的行爲在這裏,但1.2的GPU仍然需要小心,以確保你合併的讀取和寫入 - 它只是有一些優化技術,使東西更容易爲你

你應該閱讀CUDA Best Practices指南。這涉及到這些問題的大量細節。

2

是:合併訪問僅與全局內存相關,銀行衝突僅與共享內存相關。

退房也是高級CUDA C語言培訓課程,首節進入一些細節來解釋> 1.2的GPU硬件如何幫助你,你仍然需要考慮的優化。它也解釋了共享內存銀行衝突。例如,請查看this recording

掃描減少樣品中的SDK也解釋了存儲器組衝突真的很好用漸進式改進的內核。

1

A> 1.2 GPU將嘗試這樣做可以WRT聚結最好的,因爲它是能夠組存儲器訪問適合的256個字節的同一存儲器原子之內的相同的大小和寫入出來作爲1個存儲器寫入。 GPU將負責重新排序訪問並將它們對齊到正確的內存邊界。 (在早期的GPU中,warp內的內存交易必須與內存原子對齊,並且必須按照正確的順序排列。)

但是,爲了獲得最佳性能,您仍然需要確保那些合併機會可用。如果warp中的所有線程都將內存事務處理爲完全不同的內存原子,則聚合器無法執行任何操作,因此仍需要了解內核的內存局部性行爲。