Fine grain Task Manager Cerium のチューニング
金城裕
琉球大学大学院理工学研究科情報工学専攻並列信頼研
研究目的 と 背景
現在 Cell/PS3またはMac OS X上で動作するOpen CL 的なFine Grain Task Manager である Cerium Task Manager を開発中である。
-
ソフトウェアレンダリングエンジンとWord countを例題として、Task Manager の実装時の問題を洗い出している。
- メインメモリ上の Task を各 Core が受け取る際や、その終了を通知する際に待ち時間が生じる。
本研究ではその待ち時間を削減するTask arrayを提案し実装した。その効果について報告する
発表の流れ
- Cellとは
- Ceriumとは
- CeriumにおけるTask
- TaskArray
- WordCountのTaskArray化
- レンダリングエンジンのTaskArray化
- 結果
- まとめ
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の待ち時間が増えると、処理速度の低下につながる
TaskArray
SPEのMailの待ち時間を解消するためにTaskArrayを提案、実装した
- TaskArrayは複数のTaskを1つにまとめることができる
- Task毎のMail通知がTaskArray毎のMail通知になる
- 依存関係のグルーピングができる
TaskArray
期待される効果
- Mailの数が減り、SPEのMail待ちのタイミングが減る
- Mail待ちが減るので、SPEの稼働率が向上する
- また、PPE側のMailチェックの時間も減る
- 結果、処理速度が向上する
TaskArray
レンダリングエンジンのTaskと、WordCountのTaskの一部をTaskArray化した。
その結果を報告する
レンダリングエンジンのTask内容
- CreatePolygonTask
- CreateSpanTask
- DrawSpanTask(TaskArray化)
レンダリングエンジン
DrawSpanTask : Taskの数が多いDrawSpanTaskをTaskArray化した。地球と月を表示する
例題を対象に計測した。
計測条件
- FPS : 一秒間に表示するFrame数
- dma wait : dma転送の待ち時間の割合
- mail wait : mailの待ち時間の割合
- 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チェックがおくれることがあるので、Mailを減らすことは効果がある
レンダリングエンジン
今後のMail待ち時間削減の改善点
- PPE側のTaskをSPEに任せ、PPEの負担をへらす
- 別スレッドでMailを監視する
- 他のTaskもTaskArray化する
WordCountのTask内容
- WordCountTask(TaskArray化)
- Input data であたえられたデータをwcし、output data に書き出す
- PrintTask
- 各SPEから書き出されたwcデータを集計し、出力する
- dependency に WordCountTaskを設定
WordCount
- wcするfileをマッピングし、Taskに割り振る
- WordCountTaskの終了をまって、PrintTaskが実行される
WordCount
計測条件
- TaskArrayのサイズは64
- Word count対象は166Mのテキスト
- TaskArrayの適応の有無を比較
WordCount
time : 実行時間
|
Task |
TaskArray |
time |
2.102s |
2.083s |
dma wait |
12% |
17(+5)% |
mail wait |
7% |
2(-5)% |
WordCountの比較
Mail wait の割合が減少、代わりに dma wait が増加
WordCount
- PPEで実行するTaskがないため、Mailをチェックしやすい
- dma wait が
WordCount
改善策
- 同じ領域を切り替えて、何度かに分けてマッピングする
- スワップを減らし、アクセス時間を短縮できる
- dma wait の割合が減る
まとめ
- 複数のTaskをまとめるTaskArrayを提案、実装した。
- PPE側が忙しく、mailチェックが遅れる場合に効果がある
- PPE側にTaskがない場合は、mailチェックは間に合う
- WordCountはdma転送がネックになっている
- マッピングの方法、Taskのスケジューリングを工夫して、dma転送時間を削減できる