7

電気技師は最近、CPUにあるようなハードウェアの保護手段がないという理由で、科学計算にGPUを使用しないように警告しました(たとえば、精度が本当に重要な場合)。これは本当ですか?もしそうなら、典型的なハードウェアの問題はどれほど一般的/実質的ですか?

4

4 に答える 4

9

実際、最新のGPUは科学計算に非常によく適合し、パフォーマンスとエネルギー効率のために、多くのHPCアプリケーションが少なくとも部分的にGPUで実行されるように移植されています。古いGPUとは異なり、最新のGPU(たとえば、NVIDIAのFermiまたはKeplerアーキテクチャを使用)は、単一精度と倍精度の両方で完全に標準化されたIEEE-754形式を提供するため、最新のCPUと同じように使用できます。

于 2012-08-24T14:33:10.730 に答える
4

これに関するいくつかの(古い)論文を見つけましたが、計算能力が2.0以上のカードでは問題が修正されたようです。

現在のGPUは倍精度計算をサポートしておらず、単精度サポートは、正しく丸められた結果や記数法の適切なクローズなど、IEEE-754浮動小数点標準[1]の重要な側面を覆っています。...私たちの結果は、非正規化数の誤った処理に加えて、特定のエッジケースでのGPUの結果に重大なエラーがあることを示しています。

倍精度(CUDA計算機能1.3以降)[14]は、IEEE 754標準から逸脱しています。逆数、除算、および平方根でサポートされている唯一の丸めモードは、丸めから最も近い値です。単精度では、非正規化数とシグナリングNaNはサポートされていません。2つのIEEE丸めモードのみがサポートされ(チョップと最も近い端に丸める)、それらは制御ワードではなく命令ごとに指定されます。除算/平方根の精度は単精度よりわずかに低くなります。

于 2012-08-24T14:33:31.313 に答える
2

NVIDIAは、一般的な浮動小数点の操作、特にGPUでの操作の詳細をカバーするホワイトペーパーを公開しています。

http://developer.download.nvidia.com/assets/cuda/files/NVIDIA-CUDA-Floating-Point.pdf

于 2012-08-27T17:40:01.860 に答える
1

実際、ほとんどの科学計算は、一般にそれほど正確である必要はありません。これは、測定誤差などが、浮動小数点の丸めによって生じる誤差を大幅に圧倒するためです(ただし、浮動小数点の配列を順番に合計する場合と逆の順序で合計する場合など、縮退した場合を除きます。ただし、CPUでもそのような問題が発生し、設計どおりに機能しているため、警告も表示されません)。科学計算では、一般に、一定の許容誤差内で結果を表示し、その許容誤差が実際的な問題を引き起こさないことを示すだけで十分です。

浮動小数点は高速であるように設計されており、CPUの場合でも、必ずしも桁単位で正確であるとは限りません。そのため、浮動小数点をイプシロンと比較するように常に教えられています。

OTOH、会計や数論のように、実際に最後の桁まで正確な丸め規則が必要な計算では、丸め規則を正確に指定できる固定小数点演算(10進モジュールなど)の使用を検討する必要があります。

于 2012-08-24T23:56:22.337 に答える