共享儲存器優化
3.4 共享儲存器優化
共享儲存器比較靠近SM的,因此其速度相當的快,一般而言可以在一到二個時鐘內讀寫,因此使用共享儲存器取代全域性儲存器會極大的節約頻寬,但是共享儲存器 的使用是有要求,它要求資料有區域性性(一個block內共享)重用。當然有時也可用共享儲存器取代暫存器,這會在後面說到。
一般的使用共享儲存器的方式是:s_x[tid] = x[id];其中tid是塊內執行緒的塊內索引,也就是類似threadIdx,id是執行緒的網格內索引。然後可以訪問s_x取代訪問x。這樣一般可以提升 程式的效率。
要注意的是,使用共享儲存器往往伴隨著儲存器的一致性問題,此時可求助於__syncthreads()和memory fence大神。
3.4.1 儲存體衝突
類似於合併訪問,共享儲存器一次也能滿足 半束執行緒的要求,條件是這半束執行緒訪問的資料在不同的儲存體中。CUDA將共享儲存器組織成16列,每一列稱為 一個儲存體。如果有兩個或以上的執行緒訪問的資料在同一個儲存體中,此時不能在一次儲存體訪問中,滿足半束執行緒的要求,這稱為儲存體衝突。一般而言,儲存體 衝突對效能的影響還不是太大,當然具體的影響要看半束內最多有多少執行緒落入同一儲存體內。要提到的程式設計時要注意的是對於一個SM來說,共享儲存器的數量是有限的,如果超出其使用限制,其結果未知,我的經驗告訴我,有時沒有問題,有時會有大問題。另外, 使用共享儲存器有時可能會影響程式的可擴充套件性,這個在編寫庫程式碼的時候要特別注意。
共享儲存器比較靠近SM的,因此其速度相當的快,一般而言可以在一到二個時鐘內讀寫,因此使用共享儲存器取代全域性儲存器會極大的節約頻寬,但是共享儲存器 的使用是有要求,它要求資料有區域性性(一個block內共享)重用。當然有時也可用共享儲存器取代暫存器,這會在後面說到。
一般的使用共享儲存器的方式是:s_x[tid] = x[id];其中tid是塊內執行緒的塊內索引,也就是類似threadIdx,id是執行緒的網格內索引。然後可以訪問s_x取代訪問x。這樣一般可以提升 程式的效率。
要注意的是,使用共享儲存器往往伴隨著儲存器的一致性問題,此時可求助於__syncthreads()和memory fence大神。
3.4.1 儲存體衝突
類似於合併訪問,共享儲存器一次也能滿足 半束執行緒的要求,條件是這半束執行緒訪問的資料在不同的儲存體中。CUDA將共享儲存器組織成16列,每一列稱為 一個儲存體。如果有兩個或以上的執行緒訪問的資料在同一個儲存體中,此時不能在一次儲存體訪問中,滿足半束執行緒的要求,這稱為儲存體衝突。一般而言,儲存體 衝突對效能的影響還不是太大,當然具體的影響要看半束內最多有多少執行緒落入同一儲存體內。要提到的程式設計時要注意的是對於一個SM來說,共享儲存器的數量是有限的,如果超出其使用限制,其結果未知,我的經驗告訴我,有時沒有問題,有時會有大問題。另外, 使用共享儲存器有時可能會影響程式的可擴充套件性,這個在編寫庫程式碼的時候要特別注意。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23057064/viewspace-666187/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 全域性儲存器優化優化
- cuda優化之常量儲存器和紋理儲存器優化
- 【CUDA學習】共享儲存器
- 共享儲存器bank conflict
- NFS共享儲存NFS
- 虛擬機器做ISCSI共享儲存虛擬機
- 共享儲存之ISCSI
- 前端基於瀏覽器儲存的AJAX效能優化前端瀏覽器優化
- 儲存服務質量優化優化
- 小談mysql儲存引擎優化MySql儲存引擎優化
- Docker的持久化儲存和資料共享(四)Docker持久化
- 1.05 docker的持久化儲存和資料共享Docker持久化
- NFS共享儲存服務NFS
- Oracle 共享儲存掛載Oracle
- UDEV管理RAC共享儲存dev
- openfiler配置rac共享儲存
- Redis儲存優化--小物件壓縮Redis優化物件
- 《MySQL 效能優化》之 InnoDB 儲存引擎MySql優化儲存引擎
- Greenplum 效能優化之路 --(二)儲存格式優化
- 任意列搜尋之列儲存優化優化
- 儲存過程優化(DBMS_HPROF)儲存過程優化
- [譯]在CUDA C/C++中使用共享儲存器C++
- 滴滴Ceph分散式儲存系統優化之鎖優化分散式優化
- vmware設定共享儲存(RAC)
- redhat as 4配置ISCSI共享儲存Redhat
- Oracle優化案例-儲存過程的優化思路(二十三)Oracle優化儲存過程
- mysql優化 | 儲存引擎,建表,索引,sql的優化建議MySql優化儲存引擎索引
- 運籌優化(十七)--儲存論基礎及其最優化求解優化
- Android 儲存優化 —— MMKV 整合與原理Android優化
- Redis 記憶體使用優化與儲存Redis記憶體優化
- MySQL 效能優化之儲存引擎選擇MySql優化儲存引擎
- Oracle儲存過程優化小實踐Oracle儲存過程優化
- 鐵電儲存器FRAM的優劣勢
- 騰訊雲物件儲存COS新品釋出——智慧分層儲存,自動優化您的儲存成本物件優化
- 儲存器
- 加大對儲存器國產化的投入
- CUDA優化之執行配置和暫存器優化優化
- Linux下搭建iSCSI共享儲存Linux