今後のGPGPU動向は?

NVIDIAがCUDAをGeForceに展開し、AMDはATI StreamをRadeonに展開することとなり、一般ユーザー向けGPGPUソリューションにおいてもNVIDIA対ATI(AMD)の図式が明確化した格好だ。

ただ、厄介なのは、それぞれが独自の規格である、ということだ。NVIDIAはCUDAをロイヤルフリーな規格だとし、AMDはATI Streamはオープンプラットフォームだとし、開けたフォーマットであることをアピールするが、言い方が違うだけで、結局のところ、今までのような「踏み絵」状態であることには変わらない。

ただ、GPGPUを標準化して欲しいという声もあり、その動きがないわけではない。

1つはOpenGLなどを管轄するKHRONOSグループが2008年夏に提唱したばかりの「OpenCL」(Open Computing Language)だ。こちらもC言語ベースのストリーミング拡張型言語を標準プログラミング言語とし、ハードウェアを抽象化するレイヤーを入れた構造を取るので、システム的にはATI Streamに近いものになっている。

最大の特徴は3DグラフィックスAPIのOpenGLとの連携が図れる形で設計されるところ。OpenGLでレンダリングしたオブジェクトを透過的にOpenCLで参照したり、あるいはOpenCLで生成したシミュレーション結果をOpenGL側でレンダリング用のテクスチャ等に用いることが可能になる。また、OpenCLはGPUのみへの対応ではなく、CPUにも対応するため、例えばマルチコアCPUとGPUとで異なる処理をさせたり、あるいは両者を完全同列の演算リソースとして活用したりすることが可能になっている。

OpenCLは異種混合コンピューティングを実現するためにアップルが提唱した

OpenCLのブロックダイアグラム。演算リソースはプライベートなメモリ領域を持ち、基本的にはここで処理をこなす

OpenCLプロジェクトにはAMDとNVIDIAの双方が参加しているので、両者がOpenCLに対応してくることは間違いない。こちらは今年提唱されたばかりの規格策定段階なので、まだ、一般ユーザー向けの提供時期は未定だ。

OpenCLプロジェクト参加企業

そして、もう一つのメーカー間の垣根を越えたGPGPUソリューションとして注目されているのが、マイクロソフトの「DirectX Compute Shader」だ。

DirectX Compute Shader。和名はDirectX演算シェーダになる見込み

DirectX Compute ShaderはDirectXの3DグラフィックスAPIのDirect3D側に統合され、形式上はピクセルシェーダの後段に配される形になる。OpenCLとOpenGLの関係とよく似ており、Direct3DのグラフィックスパイプラインとDirectX Compute Shaderは互いのリソースを参照可能ということになっている。

DirectX Compute Shaderは当初、DirectX 11専用フィーチャーであるとみられていたが、2008年のWinHEC 2008で、マイクロソフトが「DirectX 10のマイナーチェンジ版において、DirectX Compute Shaderを提供する」とアナウンスしたことで、業界は大きく動き始めている。

マイクロソフトはWinHEC 2008にて、DirectX Compute ShaderがDirectX 10クラスGPUでも利用できるとアナウンスした(最下段)

AMDとNVIDIAは間違いなく、これにも対応してくるため、Windowsプラットフォームにおける一般ユーザー向けのGPGPUソリューションは、DirectX Compute Shaderが登場した時点で、こちらにメインストリームが移る可能性がある。

短期的には「CUDA対ATI Stream」の構図が見えるかもしれないが、長期的にはOpenCL、DirectX Compute Shaderが登場した時点でGeForceでもRadeonでもGPU種別に関係なくGPGPUの恩恵が得られる未来が見えている。

逆に、ATIやNVIDIAのようなGPUメーカーとしては、OpenCL、DirectX Compute Shader登場以降は、それぞれの独自のGPGPU技術をどう訴求して生き抜いていくかが重要な課題となるかもしれない。

(トライゼット西川善司)