XNAフレームワーク+CUDAで「ゲームの物理」が変わるか
3月6日、東京大学で「NVIDIA Japan CUDAカンファレンス2008」が開催されました。CUDAとは、NVIDIAが提供する開発環境で、GPUを使用して高速に並列処理をおこなえるのが特徴です。
PCゲーム
オンラインゲーム

カンファレンスでは、プロメテック・ソフトウェアの原田隆宏氏と政家一誠氏によるセッションもあり、CUDAを使用した計算のコツや、同社のパーティクルベースの流体シミュレーションのデモンストレーションなどがおこなわれました。プロメテック・ソフトウェアは、もともとはシミュレーション技術をベースとした大学発ベンチャーですが、『鉄拳6(バンダイナムコゲームス)』でキャラクタの動きにあわせた水面の動きについて共同開発した企業としてゲーム業界でも知られています。
セッションでは、GPUを使用した並列計算での注意事項として、並列性を確保すること(ベクトルの和の計算は適しているが、内積のように一か所にデータを集めるような計算は並列性を損なう)、マルチGPUではGPU間のデータ転送をできるだけ減らす(現状ではいったんメインメモリに転送する必要がある)、(非対称マルチプロセッシング的な)タスクのデータを配布・集約するようなプログラミングモデルを避ける(ボトルネックとなりがちなため)といった点を指摘。プロメテック・ソフトウェアでは流体シミュレーションにグリッドベースではなくパーティクルベースの方式を採用していることから、各パーティクルが分割領域の境界を越えて影響をあたえあう部分のオーバーヘッドを回避するため、「ゴースト領域」(計算に必要なパーティクル情報を参照用に保持する隣接領域)をもたせていることなどを紹介していました。
CUDAのメリットとして、C言語で書けることからシェーダー言語ベースの記述よりも書きやすくなったことをあげつつ、並列性を損なうような書き方もしやすくなったとも指摘。
また、学術的なシミュレーションにとどまらず、CUDAをC++さらにC++/CLIでラッピングすることでXNAのゲームフレームワークにとりこむことも可能とのこと。
ゲームにおける物理シミュレーションはあたりまえになりつつあるようですが、GPUを手近なベクトルプロセッサとして使用しやすくする“CUDA”はいろいろな可能性がありそうです。
《伊藤雅俊》
この記事の写真
/