2012-04-16 139 views
4

請您介紹一下在CUDA編程中使用「L1和L2」高速緩存還是「僅L2」高速緩存之間的區別?我應該在時間執行中期待什麼?我什麼時候可以期待更短的時間?當我啓用L1和L2緩存或只啓用L2時?謝謝CUDA編程 - L1和L2高速緩存

回答

8

通常你會離開L1和L2緩存啓用。你應該嘗試儘可能地合併你的存儲器訪問,即一個warp內的線程應該儘可能地訪問同一個128B段內的數據(關於這個主題的更多信息,請參閱CUDA Programming Guide)。

某些程序無法以這種方式進行優化,例如,它們的存儲器訪問完全是隨機的。對於這些情況,繞過L1緩存可能會有所幫助,從而避免在僅需要時加載整個128B行,例如4個字節(因爲這是最小值,您仍將加載32B)。顯然有一個效率增益:從128的4個有用字節從32提高到4。

+1

謝謝湯姆!我還不能投票!但你的回答對我來說非常有用:) – 2012-04-17 01:51:39