根據CUDA 5.0編程指南,如果我同時使用L1和L2高速緩存(在費米或開普勒上),所有全局內存操作都是使用128字節內存事務完成的。但是,如果我僅使用L2,則將使用32字節的內存事務(章節F.4.2)。CUDA全局內存事務的成本
讓我們假設所有緩存都是空的。如果我有一個warp,每個線程以完全對齊的方式訪問單個4字節字,這將導致L1 + L2情況下的1x128B事務,以及L2情況下的4x32B事務。是對的嗎?
我的問題是 - 4 32B交易是否比單個128B交易慢? 我對費米前硬件的直覺表明它會變慢,但也許這在新硬件上不再是真的?或者,也許我應該看看帶寬利用率來判斷我的內存訪問效率?
與L1對齊的,合併的32位加載請求爲128字節。如果L1中的加載請求未命中,則L1將向L2發出4個32字節的加載請求。所有L2事務都是32字節。高速緩存運算符可以使用內聯PTX以每條指令爲基礎進行控制。 –