積和演算

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。Sygh (会話 | 投稿記録) による 2020年9月30日 (水) 16:03個人設定で未設定ならUTC)時点の版 (出典のない記述をリバート。なお、英数字は半角を使うべき。わざわざ全角に直すような意味不明な編集をするべきではない。Wikipedia:表記ガイド#使用可能な文字)であり、現在の版とは大きく異なる場合があります。

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

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

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

融合積和演算

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

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

脚注

関連項目