全域性儲存器優化

yyfn風辰發表於2010-06-03
3.3  全域性儲存器優化
        在CUDA的儲存器結構中,全域性儲存器是最慢的,其延遲在幾百個時鐘,但是其容量是最大的,我們使用cudaMalloc函式分配的指標都是指向全域性儲存器空間的,我們不可能避開它們的使用。這兩個因素使得全域性儲存器的使用對CUDA 程式的效能至關重要。

3.3.1  合併訪問
        為了提高訪問全域性儲存器的效率,CUDA 提供了一種稱為合併訪問的機制來加速全域性儲存器的訪問。在計算能力1.0和1.1的裝置上,合併訪問能夠在一次儲存器訪問中訪問最多達16個資料;在計算能力1.2和1.3的裝置上,合併訪問一次最多能夠訪問32個資料。另外執行緒間的切換也能夠隱藏全域性儲存器的訪問延遲。
        所謂合併訪問就是儘量要求相鄰的執行緒訪問相鄰的地址空間,當然在不同計算能力的裝置上,其具體要求有所差別,在1.0和1.1的裝置上,合併訪問要求第k個執行緒訪問對齊的第k個儲存地址,必須對齊,不能交叉,而1.2以上的裝置沒有此要求。
        對於不同的資料型別,合併訪問的頻寬不相同,一般而言使用四位元組的資料型別比較好,但是並不絕對,在某些情況下,使用8位元組或16位元組的資料效能可能會更好,尤其是在滿足1.0和1.1裝置的合併訪問條件下。
        在設計的時候要考慮到全域性儲存器的合併訪問,並以此為要求來設計,比如在必要的時候對矩陣進行轉置。對資料的組織方式加以改變。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23057064/viewspace-664344/,如需轉載,請註明出處,否則將追究法律責任。

相關文章