一位電氣工程師最近告誡我不要使用GPU進行科學計算(例如,準確度真的很重要),因爲在CPU中沒有硬件保護措施。這是真的嗎?如果是這樣的話,典型硬件中的問題有多普遍/實質性?用於科學計算的GPU的準確性
回答
實際上,爲了提高性能和能源效率,現代GPU非常適合科學計算,許多HPC應用程序至少部分移植到GPU上運行。 與以前的GPU不同,現代的GPU(例如NVIDIA的Fermi或Kepler架構)可提供完全標準化的IEEE-754格式,無論是單精度還是雙精度,所以您應該可以像使用現代CPU一樣使用這些格式。
我在這方面找到了一些(較舊的)論文,但看起來問題已經在計算能力> = 2.0的卡片中得到修復。
當前GPU不支持雙精度計算及其 單精度支持掩蓋了 IEEE-754浮點標準[1],這樣的重要方面正確舍入結果 並正確關閉數字系統。 ... 我們的結果顯示,在某些邊緣情況下,GPU的結果 存在嚴重錯誤,此外還有錯誤處理 非規格化數字。
卡爾E. Hillesland和安塞爾莫Lastra的, 「GPU浮點妄想」。在Proc。 GP2,2004年8月
紀堯姆大格拉薩和大衛Defour, 「浮浮運營商對圖形 硬件實現。」在Proc。對實數和計算機八七會議,2006年7月
雙精度(CUDA計算能力1.3及以上)[14]從IEEE 754標準偏差 :舍入到-nearest-even是唯一的 支持倒數,分割和平方根的舍入模式。在 單精度,非規範和信令NaNs不支持; 只支持兩種IEEE舍入模式(切片和最接近的 甚至),並且這些是在每個指令的基礎上指定的,而不是在控制字中的 ;分割/平方根的精度比單精度略低。
實際上大多數科學計算一般不需要那麼精確,因爲測量誤差和例如主要由淹沒浮點舍入引入的誤差(或許除了在退化情況下,如求和浮標在陣列順序vs逆序排列,但即使在CPU中也會遇到這種問題,因爲它的工作原理與設計一樣,所以沒有什麼會提醒你。在科學計算中,通常足以在一定的誤差範圍內顯示結果,並顯示餘量不會導致實際問題。
即使在CPU中,浮點數的設計也很快,數字不一定準確,這就是爲什麼我們總是教導將浮點與epsilon進行比較的原因。
OTOH,實際上需要精確舍入到最後一位數字的計算,如會計或數字理論,應考慮使用定點算術(例如十進制模塊),它可以讓您精確指定舍入規則。
NVIDIA發佈了覆蓋與浮點一般和尤其是對GPU的工作細節的白皮書:
http://developer.download.nvidia.com/assets/cuda/files/NVIDIA-CUDA-Floating-Point.pdf
- 1. 測量準確的GPU計算時間
- 2. 計算機科學數學
- 3. 計算機科學
- 4. 科學計算器
- 5. 計算機科學的不確定性原理
- 6. Java科學計算器
- 7. 計算機科學老人
- 8. 計算機科學分類
- 9. Android科學計算器
- 10. 計算機科學界?
- 11. 用於MATLAB程序員的Python中的科學計算
- 12. 如何編寫單元測試以確保C中科學計算的數值準確性?
- 13. 關於計算機科學算法eulerproject.net的替代
- 14. Python的GUI Tkinter的科學計算器
- 15. 在數學科學中講計算機科學
- 16. PHP float的準確性計算
- 17. 如何學習計算機科學
- 18. 哪個IDE用於Python中的科學計算和繪圖?
- 19. 偉大的計算機科學演講
- 20. 在計算機科學的書
- 21. iOS上的科學計算庫/ Objective C
- 22. 計算機科學的位和字節
- 23. 計算機科學與信息科學有什麼區別?
- 24. 關於計算機科學/編程的圖表/信息圖表
- 25. 組織基於任務的科學計算
- 26. 計算機科學「關於入侵檢測系統的知識」
- 27. MySQL的幫助 - 打印CNO,sectno,就讀於計算機科學
- 28. 有沒有其他的NVIDIA顯卡用於GPU計算的深度學習?
- 29. 準確計算LTV
- 30. Tensorflow,多標籤準確性計算
是......對......所有這些內置龐大的計算集羣GPU是完全無用的,本質上只是隨機數發生器。所有的硬件都會受到隨機誤差的影響 - 陶瓷封裝中的放射性衰變事件釋放出的單個高能量光子可能會在cpu內部的某個位置翻轉位,並且會徹底殺死系統...或者它可能不會。 –
@MarcB我不是陰謀論者!請參閱下面我的答案中的鏈接,瞭解過去的問題。我基本上想知道這些在最近的硬件中是否得到了充分的修復。 –