イベント
[GDC 2014]ゲーム開発者の取り込みを狙うIntel,統合型グラフィックス機能の性能を引き出す最適化セッションを実施
今回は,IntelがGDC 2014で実施したスポンサーセッションの中から,ここまで取り上げていない「ゲーム開発と関わりの深いグラフィックス関連のセッション」を3つ紹介し,そこでIntelが何を訴えていたのかをレポートしたい。
統合型グラフィックスで性能を引き出す最適化手法
現在,Intel CPUの統合型グラフィックス機能(以下,iGPU)といえば,上はデスクトップPC向けの「Core i7-4700」シリーズから,下はタブレット向けの「Atom Z3000」シリーズ(開発コードネーム Bay Trail)までの幅広い製品で,「Intel HD Graphics」や「Intel Iris Graphics」と呼ばれる,同社独自のアーキテクチャを使用している。
IntelもiGPUの性能向上に取り組んではいるが,現在最上位のiGPUである「Iris Pro Graphics 5200」(以下,Iris Pro 5200)であっても,単体GPUのエントリークラスと比べるのがせいぜいで,少なくとも,ミドルクラス以上のGPUと戦えるほどの性能はない。
氏のセッションはかなりハイレベルで,iGPU向けにゲームグラフィックスを最適化するにあたって役立つ重要なヒントが数多く披露された。とくに,iGPUの構造と性能の特徴が分かりやすく解説されたので,今回はその部分に絞って紹介してみよう。
まず,Taylor氏が性能改善のポイントとして挙げたのは,メモリアクセスの最適化だ。iGPUに限った話ではないが,グラフィックス性能を引き出すには,グラフィックスメモリへのアクセスをいかに削減するか,あるいは効率を上げるかが重要になる。メモリアクセスは性能面のペナルティが極めて大きいからである。
メモリアクセスの効率を上げるために頭に入れておくべきなのが,GPUのメモリ階層構造だ。下に掲載したスライドは,iGPUのメモリ階層を概念的に表したもので,iGPUから見たメインメモリはLast Level Cache(以下,LLC)よりも遠い階層にある。
この図で注目すべきは,GPUのメモリインタフェースと「eDRAM」(embedded DRAM,組み込みDRAM)をつなぐ矢印がある点である。これはIris Pro 5200だけが備えるオンチップの高速DRAMだが,メモリ容量や細かい仕様について,Intelは依然として,学会以外の場では情報を明らかにしていない。
しかし,この図からすると,iGPUのメモリインタフェースとeDRAMを,ダイレクトに結ぶ経路があることになる。Intelは以前にこのeDRAMを,「LLCの外にあるキャッシュのようなもの」と説明していたが,この図のとおりならそうではなく,実際にはLLCと“同じ”階層にあるGPU用のバッファとでもいうべきものだろう。
ところで筆者は,このセッションでeDRAMに関する仕様が明らかになったりしないものかと期待していたのだが,Taylor氏も「Iris Pro Graphics 5200にはeDRAMがある」と述べただけで,仕様の詳細に踏み込んだりはしなかった。eDRAMの動作はアプリケーション側から制御できるものではないので,「(開発者は)あることだけ知ってればいい」というスタンスのようである。
iGPUの内部アーキテクチャに関する解説もあった。iGPUの内部は,「Slice」(スライス)と呼ばれる単位で構成されており,Slice単位で拡張が可能な設計となっている。1基のSliceは,2基の「Sub Slice」と1基の「Common Slice」を束ねたものだ。Sub Sliceは,Intelが「Execution Unit」(EU)と呼ぶ演算器のことで,一方のCommon Sliceは,ラスタライズの機能とSub Sliceに対する命令のディスパッチ(シェーダコードの実行)を行う機能を持つユニットである。
構造面では大違いなので,いささか無理のある喩えになるが,Sub Sliceは,NVIDIAの「Kepler」コアでいう「SMX」(Streaming Multiprocessor eXtreme)で,Sliceは同じく「GPC」(Graphics Processing Cluster)に相当する……といったところだろうか。
上のスライドではSliceの外側に「Fixed Function」というブロックも見える。これもIntel製iGPUが持つ特徴の1つで,ジオメトリ処理専用の固定機能を搭載するものだ。Fixed Functionをうまく利用すると,ジオメトリ処理の性能を上げられると,Taylor氏は解説していた。
さて,次に示したスライドは,シェーダ演算におけるデータの流れと,演算に使うSub Sliceの数,得られる性能の相関を示したものだ。iGPUのアーキテクチャでは,演算に使うSub Sliceが増えれば,性能はほぼリニアに上がっていくので,うまくSub Sliceを並列動作させることが重要となってくる。
シェーダの演算で使用する命令にもスループット――たいていは実行に要するクロック数と同義――の違いがあるため,「その違いを頭に入れてシェーダコードを最適化することで,最大の性能が得られる」と,Taylor氏は主張している。
下に掲載したスライドがそれを示すもので,右上にあるグラフは,「SIMD8」と「SIMD16」での演算性能を比較したものだ。これを見ると,ベクタ長が短いSIMD8のほうが高速というわけではなく,SIMD16よりも性能が落ちてしまうらしい。少なくともIntelのiGPUで,
右下の棒グラフも興味深い。こちらはEUが処理する演算命令による性能の違いを示したものだ。「1」が最大性能なので,命令によっては極端に遅いことが分かる。逆にいえば,iGPUの性能を発揮させるには,こうした命令はなるべく減らすほうがいいということが見えてくるわけだ。
Taylor氏のセッションではほかにも,演算に使うSub Slice数とフィルレートの関係なども検証していた。IntelのiGPUでも快適に動くゲームを作りたいという開発者にとっては,なかなか参考になる情報が多いので,興味のある人は,IntelのGDC特設ページにあるPDFを参照してほしい。
x86 CPU搭載Android端末向けにゲームを移植するときの実践的テクニック
3月22日掲載の記事でも報じたが,IntelはBay Trail-T搭載Android端末でのOpenGL ES 3.1サポートを発表している。IntelはOpenGL ES 3.1を使うことで,Bay Trail-T搭載Android端末にPCゲームを移植しやすくなると述べているのだが,その実例を示したセッションも2つ開かれた。
Aptekar氏によると,まずシェーダプログラムなどは内製だったので,大きな問題もなく移植できたそうだ。努力を要したのは,各種のデータやアセット(※ここでは素材の意)などをシェイプアップして,メモリ消費量やCPU負荷を抑えるほうだったという。
ちなみに,筆者がAptekar氏の話で驚いたのは,SSXで使ったスクリプト言語の「Lua」が,「Andoroidでは重すぎたため,C++に書き直した」(Aptekar氏)というくだりである。PCにおいては,Luaは軽量なスクリプト言語として知られているのだが,Android端末に使うSoCの処理能力ではそれすら重いということだろうか。単に少しでも実行速度を稼ぐため,というだけの理由かもしれないが。
一方,移植に協力したIntelでは,iGPUの活用によるパーティクルの表現を追加したほか,地形のデータをソートして高速化を図るために,性能チューニングツール「Intel Graphics Performance Analyzer」(以下,GPA)を活用したと説明していた。Aptekar氏が「SSXはGPAのいいストレステストになりましたね」と述べて,来場者の笑いを誘う一幕もあったりした。
セッションを担当したのは,Gameloftで「GT Racing 2: The Real Car Experience」(以下,GTR2)の開発に携わったSteve Hughes氏である。
x86 CPU搭載のAndroidタブレットでGTR2を動かすと,「Depth of Field」(被写界深度の表現),「Heat Haze」(陽炎の表現),そして「Lightshafts」(光が雲間から差し込む表現)といった3種類の表現が,ゲームグラフィックスに追加されるという。
下に,Depth of Fieldのありなしでの違いを示したスクリーンショットを掲載しておこう。左がx86でないプロセッサ――要するにARMベースのSoC――を搭載するAndroidタブレットによる描画で,Depth of Fieldがないために,背景までくっきり描かれている。一方,右はx86版CPUが搭載されたAndroidタブレットによる描画で,Depth of Fieldが有効な状態であるため,背景がちょっとわざとらしいくらいにぼやけているのが分かる。
左が非x86 CPU搭載Androidタブレット,右がx86版CPU搭載Androidタブレットによる画面。Depth of Fieldの有無がはっきりと分かる |
Heat HazeやLightshaftsも,概念の説明図やサンプルコードを使って,それぞれの表現をx86 CPUでどう実現したのかや,その表現にどれくらい描画時間を必要とするかといった,実践的な情報がHughes氏により解説された。
個々の内容は専門的すぎるので割愛するが,実際にx86版CPUへ向けた最適化を考えている人には役に立つ情報が豊富に含まれている印象だ。こちらのスライドもIntelのGDC特設ページに掲載されているので,興味のある人は見てほしい。
優れた性能を持つBay Trail-TでAndroid端末の市場に攻め込むために,Intelはゲーム開発者への働きかけを非常に強めている。それが実感されたGDC 2014ではあったが,実のところ,これらセッションはどれも人の入りが今ひとつで,ゲーム開発者側の注目を集めていたとは言い難い。Intelは今後も,ゲーム開発者に対する継続的なアピールを続けていく必要があるようだ。
Intel@GDC 2014(英語)
- 関連タイトル:
Core i7・i5・i3-4000番台(Haswell)
- 関連タイトル:
Atom
- この記事のURL:
キーワード
(C)Intel Corporation