GPGPU(General Purpose computing on GPU、GPUよる汎目的計算)とは、GPUの演算資源を画像処理以外の目的に応用する技術のこと。
GPU(Graphics Processing Unit)はその名の通り、画像処理を専門とする補助演算装置である。一般的に、リアルタイムの画像処理は非常に高負荷な作業であるが、処理内容そのものは単純であるためハードウェア化に向いており、各社とも高速なメモリと強力な演算能力を集積した高性能化が著しい。
2000年代に入ると、表現力の向上を求めて固定機能シェーダからプログラマブルシェーダへの移行が進み、演算の自由度が飛躍的に増した。そこでこれをグラフィック・レンダリングのみならず、他の数値演算にも利用するのがGPGPUのコンセプト。
DirectX9.0の登場以降、NVIDIAのGPU用C言語の統合開発環境「CUDA」や、ATI Technologies(AMD)のGPU用C言語の統合開発環境「ATI Stream SDK」が現れ、GPGPU活用の幅が広がりつつある。NVIDIAとATI両社共に自社GPGPU技術においてOpenCLへの対応を表明している。
DirectX10に対応しているGPUはストリーミングプロセッサと呼ばれる多数の演算ユニットを持ち、複数のストリーミングプロセッサをまとめてクラスタとしている。これらの演算器に命令を与えるインストラクションユニットはクラスタごとに1台しか無く、クラスタを構成するストリーミングプロセッサはそれぞれ異なるデータを与えられ、そのデータに対して同じ命令内容を一度に実行する。このようなSIMD型データ処理は3次元演算やマルチメディア処理に効果を発揮する一方で、条件分岐が入るとオーバーヘッドがかさみ、途端に効率を落としてしまう欠点を持つ。また、ストリーミングプロセッサ間でデータをやりとりする場合、遠くのデータバスを経由することになり、それがボトルネックとなってしまう。
一般のアプリケーションで条件分岐が存在しないものは珍しく、GPGPUの発展にはいかに効率を落とさず条件分岐を行うかというのが一つの課題となっている。原理的にはシンプルなアルゴリズム構造を持ったプログラムを開発し、並列データ処理に最適化することがGPGPUの特長を最大限引き出すことにつながるといえる。
一般ユーザーが入手出来るものでGPGPUに対応している製品としては
NVIDIA
GeForce 8000 / 9000 / 200シリーズ
Quadro FX 300 / 400 / 500 / 1000 / 3000 / 4000 / 5000シリーズ
Plex 1000 / 2000シリーズ
Teslaシリーズ
ATI(AMD)
Radeon HD 4000シリーズ
FireStream 9000シリーズ
等が存在している。基本的にはストリーミングプロセッサを搭載しているGPUならばGPGPUに対応していることがほとんどである。もちろんドライバとソフトが対応していなければ機能を使用することは出来ない。
例外ではあるが、PS3に搭載されているCellもGPGPUに対応している。
急上昇ワード改
最終更新:2026/01/10(土) 22:00
最終更新:2026/01/10(土) 22:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。