CUDA優化之指令優化

yyfn風辰發表於2010-07-08
3.9 指令優化
        各種指令有不同的執行時間,這樣要更快的速度可儘量使用佔用時間少的指令,比如x *= 2; 最好寫成x += x;因為乘法的佔用的時間比加法多,但是這個並不明顯,因為在現代處理器上乘法的效率已經和加法差不多了。要注意的是除法和模餘,它們佔用的時間遠大於加法,要儘量少使用。另外一些超越函式佔用的時間更長,為此CUDA提供了超越函式的更快版本,更快的代價是精度損失。所以在速度遠比精度重要的情況下,可以使用,但是如果精度比較重要的話,就要注意了。

3.9.1 暫存器依賴
        在程式的一些部分,我們經常要存取資料,如果在後面的比較近的指令中要讀取這個資料,此時就要等到這個資料存取完成,這就是暫存器依賴,其後果就是由於要等待導致的效能損耗。這種損耗往往可以通過重新安排程式的語句減弱。

3.10 分支優化
        在CUDA中,分支會極大的減弱效能,因為SM沒有分支預測,因此只能讓束內執行緒在每個分支上都執行一遍,當然如果某個分支沒有執行緒執行,就可以忽略,因此要減少分支的數目。但是在實踐中很多時候分支是沒有辦法減少的。此時目前還沒有好的解決方案。

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

相關文章