2012-08-24 9 views
6

電気技術者は最近、CPUにあるようなハードウェアセーフガードがないということを踏まえて、科学的コンピューティング(GPL)をGPUを使用して(例えば、これは本当ですか、もしそうなら、典型的なハードウェアの問題点はどれほど共通/実質的ですか?科学計算用GPUの精度

+0

をGPUはまったく役に立たず、本質的に乱数発生器です。すべてのハードウェアはランダムエラーの影響を受けます。セラミックパッケージの放射能崩壊イベントによって放出された単一の高エネルギー光子は、CPU内のどこかでビットを反転してシステムを完全に殺すことができます。 –

+0

@MarcB私は陰謀理論家ではありません!過去の問題の例については、私の答えのリンクを参照してください。私は基本的に、これらが最近のハードウェアで適切に修正されているかどうかを知りたいと思っています。 –

答えて

9

現代のGPUは科学計算に非常に適しており、多くのHPCアプリケーションは、性能とエネルギー効率のためにGPU上で動作するように少なくとも部分的に移植されています。 古いGPUとは異なり、現代のもの(例えば、NVIDIAのFermiまたはKeplerアーキテクチャを採用)は、単精度と倍精度の両方で完全に標準化されたIEEE-754フォーマットを提供しているので、現代のCPUと同様にこれらを使用できるはずです。

3

これにいくつかの(古い)論文がありましたが、計算能力> = 2.0のカードで問題が修正されているようです。例えば、[1]

現在のGPUは、倍精度演算をサポートしていないと、その 単精度サポートは IEEE-754浮動小数点規格の重要な側面上にグロス正確に丸められた結果として と番号システムの適切な終了。 ... 私たちの結果は、 の非正規化数の誤った取り扱いに加えて、特定のエッジケースでGPUの結果である重大なエラーがあることを示しています( )。

  • カール・E. Hilleslandとアンセルモラストラ、 "GPU浮動小数点パラノイア。" Proc。 GP2、2004年8月

  • GPUBench Test: Precision.

  • ギョーム・ダ・グラサとDavid Defour、 "グラフィックス ハードウェア上のフロート・フロート演算子の実装。" Proc。実数とコンピュータ第7回会議、2006年7月

  • Wikipedia's CUDA limitations section

倍精度(CUDAの計算能力を1.3以上)[14]はIEEE 754規格から を逸脱:ラウンドに-nearest-逆数、除算、および平方根に対応する唯一の丸めモードは です。 単精度では、denormalsおよびシグナリングNaNはサポートされていません。 制御ワード内に ではなく命令単位で指定されているのは、2つのIEEE丸めモード(チョップと最寄りの 偶数)だけです。除算/平方根の精度は単精度よりわずかに低い です。測定誤差とは、大部分がフロートのアレイ内の加算と同様に、縮退ケースでは、おそらく、を除いて(浮動小数点丸めによって導入される誤差を圧倒するので

1

実際最も科学的計算は、一般に、その正確である必要はありません順序は逆順ですが、CPUでもこの種の問題が発生します。設計どおりに動作しているので、何も警告しません)。科学的コンピューティングでは、結果を一定の誤差の範囲内で表示し、マージンが実用的な問題を引き起こさないことを示すことは一般に十分です。

浮動小数点は高速であるように設計されていますが、必ずしも正確な桁ではありません.CPUであっても、浮動小数点とイプシロンを常に比較するように教えられています。

OTOHでは、計算や数値理論のように最後の桁まで精密な丸めルールが必要な計算では、正確に丸めルールを指定できる固定小数点演算(小数点モジュールなど)を使用することを検討する必要があります。

関連する問題