FP16の精度

FP16(半精度浮動小数点)を省メモリ・高速化用に使ってみたいと思い,どの程度の精度があるのか気になった.FP16は仮数部は11bitなので2048段階=10進数3桁ちょっとの精度があるが,それに指数部がかかってきたときの実際の精度を調べてみた.簡単に精度を測るために,細かいステップ(e.g., 1e-4)で変化するFP32を一度FP16に落として,再びFP32に戻したときの一定区間における前後数値差の最大値をFP16の解像度として調べた.今回は点群処理への利用を考えているので,x < 1000 の範囲を使った.

Range   : Max delta error (Resolution)
< 0.01  : 0.000100
< 0.1   : 0.000130
< 1.0   : 0.000490
< 10.0  : 0.007820
< 100.0 : 0.06250
< 1000.0: 0.5

結果としては,だいたい距離で考えると10m程度までなら8mm,100mまでなら6cm,1000mまでなら50cmくらいの解像度がありそうという感じだった.いろいろ演算することを考えると点群処理には結構ギリギリな感じだろうか.メモリ節約用に部分的に使うことはできそうかも.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください