GPGPU(General-purpose computing on graphics processing units; GPUによる汎用計算)とは、GPUの演算資源を画像処理以外に応用する技術である[1][2]。ビッグデータなどに対し大量の科学技術計算などを実行できるため、広く使われるようになった[3]。2022年、単一マシンとしては世界初のエクサスケールコンピュータとなった米HPEの「フロンティア」にもベクトル計算用にAMDのGPUが搭載されるなど、世界最速を競うスーパーコンピュータでの利用も一般的である。
GPGPUは、GPUが持つベクトル計算機としての特性を活かした汎用的なストリーム・プロセッシングの一形態である。GPUはコンピュータゲームで多用されるリアルタイム画像処理向けのデータ並列計算とパイプライン処理に特化した命令発行形態を持ち、またGPUとメインメモリ間の帯域幅は通例狭く[注釈 1]、固定長レジスタしか扱えない[注釈 2](後述)ものの、GPUと直結されるVRAM間には十分広い帯域幅を備えておりSIMDやSIMTによる並列計算も行える[4]。
GPGPUは制約はあるもののHPCの分野で注目される応用技術である。伝統的に構築されてきた、カスタムCPUとして開発されるベクトルプロセッサを主体としたスーパーコンピュータと比較して、疎行列で計算効率が低下する[注釈 3]、可変長ベクトル命令が扱えずレジスタ長で割り切れない要素を別途考慮する必要があるという欠点はある[5]ものの、GPUを主体として計算機システムを構成する方がコストパフォーマンスが高くなることからHPC分野での導入が進んでいる[6]。
しかし、GPU特有の制約は無くなりつつある。2023年現在ではプログラマブルシェーダーの発展によりCPUと同程度のプログラマビリティが実現されており[7]、OpenCLなどを用いることでCPUとGPUでの相互で互換性を持ったプログラムを作成することも可能であることから[8]、前述のランダムメモリアクセスに弱い、可変長ベクトル命令が利用できないという、伝統的なベクトルプロセッサと比較した場合の原理的な欠点以外については改善されてきている。
引用エラー: 「注釈」という名前のグループの <ref>
タグがありますが、対応する <references group="注釈"/>
タグが見つかりません