GPGPU
GPUはシェーダープロセッサ(ストリームプロセッサ、ストリーミングプロセッサとも)と呼ばれる演算ユニットを多数持ち、複数のシェーダープロセッサをまとめてクラスタとしている。これらの演算器に命令を与えるインストラクション・ユニットはクラスタごとに1台しか無く、クラスタを構成するシェーダープロセッサはそれぞれ異なるデータを与えられ、そのデータに対して同じ命令内容を一度に実行する。このようなSIMD型データ処理は3次元演算やマルチメディア処理に効果を発揮する一方で、命令中に条件分岐による分岐が入るとオーバーヘッドがかさみ、途端に効率を落としてしまう。今日のCPUでは、このようなペナルティを最小限にするためにプリフェッチ/プリデコードや投機実行/レジスタ・リネーミングといった機能を備えているが、GPUでは備えていない(限定的な条件付きで投機的実行を行なえるものもある。GPUでの動的分岐はDirectX 9.0c世代以降でようやく現実的になった)。
GPUはメモリにシーケンシャルにアクセスし、かつ条件分岐の無い計算(演算密度の高い処理)に強い。そのような例に行列計算がある。苦手な物の代表として二分探索がある。二分探索は条件分岐だらけなうえ、メモリにランダムアクセスする。ポインタをたどる操作もメモリにランダムアクセスするため、連結リストや木構造なども苦手である。密行列は得意だが、疎行列は苦手で、東京大学情報基盤センターによると100倍遅い。グラフ計算においては、例えば最短経路問題では、完全グラフのような密グラフに対しては高速に計算できるが、頂点から数本しか辺が出ていないような疎グラフに対しては遅い。
続いて1999年のGeForce 256の発売によってジオメトリエンジンをグラフィックスアクセラレータに統合した「GPU」という製品カテゴリが登場し、2000年11月9日にはアセンブリ言語で128個の命令のみ記述可能な原始的なプログラマブルシェーダー(シェーダーモデル1.x)が登場した。2002年、GPUの固定機能シェーダーがプログラマブルシェーダーに置き換わったことでブレイクスルーが起きたと主張し、ムーアの法則を超える速度で進化するGPUのストリーム・プロセッサとしての未来を予感したIan Buckにより、再度GPUによるレイトレーシング計算の高速化についての論文が発表された。