GPUをグラフィック以外の処理に活用する
「CUDA」の誕生
GPUをもっと汎用に、という動きは2003年頃から顕著になってきていた。例えば2003年7月に開催されたSIGGRAPH 2003には“Computation on GPUs”というセッションがあり、線形代数計算をGPUに実装したり、疎行列をGPUに解かせるといった発表がされていたし、当時のATIのCEOを勤めていたDave Orton氏もこの頃からGPUをグラフィック以外の汎用処理に向けて使うというアイディアを語るようになってきていた。
これを後押ししたのは、当時のCPUの性能の上がらなさである。2003年といえばインテルがNorthwoodを発表した年であり、この頃はまだ「次のPrescottでは5GHz超えでさらに性能が上がる」などといわれていたが、ご存知の通り翌2004年に発表されたPrescottのお陰で、CPUの業界には急速に閉塞感が漂うことになった。
冷静に考えれば「AMDもあるだろう?」という気もするのだが、この2003~2004年はAMDも130nm SOIプロセスの立ち上げに失敗しており、性能を上げる以前に製品が出ないと騒いでいた頃なので仕方ないともいえる。
その一方で演算性能そのものはまだまだ足りないと認識されており、「だったらGPUを使えばいいのでは?」というのは誰しも考え付くことである。
もちろん、いきなり転用しようとしても無理がある。先にも述べたが、グラフィック用途をメインにしている従来のGPUでは、扱えるデータ型が8bitの整数か16~24bit程度の浮動小数点演算であり、これは汎用に使うにはあまりに不便すぎる。
32bitの整数や32/64bitの浮動小数点演算ができないとアプリケーションの移植は困難極めるだろうし、ある程度汎用で使えるようにするためには制御構造や演算命令などの見直しも必要である。
このあたり、どの程度の命令や機能を搭載するか、あるいはどんな形で利用できるようにするかといった基本的な仕様の策定には相応に時間がかかる。
そうしたこともあり、GPGPUの利用が可能となるシェーダーモデル4.0に対応したDirectX 10の発表は、Windows Vistaにあわせた2006年までずれ込んだ。
グラフィックの観点から言えば、バーテックス・シェーダーとピクセル・シェーダーを統合したユニファイド・シェーダー構造になったことがよく取りざたされるが、GPGPU的に見ると以下の拡張により、かなり自由にプログラミングができるようになった。
- 実行命令数の制限がなくなり、命令スロット数も非常に大きくなった
- 一時レジスター(32→4096)や定数レジスター(224→65536)の数が大幅に増やされた
- 動的なフロー制御の制約がなくなった
- 整数演算あるいはビット演算が追加された
またすべてのシェーダーが直接ローカルメモリー(つまりビデオカード上のメモリー)にアクセスして値を読み取ったり、あるいは結果を直接書き戻したりすることも可能になった。ようやく汎用プロセッサーとしてこれを使うための準備が整ったことになる。
このDirectX 10(シェーダーモデル4.0)に先に対応したのはNVIDIAだった。2006年にG80コアのGeForce 8800シリーズをリリースし、翌2007年6月にはこれに対応したCUDA(Compute Unified Device Architecture)を発表、すぐにダウンロード開始される。
CUDAはツールキットとして提供されるライブラリー(とツール群)であり、これを使ってNVIDIAのGPUで汎用計算をさせるものだ。要するにCgの汎用版と考えればよい。
ATIはこれに先駆け、R500ベースのRadeon X1000シリーズをGPGPU的な使い方にできるATI Stream SDKと呼ばれるライブラリーを2006年9月に発表している。
ただこのATI Stream SDKはR600コアへの対応がやや遅れたうえ、発表された時点では一般的なカードでは動かない(ATIのFireStreamシリーズ専用)ということもあり、普通にGeForce 8000シリーズカードを買えば使えたCUDAに比べると入手性が格段に落ちた。
またStream SDKはスタンフォード大の開発したBrookという言語をベースに構築されており、Cベースで記述できたCUDAよりも取っ付きが悪かったことも否めない。
結局2007年頃から、さまざまな研究機関は一斉にNVIDIAのグラフィックカードをまず少量購入、この上でCUDAを使ってアプリケーションの移植や性能の評価を始めることになる。
この連載の記事
-
第767回
PC
Lunar LakeはWindows 12の要件である40TOPSを超えるNPU性能 インテル CPUロードマップ -
第766回
デジタル
Instinct MI300のI/OダイはXCDとCCDのどちらにも搭載できる驚きの構造 AMD GPUロードマップ -
第765回
PC
GB200 Grace Blackwell SuperchipのTDPは1200W NVIDIA GPUロードマップ -
第764回
PC
B100は1ダイあたりの性能がH100を下回るがAI性能はH100の5倍 NVIDIA GPUロードマップ -
第763回
PC
FDD/HDDをつなぐため急速に普及したSASI 消え去ったI/F史 -
第762回
PC
測定器やFDDなどどんな機器も接続できたGPIB 消え去ったI/F史 -
第761回
PC
Intel 14Aの量産は2年遅れの2028年? 半導体生産2位を目指すインテル インテル CPUロードマップ -
第760回
PC
14nmを再構築したIntel 12が2027年に登場すればおもしろいことになりそう インテル CPUロードマップ -
第759回
PC
プリンター接続で業界標準になったセントロニクスI/F 消え去ったI/F史 -
第758回
PC
モデムをつなぐのに必要だったRS-232-CというシリアルI/F 消え去ったI/F史 -
第757回
PC
「RISC-VはArmに劣る」と主張し猛烈な批判にあうArm RISC-Vプロセッサー遍歴 - この連載の一覧へ