イベント
[CEDEC 2010]「ハードがメニーコア化するなら,それに合わせるべき」。重鎮・今給黎 隆氏が説く「メニーコア対応ゲームエンジン」のススメ
題は,「メニーコア対応ゲームエンジン」。似たような題名のセッションは,初日にもインテルの菅原清文氏が行っているが,あちらがCPUや開発ツールベンダーからの提案とすれば,こちらはゲーム開発現場からの提案ということになるだろうか。
ゲームプログラマーとして名高い氏がマルチコアをどう活かそうとしているのか,セッションの内容をお届けしたい。
「ハードウェアはメニーコア化する。
その流れに(エンジンを)合わせたほうがいい」
さて,今給黎氏は「日本のゲーム開発は海外に後れを取っている。『CEDECよりGDCのほうが進んでいるよね』などと言われるようになって久しい」と切り出した。その状況を踏まえたうえで,「欧米にどうやって勝つかを考えていくのが正しい方向だ」(同氏)。
では,そのために何をすべきなのか? 氏は「(ゲームの)新しい流れを作っていかなければならない。どうせならハードウェアが進む方向に流れを合わせたほうがいい。そこでマルチコアに対して新しい流れを作り出そう,というのが今回の講演のテーマだ」と説明する。
インテル菅原氏のセッションでも説明された内容だ。簡単にいえば,昔のようにプロセッサの動作クロックを向上させることが難しくなったため,代わりにコアの数を増やすことで性能を引き上げる方向へ進んでいる,というわけである。
「18〜24か月ごとにトランジスタの集積度が2倍になる」という半導体業界の法則,通称「ムーアの法則」が今後も生き続ける場合,「10年後には64(基)の汎用コアと,512(基)の特殊コアといった構成になる可能性がある」と,今給黎氏は半ば冗談としながらも推測を述べる。そんなメニーコアプロセッサを使いこなすゲームというものがどんなものになるのか,大いに興味を引かれるところではあるのだが,そもそもの話として,ゲームをメニーコアシステムで有効に動作させる方法が見つからなければ,その時代を迎えたときにどうしようもない。
インテルの菅原氏は,メニーコアへの対応をコンパイラが支援するという例を紹介していた(関連記事)。菅原氏のセッションに参加していたという今給黎氏も,「コンパイラが自動的にやってくれるのが理想」と述べていたが,しかし「新しいゲーム専用機のローンチタイトルを作るときには,だいたいコンパイラがバグっていたりする(笑)」。開発環境が整っていないのが常態化しているため,自力で実装せざるを得ないケースが多いという現実があるわけだ。
そこで今給黎氏は,マルチコアシステムに向けたゲームエンジン側の実装について,いくつかのテクニックを紹介する。プログラマーでないと理解できない部分もあるため,本稿では簡単にかいつまむに留めるが,ある処理をより細かな処理に分ける古典的なプログラム作法――これを「分割統治法」というのだが――を使って処理を分割しスレッドに割り当てるとき,複数のスレッドを管理する技法や,スレッドに分けた処理がすべて完了したことを判定する技法といった,実戦的なものが中心に解説されていた。
面白いのは,処理をどこまで細かくするかという,「粒度」に関する今給黎氏の考えだ。インテル菅原氏は初日のセッションで「自然な粒度に分けないとオーバーヘッドが大きくなる」と説明していたのだが,今給黎氏はこれに異を唱え,「コア数によって適切な粒度は変わってくる。『自然な粒度』なんてものはない」と断言。「将来的には非常に細かい単位で分けていくことになるのではないか」という見通しを示していた。
粒度を細かくすると処理のオーバーヘッドが出やすくなり,オーバーヘッドが顕在化してくると,その対策が難しくなると予想されるため,どの程度の粒度が望ましいかはなかなか難しいところだ。例えば,粒度とバス負荷は関連することが多く,粒度を細かくし過ぎると,バス側の負担が増え,総合性能が低下する可能性が高くなる。
下に示したスライドは,二次元格子状のバスでプロセッサ間が接続されているような例。このとき,細分化された処理が相互に情報のやり取りを行うなら,情報のやり取りを行うプロセッサ同士が最短距離で接続されるように処理を割り当てていけば効率が上がるはずだ。
今給黎氏はツリーを二次元格子にフィットさせるケースで説明していたが,粒度を細かくすると効率的なフィッティングは難しくなり,バスに大きな負担を生じさせる可能性が高まってくるだろう。
話を戻すと,粒度はバスの事情なども考慮して大きさを決めていく必要があるわけで,確かに「自然な粒度」を決定するのはなかなか難しい。現実的には,こうした部分をミドルウェアなりコンパイラなりに任せてしまうのが効率的だったりするのだが,今給黎氏が指摘するように,新世代ゲーム機の立ち上げ時にはコンパイラやミドルウェアに頼ることができない場合も多い。それゆえ,プログラマーが頭を悩ますことになるのだろう。
「AIで制御される3300万体のキャラクター」
が登場するメニーコアゲームなら欧米に勝てる!?
では,「欧米に勝てる,メニーコアに合ったゲーム」とは何だろう?
今給黎氏はその可能性の1つとして,表情認識をゲームに応用するアイデアを提示していた。顔認識なら現在も行われている例はあるが,表情まで認識できるようになるとゲームに新しい可能性をもたらすかもしれない。
さらに「多くのキャラクターを別々のAIで動かすゲームはメニーコア向きだろう」と今給黎氏は指摘する。多くのキャラクターや建物を使って,巨大都市を構築するといったこともメニーコアで可能になるかもしれないというのだ。
多くのキャラクターが画面を埋めるようなゲームならもうあるんじゃ……と思った人もいるだろうが,今給黎氏が考える「多数」という概念は半端ではない。その数3300万だ。1キャラクターあたり32bytes分のパラメータ(ステータス)を持つとすると,トータルで1GBのデータ量になるという計算である。「非常にマッシブなデータになる。ここまでやればゲームが変わってくるのではないか」(同氏)。
32bytesのステータスを各キャラクタが持つとして,それを3300万体作ると1GBのデータ量になる。ここまでやればゲームが変わってくるかも? |
ただ出すだけでは面白くないので,キャラクターを階層化する。すると新たな展開が見てくるはずと今給黎氏は説く |
3300万体ものキャラクターが画面に出てくると,1体1体は塵芥(ちりあくた)と変わらなくなる。「そこで,描画には流体シミュレーションや統計力学といった物理シミュレーションのテクニックを応用してみては」と今給黎氏は提案していたが,そこまで来ると,AIと物理シミュレーションとの関わりがちょっとイメージしづらい。氏はデモを準備していたが間に合わなかったそうで,その点は残念だった。
説明を一通り聞いただけだと,どんな可能性があるのかイメージしづらいが,CPUの概念が変わるだろう将来,ゲームの常識を一変させるようなものが登場する可能性は確かにある。「新たなハードウェアが新たなゲーム体験をもたらす」ことが,今後も続いていくことを期待したい。
- この記事のURL: