CUDA優化之指令優化
3.9 指令優化
各種指令有不同的執行時間,這樣要更快的速度可儘量使用佔用時間少的指令,比如x *= 2; 最好寫成x += x;因為乘法的佔用的時間比加法多,但是這個並不明顯,因為在現代處理器上乘法的效率已經和加法差不多了。要注意的是除法和模餘,它們佔用的時間遠大於加法,要儘量少使用。另外一些超越函式佔用的時間更長,為此CUDA提供了超越函式的更快版本,更快的代價是精度損失。所以在速度遠比精度重要的情況下,可以使用,但是如果精度比較重要的話,就要注意了。
3.9.1 暫存器依賴
在程式的一些部分,我們經常要存取資料,如果在後面的比較近的指令中要讀取這個資料,此時就要等到這個資料存取完成,這就是暫存器依賴,其後果就是由於要等待導致的效能損耗。這種損耗往往可以通過重新安排程式的語句減弱。
3.10 分支優化
在CUDA中,分支會極大的減弱效能,因為SM沒有分支預測,因此只能讓束內執行緒在每個分支上都執行一遍,當然如果某個分支沒有執行緒執行,就可以忽略,因此要減少分支的數目。但是在實踐中很多時候分支是沒有辦法減少的。此時目前還沒有好的解決方案。
各種指令有不同的執行時間,這樣要更快的速度可儘量使用佔用時間少的指令,比如x *= 2; 最好寫成x += x;因為乘法的佔用的時間比加法多,但是這個並不明顯,因為在現代處理器上乘法的效率已經和加法差不多了。要注意的是除法和模餘,它們佔用的時間遠大於加法,要儘量少使用。另外一些超越函式佔用的時間更長,為此CUDA提供了超越函式的更快版本,更快的代價是精度損失。所以在速度遠比精度重要的情況下,可以使用,但是如果精度比較重要的話,就要注意了。
3.9.1 暫存器依賴
在程式的一些部分,我們經常要存取資料,如果在後面的比較近的指令中要讀取這個資料,此時就要等到這個資料存取完成,這就是暫存器依賴,其後果就是由於要等待導致的效能損耗。這種損耗往往可以通過重新安排程式的語句減弱。
3.10 分支優化
在CUDA中,分支會極大的減弱效能,因為SM沒有分支預測,因此只能讓束內執行緒在每個分支上都執行一遍,當然如果某個分支沒有執行緒執行,就可以忽略,因此要減少分支的數目。但是在實踐中很多時候分支是沒有辦法減少的。此時目前還沒有好的解決方案。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23057064/viewspace-667614/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CUDA程式優化心得之序列優化優化
- CUDA優化優化
- CUDA優化之執行配置和暫存器優化優化
- 漫談CUDA優化優化
- mysql優化之explain 指令MySql優化AI
- CUDA總體優化策略優化
- CUDA程式優化心得之錯誤處理優化
- MSSQL優化之索引優化SQL優化索引
- sql優化之邏輯優化SQL優化
- MySQL 效能優化之索引優化MySql優化索引
- MySQL 效能優化之SQL優化MySql優化
- CUDA 矩陣乘法終極優化指南矩陣優化
- Android優化之佈局優化Android優化
- web前端優化之圖片優化Web前端優化
- TableView 優化之資料模型優化View優化模型
- Web效能優化之圖片優化Web優化
- 最優化之無約束優化優化
- cuda優化之常量儲存器和紋理儲存器優化
- Webpack之模組化優化Web優化
- Android效能優化之佈局優化Android優化
- MySQL優化之系統變數優化MySql優化變數
- SQL Server優化之SQL語句優化SQLServer優化
- oracle優化一例之sql優化Oracle優化SQL
- MySQL調優之索引優化MySql索引優化
- 資料庫優化之臨時表優化資料庫優化
- Android效能優化篇之服務優化Android優化
- 九、Android效能優化之網路優化Android優化
- Android 效能優化之記憶體優化Android優化記憶體
- Android 效能優化(八)之網路優化Android優化
- MySQL 效能優化之快取引數優化MySql優化快取
- javascript指令碼的效能優化JavaScript指令碼優化
- MySQL調優之查詢優化MySql優化
- Android記憶體優化之圖片優化Android記憶體優化
- Android應用優化之冷啟動優化Android優化
- 八、Android效能優化之電量優化(二)Android優化
- 面試Tip:Android優化之APP啟動優化面試Android優化APP
- 前端效能優化之桌面瀏覽器優化策略前端優化瀏覽器
- 資料庫效能優化之SQL語句優化資料庫優化SQL