2011-08-31 730 views
10

如何優化CUDA EXP函數? 以下在CUDA中有什麼區別?CUDA EXP()expf()和__expf()

exp() 
    expf() 
    __expf() 
+3

這涵蓋的所有CUDA編程指南的附錄C,就像幾個你早期的CUDA相關的問題。也許現在是閱讀文檔的時候了? – talonmies

+1

它現在覆蓋[附錄d](http://docs.nvidia.com/cuda/cuda-c-programming-guide/#mathematical-functions-appendix)。我知道這會在某個時候再次改變。 –

+2

我喜歡他的問題,雖然,谷歌搜索和找到計算器上節拍,希望能找到什麼CUDA文檔中。恕我直言, – ikku100

回答

14

的差異在CUDA C Programming Guide解釋的,附錄D.

  • exp()應該用於雙精度,儘管應當重載單
  • expf()應該用於單精度(float
  • __expf()是快速數學版本,性能與精度損失一些速度更快(取決於輸入值,請參閱guide瞭解詳細信息)。
+1

是最大ULP錯誤'2 +樓(ABS(1.16 * X))'根據鏈路。您可能希望將其添加到您的答案;) –

4

通常exp()爲雙打,expf()爲浮子和兩者都比__exp()其可作爲一個硬件的操作稍微慢一些。性能增益通常是以犧牲精度爲代價的,但除非你真的關心精度,否則不應該是個問題。