數學函式:
參考手冊列表及其說明列出了裝置**支援的c / c ++標準庫數學函式的所有功能,以及所有固有功能(僅在裝置**中支援)
標準函式:
本節中的功能可用於主機和裝置**。
本節規定了每個功能在裝置上執行時的錯誤界限,以及在主機不提供功能的情況下在主機上執行時的錯誤界限。
加法和乘法符合ieee標準,因此最大誤差為0.5 ulp。
將單精度浮點運算元四捨五入為整數,其結果為單精度浮點數的推薦方法是rintf(),而不是roundf()。 原因是roundf()對映到裝置上的8指令序列,而rintf()對映到單個指令。 truncf(),ceilf()和floorf()也分別對映到單個指令。
具有最大ulp誤差的單精度數學標準庫函式
最大誤差表示為正確捨入的單精度結果與cuda庫函式返回的結果之間的差值的絕對值。
雙精度浮點函式:
將雙精度浮點運算元捨入為乙個整數,其結果是乙個雙精度浮點數的推薦方法是rint(),而不是round()。 原因是round()對映到裝置上的8個指令序列,而rint()對映到單個指令。 trunc(),ceil()和floor()也分別對映到單個指令。
具有最大ulp誤差的雙精度數學標準庫函式:
最大誤差表示為正確捨入的雙精度結果與cuda庫函式返回的結果之間的差值的絕對值。
內在函式:
在這些函式中,標準函式的某些函式的準確性較低,但速度更快。它們具有以__為字首的相同名稱(如__sinf(x))。 它們對映到更少的原生指令時速度更快。 編譯器有乙個選項(-use_fast_math),它強制表8中的每個函式編譯為其內部對應部分。 除了降低受影響功能的準確性之外,還可能會在特殊情況下處理一些差異。 更穩健的方法是通過呼叫內部函式來選擇性地替換數學函式呼叫,只有在效能增益的情況下才適用數學函式呼叫,並且可以容忍更改的屬性(如精度降低和不同的特殊情況處理)。
受use_fast_math影響的函式:
以_rn結尾的函式使用該輪以最接近的捨入模式執行。
使用_rz字尾的函式使用捨入為零的捨入模式進行操作。
以_ru結尾的函式使用捨入(到正無窮)捨入模式進行操作。
以_rd結尾的函式使用向下捨入(到負向無限)捨入模式進行操作
單精度浮點函式:
_fadd [rn,rz,ru,rd]()和__fmul_ [rn,rz,ru,rd]()
對映到編譯器不會合併到fmad中的加法和乘法操作。 相比之下,'*'和'+'運算子產生的加法和乘法運算常常被合併到fmad中。
浮點除法的精度取決於**是使用-prec-div = false還是-prec-div = true編譯的。 當使用-prec-div = false編譯**時,常規除法/運算子和__fdividef(x,y)
具有相同的準確性,但對於2126 __fdividef(x,y)將結果為零 ,而/運算子將正確結果提供給表9中所述的精度。同樣,對於2126 __fdividef(x,y)將傳遞nan(由於將無窮大乘以零 ),而/運算子返回無窮大。 另一方面,當**使用-precdiv = true或完全沒有任何-prec-div選項編譯時,/ operator是符合ieee的,因為它的預設值為true。
單精度浮點內部函式:
cuda執行時庫支援各自的錯誤界限
雙精度浮點函式:
__dadd_rn()
和__dmul_rn()
對映到編譯器不會合併到fmad中的加法和乘法操作。 相比之下,'*'和'+'運算子產生的加法和乘法運算常常被合併到fmad中。
雙精度浮點內部函式:
題解六十七
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。示例 輸入 nums 1,2,3,4 輸出 1,3,2,4 注 3,1,2,4 也是正確的答案之一。思路 定義雙指標left right,分別指向陣列的首部和尾部。指標left從左向右...
Lua程式設計(六十七)
協程的乙個經典問題就是生產者 消費者問題。在生產者 消費者問題中涉及兩個函式,乙個函式不斷地產生值 比如,從乙個檔案中讀取 另乙個函式不斷地消費這些值 比如,將值寫入另乙個檔案中 function producer while true do local x io.read send x enden...
第六十七周學習生活總結
今天是2020年8月24日,周一,昨天又拖更了,所以今天一直提醒自己要把昨天的更新給補上,所以,補檔來了。乙個好訊息,乙個壞訊息。先說壞訊息,我奶奶昨天晚上半夜又生病住院了,還是原來的 病,心臟不好。記得今年六月份的時候奶奶就已經生病住了一次院,那次我爸媽比較忙,我去照顧了好幾天,奶奶在醫院啊恢復的...