ハードウェアアクセラレーション
コンピューティングにおいて、ハードウェア・アクセラレーション (英: hardware acceleration) とは、なんらかの機能を通常の汎用プロセッサ (CPU) 上で動作するソフトウェア(コンピュータ・プログラム)としての実装で処理したのではレイテンシが大きい、スループットが低い、消費電力が大きい、などといった問題があるような場合に、ハードウェア実装による支援で実行速度などを加速(アクセラレーション)し、システム全体の性能や効率を向上させる技術である。ハードウェア・アクセラレーションを利用するにはシステムに専用のプロセッサを追加する必要があるため、コスト高に繋がる可能性がある。
CPUのSIMD型拡張命令を使用する利点としては、メインメモリよりも遠くにあるGPUを用いた場合のような大きなレイテンシが発生しないということが挙げられる(後述するように、CPUとGPUはメモリ空間が統合されていないことが多く、仮にUMAで物理的に同じメインメモリを使用していても直接お互いのデータを読み書きすることはできず、データを転送するコストがかかる)。
CPUを遥かに超える並列演算性能を持つGPUを、グラフィックスだけでなく様々な計算用途に応用する技術をGPGPUと呼ぶが、2010年代以降はGPGPUに対応したGPUアーキテクチャの成熟とAPIの標準化が進んだため、グラフィックス以外のアクセラレータとしてもポピュラーな選択肢になった。GPUはもともと32bit単精度または16bit半精度の浮動小数点演算を得意とするが、機械学習・深層学習向けに8bit整数演算専用命令を備えるプロセッサも登場している。一方、科学技術計算では64bit倍精度浮動小数点数(あるいはそれ以上の精度)が主に必要とされるが、倍精度はゲーミング用途ではほとんど使われず無駄になるため、コンシューマー向けGPUでは倍精度の浮動小数点演算性能は単精度の場合の1/24や1/32程度に抑えられていることが多い。ハーフレートの倍精度(単精度の場合の1/2)に対応しているGPUは主にワークステーション向けやGPGPUサーバー専用製品に限られる。