CUDA總體優化策略
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE一、選擇程式中最耗時的部分,對它進行並行化,道理就是如果你選擇了消耗執行時間10%的部分來並行化,就算你達到了10倍的加速,現在的執行時間還是以前的91%,但是如果你並行的是消耗執行時間90%的部分,則現在的時間是以前的19%。
二、最大化並行,就是在你選擇的部分,使用盡可能多的執行緒來處理它,並且讓每個執行緒儘可能多的計算,因為如果資料傳輸的時間太大的話,無論你提高多少倍也沒多大作用,對於資料傳輸,首先要保證傳輸次數少,其次傳輸量要小,可以使用cudaMallocHost來加速傳輸。當然,這和問題本身,演算法,硬體都有關係。
三、儘量保證全域性記憶體融合,儘量使用cuda已經定義好的向量,他們往往已經對齊了,而且cutil_math.h中還有相關的操作符過載,對自己定義的結構體要使用對齊,如果實在無法實現記憶體融合的話,使用texture
四、使用share,constant儲存器,同時保證share不出現memory bank,就算有嚴重的bank conflict,shared通常也快於global。
五、優化register的使用,可以檢視cubin檔案,如果使用了lmem,那麼你就得考慮這個問題了,解決這個問題的方法,使用share,減小block尺寸,後一條可能更實用。
六、注意條件分支語句,儘量少用分支;展開小迴圈,使用inline減少函式呼叫。
七、優化指令使用,儘量使用吞吐量大的指令,而不是相反,比如use-fast-math編譯選項。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23057064/viewspace-629488/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CUDA優化優化
- JDBC優化策略總結JDBC優化
- CUDA優化之指令優化優化
- 記憶體優化策略記憶體優化
- 漫談CUDA優化優化
- CUDA程式優化心得之序列優化優化
- 常見效能優化策略總結優化
- CUDA 有 unified memory 還需要記憶體優化嗎?Nifi記憶體優化
- CUDA優化之執行配置和暫存器優化優化
- 介面優化策略優化
- CUDA面記憶體用法總結記憶體
- CUDA 矩陣乘法終極優化指南矩陣優化
- Mysql 52條SQL語句效能優化策略彙總MySql優化
- iOS效能優化系列篇之“優化總體原則”iOS優化
- CUDA程式優化心得之錯誤處理優化
- MySQL 52個SQL效能優化策略SQL語句彙總MySql優化
- vue載入優化策略Vue優化
- 前端效能優化之桌面瀏覽器優化策略前端優化瀏覽器
- 前端效能優化——桌面瀏覽器前端優化策略前端優化瀏覽器
- MySQL 索引使用策略及優化MySql索引優化
- 桌面端前端效能優化策略前端優化
- RecyclerView 體驗優化及入坑總結View優化
- CUDA總結2——cudaMemcpymemcpy
- 前端效能優化 —— 移動端瀏覽器優化策略前端優化瀏覽器
- 高併發&效能優化(一)------總體介紹優化
- APK體積優化的一些總結APK優化
- ANDROID記憶體優化(大彙總——上)Android記憶體優化
- ANDROID記憶體優化(大彙總——中)Android記憶體優化
- ANDROID記憶體優化(大彙總——下)Android記憶體優化
- 「MySQL」高效能索引優化策略MySql索引優化
- 移動端首屏優化策略優化
- 效能優化的相關策略整理優化
- 如何優化一個雜湊策略優化
- 前端效能優化之移動端瀏覽器優化策略前端優化瀏覽器
- OpenAI 提出強化學習近端策略優化,可替代策略梯度法OpenAI強化學習優化梯度
- webpack優化總結Web優化
- APP優化總結APP優化
- 效能優化總結優化