Kahanの加算アルゴリズムをCUDA/FP16でやってみた

Kahanの加算アルゴリズム

計算機上での加算計算で精度を上げるためのアルゴリズム.
擬似コードはWikipediaを参照.
カハンの加算アルゴリズム - Wikipedia

実験

内容

どれほどの大きさの数に数を足しこんでいくとどれほどの誤差が出るかを調べる.
  • 初期値 : 0 - 10000
  • 足し込む数 : 0~1の乱数
  • 足し込む回数 : 256回
比較のため単純に足し込んだ場合と比較する.

コード

Kahan - GitLab

結果

FP16でもKahanの加算アルゴリズムは有効なようですね.(雑)
Simpleの誤差が大きいのは加算しているようで加算していないためです.


1/1024をinitに対し256回足し込もうとした際に,実際に足し込まれる値を見てみるとこんな感じ. Kahanではinitが512までであれば期待通りに足し込めているのに対し,Simpleでは0にしか足し込めていないよう.

kahan-diff
カテゴリー:CUDA
記事作成日:2018-09-12