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を使ってアプリケーションの移植や性能の評価を始めることになる。
この連載の記事
-
第796回
PC
Metaが自社開発したAI推論用アクセラレーターMTIA v2 Hot Chips 2024で注目を浴びたオモシロCPU -
第795回
デジタル
AI性能を引き上げるInstinct MI325XとPensando Salina 400/Pollara 400がサーバーにインパクトをもたらす AMD CPUロードマップ -
第794回
デジタル
第5世代EPYCはMRDIMMをサポートしている? AMD CPUロードマップ -
第793回
PC
5nmの限界に早くもたどり着いてしまったWSE-3 Hot Chips 2024で注目を浴びたオモシロCPU -
第792回
PC
大型言語モデルに全振りしたSambaNovaのAIプロセッサーSC40L Hot Chips 2024で注目を浴びたオモシロCPU -
第791回
PC
妙に性能のバランスが悪いマイクロソフトのAI特化型チップMaia 100 Hot Chips 2024で注目を浴びたオモシロCPU -
第790回
PC
AI推論用アクセラレーターを搭載するIBMのTelum II Hot Chips 2024で注目を浴びたオモシロCPU -
第789回
PC
切り捨てられた部門が再始動して作り上げたAmpereOne Hot Chips 2024で注目を浴びたオモシロCPU -
第788回
PC
Meteor Lakeを凌駕する性能のQualcomm「Oryon」 Hot Chips 2024で注目を浴びたオモシロCPU -
第787回
PC
いまだに解決しないRaptor Lake故障問題の現状 インテル CPUロードマップ -
第786回
PC
Xeon 6は倍速通信できるMRDIMMとCXL 2.0をサポート、Gaudi 3は価格が判明 インテル CPUロードマップ - この連載の一覧へ