積和
演算は、数値計算における基本的な
演算の一つであり、乗算の結果を順次加算していく処理を指します。この
演算は、しばしば「乗累算」とも呼ばれ、英語では「multiply-add (MAD/MADD)」や「multiply-accumulate (MAC/MACC)」といった名称で知られています。具体的な
演算式は`a ← a + b × c`で表され、これは「aにbとcの
積を加算する」という操作を表しています。
[積]]和演算は、
デジタル信号処理の分野で非常に頻繁に使用されます。
デジタルシグナルプロセッサ]では、この[[演算を高速に実行するために、専用の
演算回路が搭載されているのが一般的です。多くの場合、
積和算命令は1
クロックサイクルで完了するように設計されており、この処理速度がプロセッサの性能を測る重要な指標となることがあります。また、
積和
演算が用いられる例として、ベクトルの
ドット積計算が挙げられます。ベクトルの
ドット積は、対応する要素同士の
積を全て加算することで求められますが、これは
積和
演算の繰り返しによって実現されています。
行列
積の計算も、
積和
演算の重要な応用例です。行列の各要素は、行と列の
ドット積として計算され、この
ドット積の計算は
積和
演算の連続に他なりません。したがって、行列
積の計算は、
積和
演算を効率よく実行することで高速化が図られます。
一方、加算の代わりに減算を用いる場合、この
[演算]]は「積差
演算]」と呼ばれます。[[演算式は`a ← a - b × c`で表されます。
積差
演算もまた、数値計算において重要な役割を果たします。
[積]]和演算の計算精度を高めるための技術として、「融合
積和
演算]」があります。通常の[[積和
演算では、`b × c`の計算結果を
浮動小数点数として一度丸めてから`a`に加算するため、計算途中で誤差が生じることがあります。しかし、融合
積和
演算では、この
積算結果を丸めることなく、一度の命令で
積和
演算を実行します。これにより、計算精度が大幅に向上し、より正確な結果が得られるようになります。このFMAは、
IEEE 754規格の2008年改訂版で標準化されており、多くの
CPUやGPUでサポートされています。例えば、HPのPA-RISC、IBMのメインフレーム
コンピュータ、Powerプロセッサ、
インテルのItaniumプロセッサ、x86系プロセッサの拡張命令であるFMA命令セット、ARMのVFPv4やNEONv2などが、この命令を実装しています。GPUにおいても、
NVIDIAやAMD、
インテル製のGPUでFMA命令がサポートされており、高度な並列計算における精度向上に貢献しています。
積和
演算は、数値計算、信号処理、機械学習など、様々な分野で広く利用されている基本的な
演算であり、その効率的な実行は、高性能なコンピューティングシステムを構築する上で非常に重要です。