ゲームフレームワーク Cerium TaskManager の改良

金城 裕, 河野 真治,
多賀野 海人, 小林 佑亮

琉球大学大学院理工学研究科情報工学専攻並列信頼研

概要

ゲームフレームワーク Cerium TaskManager を開発しました。
琉球大学の学生実験で使用している。

Cell

Cell Broadband Engine

Cell

Cell Broadband Engine
PPEは直接メインメモリアクセスできるが、SPEはそれぞれのLSにしかアクセスできない
DMA転送を用いてメインメモリからのデータを明示的に取得する

Cell

Cell のプログラミングスタイル
Ceriumでは関数をTaskとして定義。Taskを各SPEへ割り当てる。
一つのTaskにはinput,output,param,等のデータを持たせる

Ceriumの構成

Ceriumの構成

Ceriumの構成

TaskManager

TaskManager

TaskMangerを使った例題

CeriumのTaskManager を使ったSortの例題
10万個のランダムな値をクイックソートでソートする
ソートする関数をTaskにして各SPEで実行

Sortの例題
PPEのみ SPE 1つ SPE 6つ SPE稼働率
QuickSort 5.60s 6.22s 1.07s 97%

アムダール則

プログラムの全体に対する並列化した部分の割合が低いと、マルチコアの性能がでない

RenderingEngine

RenderingEngineの例題
地球と月の例題
FPS mail待ちに割合 SPE稼働率
universe 17FPS 72.6% 25.4%

RenderingEngine

SortとRenderingEngineの違い

RenderingEngine

RenderingEngienの場合の問題点

バリア同期

RenderingEngineのTaskは、3つそれぞれバリア同期をしている。

バリア同期

バリア同期には二つの待ちがある

バリア同期

この待ちを解消するためにTaskのパイプライン化を行った。

RenderingEngineの構成

RenderingEngineの構成
RenderingEngineは3種類のTaskから構成されている

パイプライン化

地球と月を表示する例題(universe)を使用。

パイプライン化の比較

パイプライン化の効果(universe)
FPS mail待ちの割合 稼働率
Pipelineあり 19.6FPS 68.8% 29%
Pipelineなし 17FPS 72.6% 25.4%

パイプライン化の比較

地球と月を表示する例題(universe)を使用。
パイプライン化の効果(universe)
FPS mail待ちの割合 稼働率
Pipelineあり 19.6FPS 68.8% 29%
Pipelineなし 17FPS 72.6% 25.4%

RenderingEngine

RenderingEngineでは、描画するためのテクスチャをSPEに読み込む必要がある
テクスチャをSPE内でのキャッシュした。

SPEのキャッシュ効果

SPEのキャッシュの効果
キャッシュなし キャッシュあり 性能
ball_bound 4FPS 30FPS 7.5倍
universe 6FPS 17FPS 2.8倍
panel 0.2FPS 2.6FPS 13倍

SPEのキャッシュ効果

SPEのキャッシュの効果
キャッシュなし キャッシュあり 性能差
ball_bound 28FPS 30FPS +2FPS
universe 22.9FPS 17FPS -5.9FPS
panel 5.0FPS 2.6FPS -2.4FPS
ball_bound は扱うテクスチャが少なく、小さい

Mailbox機能

CellのMailbox機能

Mailboxの種類

Mailbox機能

Mailbox機能

SPE側からTaskが一つ実行完了する度に、実行完了のMailをOutboxに書きこむ

そこで、Outboxに既に読み込まれていないMailがあった場合に、いったん、別のキューに追加する。(MailQueue)

MailQueue

MailQueueの効果

MailQueueの効果
改良前 改良後 性能
universe 16FPS 18.5FPS 12%向上
地球と月を表示する例題を使って計測した。

TaskArray

Task毎のMailは、Task同士の依存関係を解決するために用いている。
Mailの数を減らせるので、Mailのための処理が減る。その分処理速度が上がる

TaskArray

TaskArrayの効果(universe)
改良前 改良後 性能
universe 16FPS 18.5FPS 12%向上

MailQueueとTaskArray

MailQueueとTaskArrayの効果(universe)
TaskArray MailQueue FPS 性能
あり あり 20FPS 22%向上
あり なし 18.5FPS 12%向上
なし あり 18.5FPS 12%向上
なし なし 16.4FPS 0%向上

OpenGLとの比較

OpenGL(Open Graphics Library)とは、Silicon Graphics社が開発した、3Dグラフィックス処理の ためのプログラミングインターフェース。Taskに分割され、SPEを使用したCeriumと、PPEのみで動作 するOpenGLとで、処理速度の比較をした。

比較する例題には学生が実験中に作成したSuperDandyを用いた。

OpenGLとの比較

OpenGL Cerium 性能差
dandy 17.5FPS 49.5FPS 2.9倍
コア一つを使用するOpenGLに比べ、Cerium では2.9倍の性能向上が見られた。 SPEを活用、待ち時間の短縮を行い、性能向上がみれた。

まとめ

本研究ではゲームフレームワーク Cerium TaskManager の改良を行った。 特にCell上において、SPEの稼働率に注意する必要があった。 SPE、PPE間のデータのやり取りにMail通知を用いている。SPEはMailの書き込みの際に待ちが発生する
で待ち時間の削減ができる

まとめ

RenderingEngineにおいて、Taskがバリア同期をしている。バリア同期にも待ちが発生する
SPEの待ち時間を解消できる。頻繁に扱うデータはSPE内でキャッシュするのがよい

依存関係の話

稼働率を維持するためにパイプライン化がある

Codeload

Taskを事前に全部ロードしてる

Segment

データはすべてSegmentという形にして、SPEに必要な分を予測、読み込みするのがよい。
テクスチャのように頻繁に扱うデータはキャッシュする

END

/*end*/
[any material that should appear in print but not on the slide]