Fine grain Task Manager Cerium のチューニング
Yutaka Kinjyo, Shinji Kono
琉球大学大学院理工学研究科情報工学専攻並列信頼研
研究目的 と 背景
現在 Cell/PS3またはMac OS X上で動作するOpen CL 的なFine Grain Task Manager である Cerium Task Manager を開発中である。
-
ソフトウェアレンダリングエンジンとWord countを例題として、Task Manager の実装時の問題を洗い出している。
- メインメモリ上の Task を各 Core が受け取る際や、その終了を通知する際に待ち時間が生じる。
本研究ではその待ち時間を削減するTask array、メモリのアクセス方法を提案し実装した。その効果について報告する
Cellとは
Cell(Cell Broadband Engine)とはソニー、東芝、IBM社の3社が共同開発したマイクロプロセッサ
Cellは1基の制御系のプロセッサコア
PPEと、8基の演算系プロセッサコア
SPE
で構成される(Ceriumで扱えるSPEの数は6基)。
Ceriumとは
Ceriumとは、当研究室で開発したPS3/Cell、Mac OS X、Linux 上で動作するゲームフレームワーク。
以下の3つの要素から構成されている。
- TaskManager
- レンダリングエンジン
- SceneGraph
Ceriumとは
Ceriumとは、当研究室で開発したPS3/Cell、Mac OS X、Linux 上で動作するゲームフレームワーク。
以下の3つの要素から構成されている。
- TaskManager
- レンダリングエンジン
- SceneGraph
TaskManager
- TaskManagerは、Taskと呼ばれる、分割された各プログラムを管理する
- Task同士の依存関係を考慮
- 実行可能になったTaskをSPEに渡す
CeriumにおけるTask
TaskはTaskManagerを使って生成する。Taskを生成する際に以下のような要素が
設定可能である。
- Input data
- Output data
- Paramater
- CPU type
- Dependency
CeriumにおけるTask
Dependency
- Dependencyは他のTaskとの依存関係を示す。
- 例えばTaskAがTaskBをwaitする場合、TaskBが実行完了すると、TaskAが実行可能になる。
- Taskの実行完了は、SPEのMail送信ボックスにデータが書き込まれ通知される。
CeriumにおけるTask
Mail機能
- Cellの機能の1つ
- 32bitのメッセージをPPE,SPE間でやりとりできる
- 送信ボックス、受信ボックスがSPEに設けられている。
- それぞれMailボックスはキューになっている
- 受信ボックスのサイズは4
- 送信ボックスのサイズは1
CeriumにおけるTask
Mail機能
- 送信ボックスのデータはPPEから、受信ボックスのデータはSPEから呼び出される
- 書き込みはその逆
Taskの送信
- Taskは1つ毎にSPEには送らない
- いくつかのTaskをまとめTaskListとして送る
- TaskListをすべて完了すると、SPEからPPEへのMailが書き込まれる
- PPE側がMailをチェックし次のTaskListをMailで通知する
SPEの待ち時間
SPEはデータの転送とMailの読み込み、書き込みの際に待ち時間が生じることがある。
-
送信Mailボックスに書き込もうとしたとき、
ボックスがいっぱいの場合は、PPEから呼び出されるまでSPEは待ち続ける
-
TaskManagerでは、受信ボックスがいっぱいになることはない。
- PPEでMailのチェック、返信があるまで、SPEは止まってしまう
- SPEの待ち時間が増えると、処理速度の低下につながる
Sort
TaskManagerを用いたsortの例題を紹介する
CellのSPE6基、1基、Mac OS X と比較する。
- time : 実行時間
- dma wait : dma転送の待ち時間の割合
- mail wait : mailの待ち時間の割合
- sortする対象は30,000個のランダムな値
- Quick sortを行う
Sort
|
Mac OS X |
Cell(SPE6) |
Cell(SPE1) |
time |
24.9s |
11.0s |
65.8s |
dma wait |
なし |
0.41% |
0.39% |
mail wait |
なし |
0.82% |
0.17% |
Sortの速度比較
- SPEの稼働率は約98%。
- Sortの場合、SPEの待ち時間がほとんど無く高速に動作する
- WordCount,レンダリングエンジンの場合は待ち時間がはいる
WordCountのTask内容
- WordCountTask(TaskArray化)
- Input data であたえられたデータをwcし、output data に書き出す
- PrintTask
- 各SPEから書き出されたwcデータを集計し、出力する
- dependency に WordCountTaskを設定
WordCount
- wcするfileをマッピングし、Taskに割り振る
- WordCountTaskの終了をまって、PrintTaskが実行される
WordCount
ファイルの大きさは166MB
|
WordCount |
time |
2.102s |
dma wait |
12% |
mail wait |
7% |
WordCountの速度
- Sort に比べて、dima wait, mail wait の割合が大きい
TaskArray
SPEのMailの待ち時間を解消するためにTaskArrayを提案、実装した
- TaskArrayは複数のTaskを1つにまとめることができる
- Task毎のMail通知がTaskArray毎のMail通知になる
- 依存関係のグルーピングができる
TaskArray
期待される効果
- Mailの数が減り、SPEのMail待ちのタイミングが減る
- Mail待ちが減るので、SPEの稼働率が向上する
WordCount
|
Task |
TaskArray |
time |
2.102s |
2.083s |
dma wait |
12% |
17(+5)% |
mail wait |
7% |
2(-5)% |
WordCountの比較
- Mail wait の割合が減少、代わりに dma wait が増加
- TaskArrayは、最初にdma転送でTaskArrayの中のTaskを取得する
WordCount
WordCount の dma wait
- 大きなファイルをメモリにマッピングするためスワップが起きる
- dmaでメモリにアクセスするときに、時間がかかり待ち時間が生じるていると考えられる
WordCount
メモリアクセスの局所性を維持するために
- 一度にすべてのTaskを生成せず、一定のTaskを生成、実行を繰り返す
- 同期する地点を設け、特定のSPEがはしり過ぎないようにする
|
一度に生成 |
分割して生成 |
time |
2.083s |
2.481s |
dma wait |
17% |
9(-8)% |
mail wait |
2% |
22(+20)% |
WordCountの比較
WordCount
WordCount の Mail wait
- 次のTaskは、今のTaskが終わってから生成するので、その間の待ちがある
- PPE側で先に次のTaskを用意しておくことで、改善できるはず
- また、Task同様マッピング自体も複数回にわけて行うことで、局所性が維持できる
TaskArray
レンダリングエンジンのTaskの一部をTaskArray化した
レンダリングエンジンのTask内容
- CreatePolygonTask
- CreateSpanTask
- DrawSpanTask(TaskArray化)
レンダリングエンジン
DrawSpanTask : Taskの数が多いDrawSpanTaskをTaskArray化した。地球と月を表示する
例題を対象に計測した。
計測条件
- FPS : 一秒間に表示するFrame数
- TaskArrayの適応の有無を比較
- TaskArrayのサイズは8
レンダリングエンジン
|
Task |
TaskArray |
FPS |
3.94 |
4.32 |
dma wait |
0.06% |
0.07% |
mail wait |
55% |
42%(-13%) |
レンダリングエンジンの比較
- mail wait 割合が減少し、それに伴ってFPSも増加
- レンダリングエンジンの場合、PPE側で実行するTaskがある
- PPEのMailチェックがおくれることがあるので、TaskArrayの効果がある
- Mail wait の細かい内訳はまだわかっていない
レンダリングエンジン
今後のMail待ち時間削減
- PPE側のTaskをSPEに任せ、PPEの負担をへらす
- 別スレッドでMailを監視する
- 他のTaskもTaskArray化する
- Mail wait の細かい内訳を調べる
まとめ
- 複数のTaskをまとめるTaskArrayを提案、実装した。
- PPE側が忙しい場合、Mail待ち時間の削減にTaskArrayの効果がみられる
- 大量のメモリを消費する処理の場合
- マッピングの方法、Taskのスケジューリングを工夫して局所性を維持することでdma転送時間を削減できる