積和演算

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

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

a \leftarrow a + b \times c

デジタル信号処理において非常に多く使用される演算で、デジタルシグナルプロセッサでは専用の演算回路を持つことも多い[要出典]。また、1秒間にこの積和演算を何回実行できるか、がプロセッサの性能指標として使われることもある[3]

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

a \leftarrow a - b \times c

融合積和演算[編集]

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

Intelプロセッサの拡張命令であるIntel AVX2命令セットでは、このFMA命令が実装されている[5] [6]

なおCPUやDSPに限らず、NVIDIA GPUAMD GPUでもFMA命令がサポートされている[7] [8] [9] [10]

脚注[編集]

[ヘルプ]