2012-04-26 12 views
3

ホストとデバイス(GPU arch sm_13)で浮動小数点演算を実行すると、値は異なりますか?NVIDIA GPUのIEEE-754規格(sm_13)

+2

GT200ファミリーのGPUは、IEEE-754単精度演算をサポートしていませんでした。しかし、たとえそうであったとしても、その答えはおそらくはいでしょう。結果は異なるかもしれません。 – talonmies

+0

@talonmies私は私のクエリ[here](http://stackoverflow.com/q/10335782/842808)を改訂しました。親切に見てみましょう。 ありがとう – Abhinav

答えて

8

NVIDIAのwhitepaperでは、これに関する良い説明があります。基本的に:

  • IEEE-754は、現在のほとんどすべてによって実装されています。
  • でも、この規格の忠実な履行の間、あなたはまだあなたのコンパイラで結果に差(有名な、Intelの倍精度80ビットの内部でやって)、または高最適化の設定が結果に
  • 計算能力を2.0以降を変更することができます見ることができますNVIDIAカードが
    • いくつかの丸めモードは、いくつかの操作でサポートされていないだけで、非常に小さな点に注意して、両方の単精度および倍精度でIEEE-754をサポート - あなたが明示的にコード内で丸めモードを変更する場合にのみ関連してあります
    • 融合した乗算と加算を含むいくつかの微妙なこと
    • CUDAも提供して(少し)低精度が、いくつかの操作の高速化の実装、そしてもちろん、あなたがそれらの明示的または暗黙的に(コンパイラオプション付き)あなたが自然に取得することはありません完全なIEEE-754の結果
  • 計算機能を使用する場合1.3カードは上記のように倍精度では単精度ではなくieee-754をサポートします。 (単精度は非正規化をサポートしていません - 例えば、非常に小さい数、FMA、平方根および除算は完全に正確ではありません)
  • 計算機能1.2カードは単精度のみを持ち、これらはieee-754 。
+0

IEEE754規格にもかかわらず、CPUとGPUで計算される浮動小数点値は、(a)ハードウェアの最適化、 Intels 80-bit method(b)コンパイラの最適化など、なぜそれを標準と呼びますか? – Abhinav

+2

@Abhinav:ストレージルール、フォーマット、丸めルール、操作、交換フォーマットおよび例外を定義するため、標準です。それは(どのバージョンに応じて)再現性基準も定義しています。しかしすべてには公差があります。つまり、浮動小数点は、プラットフォームに準拠しているすべてのプラットフォームで*同じ方法で動作します。結果がビット単位で一致することを意味するものではありません。 – talonmies

+0

@Abhinav:IEEE754が以前よりずっと悪くなっていた前に、私を信頼してください。 –

関連する問題