電気技術者は最近、CPUにあるようなハードウェアセーフガードがないということを踏まえて、科学的コンピューティング(GPL)をGPUを使用して(例えば、これは本当ですか、もしそうなら、典型的なハードウェアの問題点はどれほど共通/実質的ですか?科学計算用GPUの精度
答えて
現代のGPUは科学計算に非常に適しており、多くのHPCアプリケーションは、性能とエネルギー効率のためにGPU上で動作するように少なくとも部分的に移植されています。 古いGPUとは異なり、現代のもの(例えば、NVIDIAのFermiまたはKeplerアーキテクチャを採用)は、単精度と倍精度の両方で完全に標準化されたIEEE-754フォーマットを提供しているので、現代のCPUと同様にこれらを使用できるはずです。
これにいくつかの(古い)論文がありましたが、計算能力> = 2.0のカードで問題が修正されているようです。例えば、[1]
現在のGPUは、倍精度演算をサポートしていないと、その 単精度サポートは IEEE-754浮動小数点規格の重要な側面上にグロス正確に丸められた結果として と番号システムの適切な終了。 ... 私たちの結果は、 の非正規化数の誤った取り扱いに加えて、特定のエッジケースでGPUの結果である重大なエラーがあることを示しています( )。
カール・E. Hilleslandとアンセルモラストラ、 "GPU浮動小数点パラノイア。" Proc。 GP2、2004年8月
ギョーム・ダ・グラサとDavid Defour、 "グラフィックス ハードウェア上のフロート・フロート演算子の実装。" Proc。実数とコンピュータ第7回会議、2006年7月
倍精度(CUDAの計算能力を1.3以上)[14]はIEEE 754規格から を逸脱:ラウンドに-nearest-逆数、除算、および平方根に対応する唯一の丸めモードは です。 単精度では、denormalsおよびシグナリングNaNはサポートされていません。 制御ワード内に ではなく命令単位で指定されているのは、2つのIEEE丸めモード(チョップと最寄りの 偶数)だけです。除算/平方根の精度は単精度よりわずかに低い です。測定誤差とは、大部分がフロートのアレイ内の加算と同様に、縮退ケースでは、おそらく、を除いて(浮動小数点丸めによって導入される誤差を圧倒するので
実際最も科学的計算は、一般に、その正確である必要はありません順序は逆順ですが、CPUでもこの種の問題が発生します。設計どおりに動作しているので、何も警告しません)。科学的コンピューティングでは、結果を一定の誤差の範囲内で表示し、マージンが実用的な問題を引き起こさないことを示すことは一般に十分です。
浮動小数点は高速であるように設計されていますが、必ずしも正確な桁ではありません.CPUであっても、浮動小数点とイプシロンを常に比較するように教えられています。
OTOHでは、計算や数値理論のように最後の桁まで精密な丸めルールが必要な計算では、正確に丸めルールを指定できる固定小数点演算(小数点モジュールなど)を使用することを検討する必要があります。
NVIDIAは、一般的には浮動小数点で、特にGPU上での作業の詳細を説明ホワイトペーパー公開しています:はい...そうです...で構築されたすべてのそれらの大規模な計算クラスタ
http://developer.download.nvidia.com/assets/cuda/files/NVIDIA-CUDA-Floating-Point.pdf
- 1. Androidの科学計算ツール
- 2. Java科学計算ツール
- 3. 科学計算用QtとVisual Studio
- 4. 科学記法を乗算し、awkの精度を変更する
- 5. 計算の精度C++ Cplex
- 6. Interbase SQLの精度計算
- 7. 科学的計算にPyTorchを使用する
- 8. 基本的な電卓/将来の温度コンバータ/将来の科学計算機
- 9. 科学計測のソフトウェアアーキテクチャ
- 10. 機械学習:バイナリラベルの精度スコアを計算すると、精度スコアが低くなりますか?
- 11. 精度、リコール、f1スコアから精度を計算する - scikit-learn
- 12. 行列計算の精度R対Stata
- 13. OpenMP、コア数、乱数計算の精度
- 14. numpyでの高精度計算
- 15. ファストテキストクラシファイアの精度を計算する
- 16. Pythonの計算科学のためのメッシュ生成
- 17. 重心と精度を計算する
- 18. 4倍精度計算によるRcpp
- 19. 計算された二重帰還科学記法
- 20. 逆算の精度と精度
- 21. pysparkストリーミングは機械学習/科学計算に適していますか?
- 22. 計算用のJava精度を設定する
- 23. 計算精度を最大限に引き出すためのDECIMAL(精度、スケール)
- 24. メトロノーム精度アルゴリズム数学
- 25. iPhone/iPad倍精度数学
- 26. Python数学演算の精度を扱う
- 27. 科学プロット用のIronPythonライブラリ
- 28. TensorflowマルチGPU MNISTクラシファイア:低精度
- 29. GPUの整数計算
- 30. 数学計算用ライブラリ
をGPUはまったく役に立たず、本質的に乱数発生器です。すべてのハードウェアはランダムエラーの影響を受けます。セラミックパッケージの放射能崩壊イベントによって放出された単一の高エネルギー光子は、CPU内のどこかでビットを反転してシステムを完全に殺すことができます。 –
@MarcB私は陰謀理論家ではありません!過去の問題の例については、私の答えのリンクを参照してください。私は基本的に、これらが最近のハードウェアで適切に修正されているかどうかを知りたいと思っています。 –