積和演算のソースを表示
←
積和演算
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{複数の問題 | 一次資料 = 2016年4月 | 出典の明記 = 2016年4月 }} '''積和演算''' (せきわえんざん) は、[[演算]]のひとつで、[[積]]の[[加法|和]]を求める、つまり[[乗算]]の結果を順次[[加算]]する演算である。'''乗累算''' (じょうるいざん) とも言う。'''MAD'''/'''MADD''' (multiply-add) <ref>[https://pc.watch.impress.co.jp/docs/column/kaigai/20130507_598286.html 【後藤弘茂のWeekly海外ニュース】HaswellのGPUコア「Iris」はなぜ強力なのか - PC Watch]</ref><ref name="gpu_fermi">[https://news.mynavi.jp/techplus/article/20091007-nvidia_fermi/2 科学技術計算向け演算能力が引き上げられたGPUアーキテクチャ「Fermi」 (2) 科学技術計算向けのさまざまな工夫 | マイナビニュース]</ref>もしくは '''MAC'''/'''MACC''' (multiply-accumulate) と呼ばれることもある。演算式は以下のように表される。 :<math>a \leftarrow a + b \times c</math> 積和演算は[[デジタル信号処理]]において非常に多く使用される演算で、[[デジタルシグナルプロセッサ]]では積和算命令を1[[クロック]]で実行できる<ref>{{Cite journal | title=イチから学ぶDSP基礎の基礎(2):専用プロセッサとしてのDSPの特徴 (1-3) |journal= EDN Japan |url=https://ednjapan.com/edn/articles/1206/29/news110.html |author=日本テキサス・インスツルメンツ |date=2012-06-29 }}</ref>専用の演算回路を持つ。また、1秒間にこの積和演算を何回実行できるか、がプロセッサの性能指標として使われることもある<ref>[http://topsecret.hpc.co.jp/wiki/index.php/2013%E5%B9%B4%E3%81%AE%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5%E3%81%AEFLOPS%E5%80%A4%E8%A8%88%E7%AE%97%E6%96%B9%E6%B3%95 2013年のプロセッサのFLOPS値計算方法 - トータル・ディスクロージャ・サイト(事実をありのままに)]{{リンク切れ|date=2019-05}}</ref>。 なお、和ではなく[[減法|差]]を用いる場合は、'''積差演算'''(multiply-subtract)と呼ばれる。 :<math>a \leftarrow a - b \times c</math> 積和演算は[[ドット積]]の計算に現れる。ベクトル <math>\boldsymbol{v} </math> と <math>\boldsymbol{w} </math> のドット積は「[[アキュムレータ (コンピュータ)|アキュムレータ]] <math>y </math> に対し要素の積 <math>v_i \times w_i </math> を足し込む」という積和演算を要素分繰り返すことで得られる。[[行列の乗法|行列積]](GEMM)の各要素は行と列のドット積で計算されるため、行列積は積和演算の集まりと言える。 == 融合積和演算 == 積和の演算式において、途中の積算<math>b \times c</math>の演算結果を[[浮動小数点数]]の値としていったん丸めてしまうと、最終演算結果に大きな誤差が発生する。途中の積算を丸めず、積和演算を1命令で行なってしまうことで、最終演算結果の誤差を小さくするのが融合積和演算 (fused multiply-add, '''FMA'''/'''FMAD''') である<ref>[https://news.mynavi.jp/techplus/article/20121003-idf_haswell_hpc_01/ HPC性能が大幅に強化されたHaswell(前編) -各コアに256bit長のFMAを2個装備 | マイナビニュース]</ref>。FMAは[[IEEE 754]]規格の2008年改訂版 (IEEE 754-2008) で標準化されている。 [[CPU]]では、HPのPA-RISC、IBMのメインフレームコンピュータ3090のVF拡張、IBMのPowerプロセッサ、インテルのItaniumプロセッサ、[[インテル]][[x86]]系プロセッサの拡張命令である[[ストリーミングSIMD拡張命令#FMA3|FMA命令セット]]<ref>"FMA (Fused Multiply-Add) は、インテル® AVX の別の拡張機能 ... インテル® AVX と FMA". Intel. [https://www.xlsoft.com/jp/products/intel/compilers/ccw/12/ug/intref_cls/common/intref_avx_overview.htm 概要: インテル® Advanced Vector Extensions (インテル® AVX) 命令の組み込み関数].</ref>、[[ARMアーキテクチャ|ARM]]の拡張命令であるVFPv4やNEONv2で、このFMA命令が実装されている<ref>[https://www.xlsoft.com/jp/products/intel/compilers/ccw/12/ug/intref_cls/common/intref_avx_details.htm インテル® Advanced Vector Extensions (インテル® AVX) 組み込み関数と FMA (Fused Multiply-Add) 組み込み関数の詳細]</ref><ref>[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491bj/CJAEGAJB.html FMA(Fused Multiply Add)コンパイラ組み込み関数]</ref>。[[CPU]]や[[デジタルシグナルプロセッサ|DSP]]に限らず、[[Graphics Processing Unit|GPU]]([[NVIDIA]]製や[[アドバンスト・マイクロ・デバイセズ|AMD]]製や[[Intel HD Graphics|インテル]]製など)でもFMA命令がサポートされている<ref>[https://pc.watch.impress.co.jp/docs/2008/0620/kaigai449.htm 後藤弘茂のWeekly海外ニュース: GeForce GTX 280の倍精度浮動小数点演算]</ref><ref>[https://www.4gamer.net/games/085/G008506/20090921001/ 4Gamer.net ― AMD,世界初のDX11 GPU「ATI Radeon HD 5800」を発表。HD 4800の大幅な進化形]</ref><ref name="gpu_fermi"/><ref>[https://news.mynavi.jp/techplus/article/20140414-gtc2014_floatingpoint_01/ GTC 2014 - GPUの浮動小数点演算の精度:理論と実践(前編) | マイナビニュース]</ref>。 == 脚注 == {{脚注ヘルプ}} {{reflist}} == 関連項目 == * [[SIMD]] {{デフォルトソート:せきわえんさん}} [[Category:代数学]] [[Category:数学に関する記事]] [[Category:デジタル回路]] {{Computer-stub}}
このページで使用されているテンプレート:
テンプレート:Cite journal
(
ソースを閲覧
)
テンプレート:Computer-stub
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:リンク切れ
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
テンプレート:複数の問題
(
ソースを閲覧
)
積和演算
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報