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を使ってアプリケーションの移植や性能の評価を始めることになる。

この連載の記事
-
第852回
PC
Google最新TPU「Ironwood」は前世代比4.7倍の性能向上かつ160Wの低消費電力で圧倒的省エネを実現 -
第851回
PC
Instinct MI400/MI500登場でAI/HPC向けGPUはどう変わる? CoWoS-L採用の詳細も判明 AMD GPUロードマップ -
第850回
デジタル
Zen 6+Zen 6c、そしてZen 7へ! EPYCは256コアへ向かう AMD CPUロードマップ -
第849回
PC
d-MatrixのAIプロセッサーCorsairはNVIDIA GB200に匹敵する性能を600Wの消費電力で実現 -
第848回
PC
消えたTofinoの残響 Intel IPU E2200がつなぐイーサネットの未来 -
第847回
PC
国産プロセッサーのPEZY-SC4sが消費電力わずか212Wで高効率99.2%を記録! 次世代省電力チップの決定版に王手 -
第846回
PC
Eコア288基の次世代Xeon「Clearwater Forest」に見る効率設計の極意 インテル CPUロードマップ -
第845回
PC
最大256MB共有キャッシュ対応で大規模処理も快適! Cuzcoが実現する高性能・拡張自在なRISC-Vプロセッサーの秘密 -
第844回
PC
耐量子暗号対応でセキュリティ強化! IBMのPower11が叶えた高信頼性と高速AI推論 -
第843回
PC
NVIDIAとインテルの協業発表によりGB10のCPUをx86に置き換えた新世代AIチップが登場する? -
第842回
PC
双方向8Tbps伝送の次世代光インターコネクト! AyarLabsのTeraPHYがもたらす革新的光通信の詳細 - この連載の一覧へ











