GPUプログラミング
GPUの混合精度の計算で、掛け算をFP16などの低い精度で行い、足し合わせ(累積)をFP32で行うことが多い理由として正しいものはどれか。
- A掛け算はFP32ではできないから
- B多数の積を足し合わせるときに低い精度では丸めの誤差がたまり、小さな値が失われるので、累積だけは高い精度で行うから
- C足し算はFP16ではできないから
答えと解説を見る
正解:B. 多数の積を足し合わせるときに低い精度では丸めの誤差がたまり、小さな値が失われるので、累積だけは高い精度で行うから
FP16の仮数は10ビットしかないので、大きくなった合計に小さな積を足すと、積が丸めで消えてしまうことがあります。行列の積では何千もの積を足し合わせるので、この誤差がたまると結果が大きくずれます。そこで、メモリの量と演算器の負担の大きい掛け算は低い精度で行い、累積だけをFP32で行います。テンソルコアの多くは、この形の積和を1命令で行えます。
- A. FP32でも掛け算はできますが、遅く電力も多く使います。
- B. 正しい。速さと精度の両方を得る工夫です。
- C. FP16でも足し算はできますが、誤差が大きくなります。