2017-03-16 7 views
1

私は約RenderScriptを読んでいます。私はthisの特定のブログに従っています。浮動小数点精度を変更する必要があります

私は一部に遭遇読み取りが浮動小数点精度

を設定と呼ばれる一方でそれはnoobの質問として見えるかもしれませんが、なぜ我々は、浮動小数点精度を変更する必要がありますか?私たちはどんな利益を得ますか?特にRenderScriptに関連するものは何ですか?

答えて

0

精度は基本的にはそのままです。それは、画面上の正確なものが描画される方法を示します。場合によっては、浮動小数点精度はそれ自身で、またはメモリや性能のような他のものと比較して重要ではないかもしれません。画面が小さく、メモリが少ないデバイスをお持ちの場合は、モデルを描画するのに倍精度は必要ありません。

2

これらの精度は、レンダスクリプトの計算部分に対するものです。一般的には、IEEE 754よりもはるかに低いGL精度を得るレンダリングには影響しませんが、レンダスクリプトのグラフィック部分は廃止されているため、使用しないでください。

本質的に、rs_fp_relaxedを使用すると、モバイルGPUおよびSIMDをサポートするCPUデバイスの最高の範囲に移動できるようになります。

rs_fp_relaxedは、denormsに対してゼロにフラッシュし、ゼロに丸めます。これは、ハーフ、フロート、およびダブルタイプで計算するときの答えに影響します。モバイルgpusによって加速され、また倍増をネイティブにサポートするデバイスでもスピード・ヒットしたくない場合は、ダブルを避けるべきですが。

私は山車上のwikiページをチェックアウトをお勧めします:https://en.wikipedia.org/wiki/Single-precision_floating-point_format

要旨は山車は2部指数及び1.23 * 10^13の科学的表記法に類似仮に保存されています。指数がすべて0の場合、番号は正規化されません。したがって、計算結果が指数が0の値になると、仮数は実際の値ではなくゼロになります。 float32の場合、具体的な値は1.1754942E-38(0x7ffff)〜1.4E-45(0x1)とそれに対応する負の値です。

2つの浮動小数点数を使って数式を計算すると、最後のビットを丸める方法を知るために、実装が精度の余りの桁を計算しないため、丸めから1 ulp離れます実装されています。一般に1 ulpは非常に小さいですが、絶対差は実際の数値空間のどこに値があるかによって決まります。たとえば、1.0は0x3f800000としてエンコードされます。 1 ulpのエラーは0x3f800001になり、1.0000001に変換されます。

関連する問題