3

ホストとデバイス(GPU arch sm_13)でfloat(単精度)演算を実行すると、値は異なりますか?

4

1 に答える 1

8

これについての良い議論は、NVIDIAのホワイトペーパーで利用できます。基本的に:

  • IEEE-754は、現在ほとんどすべてのものに実装されています。
  • この標準の忠実な実装間でも、結果の違いを確認できます(有名なことに、Intelは倍精度のために内部で80ビットを実行しています)、またはコンパイラーでの高度な最適化設定により結果が変わる可能性があります
  • コンピューティング機能2.0以降のNVIDIAカードは、単精度と倍精度の両方でIEEE-754をサポートしますが、注意点はごくわずかです。
    • 一部の丸めモードは、一部の操作ではサポートされていません-これは、コードで丸めモードを明示的に変更した場合にのみ関係します
    • 融合された乗算と加算を含むいくつかの微妙な点があります
    • CUDAはまた、(わずかに)精度は低くなりますが、いくつかの操作の実装は高速になります。もちろん、それらを明示的または暗黙的に(コンパイラオプションを使用して)使用すると、当然、完全なieee-754の結果は得られません。
  • 計算機能1.3カードは、上記のieee-754を倍精度でサポートしますが、単精度ではサポートしません。(単精度は非正規化数をサポートしていません-たとえば、非常に小さい-数値、FMAなし、平方根、除算は完全に正確ではありません)
  • 計算機能1.2カードの精度は単精度のみであり、上記のように完全なieee-754ではありません。
于 2012-04-26T14:01:55.423 に答える