2012-08-24 44 views
6

一位電氣工程師最近告誡我不要使用GPU進行科學計算(例如,準確度真的很重要),因爲在CPU中沒有硬件保護措施。這是真的嗎?如果是這樣的話,典型硬件中的問題有多普遍/實質性?用於科學計算的GPU的準確性

+0

是......對......所有這些內置龐大的計算集羣GPU是完全無用的,本質上只是隨機數發生器。所有的硬件都會受到隨機誤差的影響 - 陶瓷封裝中的放射性衰變事件釋放出的單個高能量光子可能會在cpu內部的某個位置翻轉位,並且會徹底殺死系統...或者它可能不會。 –

+0

@MarcB我不是陰謀論者!請參閱下面我的答案中的鏈接,瞭解過去的問題。我基本上想知道這些在最近的硬件中是否得到了充分的修復。 –

回答

9

實際上,爲了提高性能和能源效率,現代GPU非常適合科學計算,許多HPC應用程序至少部分移植到GPU上運行。 與以前的GPU不同,現代的GPU(例如NVIDIA的Fermi或Kepler架構)可提供完全標準化的IEEE-754格式,無論是單精度還是雙精度,所以您應該可以像使用現代CPU一樣使用這些格式。

3

我在這方面找到了一些(較舊的)論文,但看起來問題已經在計算能力> = 2.0的卡片中得到修復。

當前GPU不支持雙精度計算及其 單精度支持掩蓋了 IEEE-754浮點標準[1],這樣的重要方面正確舍入結果 並正確關閉數字系統。 ... 我們的結果顯示,在某些邊緣情況下,GPU的結果 存在嚴重錯誤,此外還有錯誤處理 非規格化數字。

  • 卡爾E. Hillesland和安塞爾莫Lastra的, 「GPU浮點妄想」。在Proc。 GP2,2004年8月

  • GPUBench Test: Precision.

  • 紀堯姆大格拉薩和大衛Defour, 「浮浮運營商對圖形 硬件實現。」在Proc。對實數和計算機八七會議,2006年7月

  • Wikipedia's CUDA limitations section

雙精度(CUDA計算能力1.3及以上)[14]從IEEE 754標準偏差 :舍入到-nearest-even是唯一的 支持倒數,分割和平方根的舍入模式。在 單精度,非規範和信令NaNs不支持; 只支持兩種IEEE舍入模式(切片和最接近的 甚至),並且這些是在每個指令的基礎上指定的,而不是在控制字中的 ;分割/平方根的精度比單精度略低。

1

實際上大多數科學計算一般不需要那麼精確,因爲測量誤差和例如主要由淹沒浮點舍入引入的誤差(或許除了在退化情況下,如求和浮標在陣列順序vs逆序排列,但即使在CPU中也會遇到這種問題,因爲它的工作原理與設計一樣,所以沒有什麼會提醒你。在科學計算中,通常足以在一定的誤差範圍內顯示結果,並顯示餘量不會導致實際問題。

即使在CPU中,浮點數的設計也很快,數字不一定準確,這就是爲什麼我們總是教導將浮點與epsilon進行比較的原因。

OTOH,實際上需要精確舍入到最後一位數字的計算,如會計或數字理論,應考慮使用定點算術(例如十進制模塊),它可以讓您精確指定舍入規則。