【Watch記事検索】
最新ニュース
【11月30日】
【11月29日】
【11月28日】
【11月27日】
【11月26日】

NVIDIA技術セッションレポート
GPUに秘められた膨大な計算力を活用。PhysXによる物理処理、CUDAによる超高速演算の可能性

9月9日~11日開催

会場:昭和女子大学


 ゲーム開発者を対象とする国内最大のカンファレンス「CEDEC 2008」の2日目、スポンサートラックにてグラフィックスチップメーカーのNVIDIAによる複数の技術セッションが行なわれた。

 その中で「新しいPhysX」と題されたセッションでは、NVIDIAが本格的に力を入れはじめているGPGPU(General-Purpose computation on GPU: GPUの多目的利用)を主題に、物理エンジン「PhysX」や、NVIDIA仕様のGPGPU処理言語「CUDA」について語られた。基本となる考え方は、GPUの膨大な計算能力を様々な用途に応用することで、これまでCPUで処理していた事柄を劇的に高速化することができる、ということだ。今回のセッションでは、その可能性が実際にエンドユーザーの手に届く範囲に来ていることを、強く実感させるものだった。


■ Geforce 8シリーズ以降のGPUで実行可能になった「PhysX」のパワー

PhysXおよびCUDAについて解説を行なったNVIDIAのキティ・ヴォングサイ氏
PhysX採用タイトルの代表例。Epic Gamesの「Unreal Engine 3.0」で採用されているのはよく知られた話だ
 GPGPUは、シェーダー世代のGPUが一般的になり始めた2002年頃から提唱されてきたアイディアだ。GPUは、通常は3Dグラフィックスを描画するために使われるプロセッサではあるが、その膨大な計算力を他の目的に活用することで、一般的なCPUによる処理とは一線を画す処理性能が実現するとされている。考えてみよう。最近のビデオカードは非常に高品質なグラフィックスを高速に生成することができるが、CPUで同じことをしようとすれば、たちまち紙芝居だ。ビデオカード上のGPUにはそれだけの能力が秘められているのである。これを色々な目的に応用する考え方がGPGPUというわけである。

 しかし従来のGPGPUの応用は、グラフィックスの生成に使う機能を言わば裏技的に利用するというもので、ごく狭い範囲の活用にとどまっていた。というのは、GPUを利用するためのプログラミング機構が、Direct3Dに代表されるグラフィックスAPIとしてしか提供されていなかったため、GPU上で実行させる処理はシェーダーとして記述、出力する必要があったからだ。シェーダー言語では、3D処理以外のプログラムを記述することはなかなか難しい。

 近年のNVIDIAはこの点で応用性を高めることに注力しており、その本格的な第一歩として、2007年に「PhysX」物理エンジンの開発会社であるAGEIAを買収した。「PhysX」は近年勢いのある物理エンジンミドルウェアで、PC、プレイステーション 3、Xbox 360のほか、Wiiなどの最新世代ゲーム機にマルチプラットフォーム対応している。Epic GamesのUnreal Engine 3.0で採用されていることは有名だが、開発中のタイトルを含めると200本以上が利用しているという。

 当のNVIDIAは「PhysX」物理エンジンをGeforceシリーズのGPU上で動作させるドライバの開発を進めてきており、GeForce 8シリーズ以降のGPUを使用しているPCユーザーならば、NVIDIAのホームページ上でダウンロードして実際に試すことができる。現在のところ標準グラフィックスドライバには含まれておらず、ベータドライバが必要となるため、技術的なショウケースの段階だ。

PhysXはGeForce 8以降のGPUで高速動作できるようになった。対応ドライバはNVIDIAホームページで入手できる PhysXの上位キット「APEX」は、物理オブジェクトの扱いをデザイナーレベルにまで落とし込む

 今回のセッションで披露されたデモンストレーションでは、物理演算にGPUを利用することで、CPU処理に比べて何倍ものパフォーマンスが得られる様子が実演された。現在ゲームで使われる物理処理は、比較的計算負荷の低い「剛体物理」と呼ばれるものが一般的だが、NVIDIAがGPU上の「PhysX」で推奨するのは、より計算負荷の高い「軟体物理」と「流体物理」である。水やゲル状の物質が複雑に流動する様子がリアルタイムにレンダリングされる様子は一見の価値がある。

 流体シミュレーションのデモ「NVIDIA PhysX Particle Fluid Demo」ではパーティクル単位の処理を基本としている。通常の剛体物理では、各パーティクル(=粒子)は互いにぶつかれば反作用によって反対方向にはじけて分散していくが、流体を再現する際には、パーティクルが互いにある程度の力で引きつけ合うようにし、全体がひとかたまりの物質に見えるようレンダリングする。非常にリアリスティックな流水の様子が再現されていた。

 この処理には数千、数万のパーティクル同士相互作用を常時計算する必要があるため、膨大な計算量が必要となる。もし、GPU処理を切ってCPU処理に切り替えれば、実行速度は10分の1以下に低下して紙芝居状態だ。つまり、それだけGPUによる計算力が優れているということになる。

 もうひとつのデモンストレーション「The Great Kulu」では、軟体として表現されたクリーチャーが登場する。吹き付けられた風の影響により表皮がたわんだり、歩く毎にボディ全体がぐにゃぐにゃ脈動する。胴体より狭い通路を、体全体をゆがませながら無理矢理押し通ってくる様は、生理的に気持ち悪いことこの上ない。この表現は、モデルの内部に大量の制御点を埋め込み、流体に近いシミュレーションを行なってレンダリング形状に反映させることで実現しているようだ。

 NVIDIAではこのような軟体オブジェクトを作成するためのSDKおよびツールキット「APEX」を準備している。このツールキットを使用すれば、デザイナーが作成した3Dモデルに軟体シミュレーションのための内部制御点を生成し、PhysX上でぐにゃぐにゃと動かせるようになる。「APEX」のリリース時期は今年末になるとのことだが、無料配布になるのか、それとも有料のパッケージとなるのかについては現在検討中だという。

大量のパーティクルによる流体シミュレーション。噴出する液体が徐々に溜まっていき、投下された剛体とも違和感のない相互作用を見せる。この処理のために必要なパーティクルの数は数万個となり、CPU処理では非現実的なフレームレートに低下する
軟体のクリーチャーを見ることができる「The Great Kulu」。生理的な気持ち悪さを感じるほどのリアル感だ。狭い通路を無理矢理体をねじこんで通過してくる演出は必見。デモプログラムはNVIDIAホームページ上で公開されているので、Geforce 8以上をお持ちの方は試してみてほしい
PhysXの布シミュレーションを活用するゲーム「Nurien」。衣服は物理シミュレーションにより、キャラクタ本体にかぶらないよう制御されている。PhysXでは布の破壊シミュレーションもサポートされており、応用範囲はとても広そうだ


■ ゲームPCの演算力は余っている! C言語ライクな処理系「CUDA」によるGPGPU応用の可能性

Geforce 8以降のGPUには多数のストリームプロセッサが搭載されており、大量のデータ処理を同時並列して行なえる
「CUDA」の言語系はC言語に準拠したもので、一般的なアプリケーションプログラマならばすぐに適応できることだろう
 広い分野でCPUよりも高速に問題を処理できると唱われ、実際に「PhysX」による物理処理で効果を発揮しているGPGPU。ではなぜいろいろな処理を高速に処理できるのかについて考えてみよう。基本は単純で、現在のGPUは「極端な数のマルチコアCPU」のような仕組みでもあるからだ。

 よく、グラフィックスカードの売り文句に「シェーダーユニットを○○個搭載!」というものがあるが、Geforce 8以降の「統合シェーダー」と呼ばれる世代のGPUにおいては、それは汎用目的に使えるプロセッサがそれだけの数あるということなのである。例えばGeforce 8800GTXでは「32基相当のシェーダーユニット」が搭載されていと言われるが、これの実体は、浮動小数点演算を実行可能な128基のストリーミングプロセッサなのである。

 この膨大な数のストリーミングプロセッサは、与えられた仕事を同時並列的に処理できる構造となっており、その能力は一般的に画面上に出力されるグラフィックスを描き出すために使われているわけだ。近年のゲームグラフィックスは非常に複雑であり、それをCPUで描けばGPUに比べて何十倍もの時間が掛かってしまう。GPUにはそれだけの暴力的な演算能力があり、実際のところ映像を作る以外の仕事も可能なほどに汎用性が高まっているのだ。だからGPGPUには期待が寄せられているのであり、この世に存在するゲームPCは、ゲームをしていない時に「膨大な演算能力を余らせている」のである。

 「PhysX」による物理演算はそういったGPGPUの可能性の一端を見せてくれる分野だったが、NVIDIAが現在普及を進めている「CUDA」がもうひとつの大トピックだ。GPU版「PhysX」のベースともなっている「CUDA」は、従来シェーダーとして書く必要のあったGPGPUプログラムを、C言語に近い文法で記述可能にするというNVIDIA独自の処理系である。一般プログラミング言語の雄であるC言語に近いスタイルを取ることで、様々なデータやアルゴリズムを可読性の高い形式で扱えるのが特徴だ。

「CUDA」によるGPU処理の概念図。記述された処理内容は複数のストリームプロセッサ毎の「スレッド」として一斉に動作する

「CUDA」はもちろんグラフィックのためのアルゴリズム高速化にも役立つ。ある種のジオメトリ処理は、シェーダーで記述するより遙かに高速になるそうだ
 「CUDA」を応用可能とされる範囲は広く、ゲームプログラミングに限っても、キャラクタAI、コンテンツ生成、ビデオ圧縮・再生など様々だ。現在公表されている範囲では、日本国内においても、動画のエンコーダーを「CUDA」に移植し、CPU処理に比べて4~5倍のポテンシャルを実現したという実験的な例がある。水面下で進められているプロジェクトを含めると、様々なアプリケーションが「CUDA」用の実装を作成中であり、その中には誰でも知っているような有名アプリケーションも含まれるという。

 「CUDA」では、C言語を独自に拡張した文法により、いわゆる「繰り返し」の処理を同時並列的にGPUが扱える形式に置き換える。例えば、Geforce 8800GTXでは16のプロセッサーに各8個、計128個のストリームプロセッサが搭載されているので、128回の繰り返し処理を1ステップで実行できてしまうのだ。また各スレッドは「ブロック」と呼ばれるグループ単位で共有メモリを持てるのだが、このメモリはメインメモリとは比べものにならないほどの速度でアクセスできるため、様々なアルゴリズムがCPU処理に比べて格段に高速化される。

   こういった仕組みにより、複数キャラクタのAI処理を同時に解決してしまったり、画像解析では複数画素を一度に処理してしまうことが可能となる。従来はジオメトリシェーダーで記述していたような処理についても「CUDA」はメリットがあり、ジオメトリ構造をプロシージャルに生成するような処理をさらに高速で処理できる能力があるという。セッションで例示された「マーチングキューブ法」というアルゴリズムでは、ジオメトリシェーダーの5倍速で動作するという。

 このように、プログラマは「CUDA」を通じ、これまではグラフィックスを恐るべきスピードで描き出していた演算力を、一般的な用途に広く応用することができるようになる。セッションでは流体シミュレーションやAIの経路探索アルゴリズム、画像処理分野などの応用可能性が紹介されていたが、おそらく、「大量の情報を一定のアルゴリズムで処理する」という条件に適えば、あらゆる方面でその能力を活用できることだろう。

 こういったパワーを十全に生かしたアプリケーションが多く登場してくるようになれば、一般ユーザーのPCの使い方にも大きなメリットが生まれてくるはずだ。例えば動画の再生、エンコードといった処理は大幅に時間短縮される可能性があるし、一般的なデータの分析、編集、作成といった色々な処理において、従来のCPU処理とは別次元の快適さを提供してくれるはずだ。

 現在「CUDA」は開発者向けの無料パッケージが提供されており、最新バージョンは2.0となっている。今後継続的にバージョンアップしていくとのことで、今秋にはバージョン2.1が提供される予定であるとのことだ。GPGPUの応用性を高める技術としては他にマイクロソフトのDirect3D 11が挙げられるが、そのリリース予定時期は2010年前半であり、まだまだ遠い話である。つまり「CUDA」はそれに先駆けてGPGPUのパワーを広くエンドユーザーに届けてくれるというわけで、今後ますます注目が集まっていきそうだ。

GPUが元々得意とするグラフィックスレンダリング関連の処理から、従来はCPUの仕事とされてきたゲームアルゴリズムまで、GPGPUの応用によってメリットを受ける分野は幅広い。こうした可能性を提供してくれるGPGPU処理系「CUDA」は、これからのコンピューティングにおいて重要な一角を占める技術になっていくはずだ

【コーエー津田 順平氏による「物理エンジンの作り方」セッション】
物理処理がらみのセッションとしては、この日、コーエー技術支援部 シニアエキスパートの津田順平氏による「物理エンジンの作り方」と題する講演も行なわれた。コーエーでは物理処理をゲームデザインのバイタルパートと考えており、ミドルウェアに頼ってブラックボックス化するのは適当ではないと、自社開発の道を選んだという。講演の内容は文字通り「物理エンジンの作り方」で、物理処理に関する数学の解説がほとんどを占め、専門的な内容となっていた。今後コーエーから物理処理を積極的に使った作品が登場するとなるなら非常に楽しみである


□「CEDEC 2008」のホームページ
http://cedec.cesa.or.jp/
□NVIDIAのホームページ
http://www.nvidia.co.jp/

(2008年9月10日)

[Reported by 佐藤カフジ]



Q&A、ゲームの攻略などに関する質問はお受けしておりません
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします

ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp

Copyright (c)2008 Impress Watch Corporation, an Impress Group company. All rights reserved.