積和演算

提供: miniwiki
移動先:案内検索

積和演算 (せきわえんざん)は、演算のひとつで、を求める、つまり乗算の結果を順次加算する演算である。乗累算 (じょうるいざん) とも言う。MAD/MADD (multiply-add) [1] [2]もしくは MAC/MACC (multiply-accumulate) と呼ばれることもある。演算式は以下のように表される。

[math]a \leftarrow a + b \times c[/math]。また、1秒間にこの積和演算を何回実行できるか、がプロセッサの性能指標として使われることもある[3]

なお、和ではなくを用いる場合は、積差演算と呼ばれる。

[math]a \leftarrow a - b \times c[/math]

融合積和演算

積和の演算式において、途中の積算[math]b \times c[/math]の演算結果を浮動小数点数の値としていったん丸めてしまうと、最終演算結果に大きな誤差が発生する。途中の積算を丸めず、積和演算を1命令で行なってしまうことで、最終演算結果の誤差を小さくするのが融合積和演算 (fused multiply-add, FMA/FMAD) である[4]。FMAはIEEE 754規格の2008年改訂版 (IEEE 754-2008) で標準化されている。

CPUでは、Intel x86系プロセッサの拡張命令であるIntel AVX2命令セット、ARMの拡張命令であるVFPv4やNEONv2で、このFMA命令が実装されている[5][6][7]CPUDSPに限らず、GPUNVIDIA製やAMD製やIntel製など)でもFMA命令がサポートされている[8][9][10][11]

脚注