# HG changeset patch
# User Yutaka_Kinjyo
# Date 1284225371 -32400
# Node ID ca231fdd013c93f58def38ab3ecbdbb418f23f3d
# Parent 87b8bb4d104cc210f48c27e0ca64d091f59cd8f6
fix
diff -r 87b8bb4d104c -r ca231fdd013c presen/presen.html
--- a/presen/presen.html Fri Sep 10 10:00:23 2010 +0900
+++ b/presen/presen.html Sun Sep 12 02:16:11 2010 +0900
@@ -86,8 +86,7 @@
Fine grain Task Manager Cerium のチューニング
-108574D 金城裕
-指導教官:河野真治
+金城裕
琉球大学大学院理工学研究科情報工学専攻並列信頼研
@@ -95,23 +94,6 @@
研究目的 と 背景
-CPUのクロック周波数の増加は、発熱や消費電力の増大により難しくなっている
-
-
--
-クロック周波数を上げる代わりに、CPUコア数を増やす傾向になった。
-
-
-- マルチコアにあったプログラミングが必要になる
-
-
-
そこで、プログラミングを支援するフレームワークが必要になってくる
-
-
-
-
-
研究目的 と 背景
-
現在 Cell/PS3またはMac OS X上で動作するOpen CL 的なFine Grain Task Manager である Cerium Task Manager を開発中である。
-
-
CeriumにおけるTask
-
Input data
-
-- Input data にはTaskの処理対象データのアドレスとサイズを指定する。
-- SPE側でそのアドレスをもとにDMA転送を用いて実際のデータをメインメモリから取得する。
-
+
+
+
+
+
+
+
-
-
- |
-
-
-
+
+
+
+
+
-
-
CeriumにおけるTask
-
Output data
-
-- Onput data にはTaskが処理したデータの書き出し先アドレスとサイズを指定する。
-- SPE側でそのアドレスをもとにDMA転送を用いて実際のデータをメインメモリに書き出す。
-
+
-
-
- |
-
-
-
+
+
+
+
+
+
+
-
-
CeriumにおけるTask
-
Paramater
-
-- Input data とは別にデータを与えたい場合に使用する。
-- 32bitの値を指定する。
-
+
+
+
+
+
-
CPU type
-
-- TaskがどのCoreで実行されるかを指定する。
-- PPEもしくは、6基のSPEのいづれかを選択できる。
-
-
-
+
CeriumにおけるTask
Dependency
- Dependencyは他のTaskとの依存関係を示す。
-- 例えばTaskAがTaskBの実行完了を待つ例を紹介する。
+- 例えばTaskAがTaskBをwaitする場合、TaskBが実行完了すると、TaskAが実行可能になる。
+- Taskの実行完了は、SPEのMail送信ボックスにデータが書き込まれ通知される。
@@ -290,62 +259,29 @@
CeriumにおけるTask
-
Dependency
+
Mail機能
-- はじめTaskBは待つTaskがないので、すぐにActiveQueueに入る。
-- TaskAはTaskBを待つのでWaitQueueに入る。
+- Cellの機能の1つ
+- 32bitのメッセージをPPE,SPE間でやりとりできる
+- 送信ボックス、受信ボックスがSPEに設けられている。
+- それぞれMailボックスはキューになっている
+- 受信ボックスのサイズは4
+- 送信ボックスのサイズは1
-
-
- |
-
-
CeriumにおけるTask
-
Dependency
+
Mail機能
-- ActiveQueueにあるTaskBはSPEに送られ実行される。
-- TaskAはWaitQueueでTaskBを待つ。
+- 送信ボックスのデータはPPEから、受信ボックスのデータはSPEから呼び出される
+- 書き込みはその逆
- |
-
-
-
-
-
-
-
CeriumにおけるTask
-
Dependency
-
-- TaskBが完了するとMailで通知される。
-- TaskAは待つTaskがなくなるので、ActiveQueueに移る。
-
-
-
-
- |
-
-
-
-
-
-
-
CeriumにおけるTask
-
Dependency
-
-- TaskBが完了するとMailで通知される。
-- TaskAは待つTaskがなくなるので、ActiveQueueに移る。
-
-
-
-
- |
+
@@ -357,8 +293,8 @@
- Taskは1つ毎にSPEには送らない
- いくつかのTaskをまとめTaskListとして送る
-- TaskListをすべて完了すると、SPEからPPEにMail通知が送られる
-- PPE側がMailをチェックし次のTaskListを通知する
+- TaskListをすべて完了すると、SPEからPPEへのMailが書き込まれる
+- PPE側がMailをチェックし次のTaskListをMailで通知する
@@ -369,14 +305,25 @@
-
Mail通知
+
SPEの待ち時間
+
+SPEはデータの転送とMailの読み込み、書き込みの際に待ち時間が生じることがある。
+
-- SPEからPPEへのMail送信ボックスはキューになっている
-- キューのサイズは1
-- 書き込む際にキューがいっぱいの場合はPPEから呼び出されるまで待つ
-- PPEからのMail呼び出しがないと、SPEは待ち続ける
+
+-
+送信Mailボックスに書き込もうとしたとき、
+ボックスがいっぱいの場合は、PPEから呼び出されるまでSPEは待ち続ける
+
+
+-
+TaskManagerでは、受信ボックスがいっぱいになることはない。
+
+
+- PPEでMailのチェック、返信があるまで、SPEは止まってしまう
- SPEの待ち時間が増えると、処理速度の低下につながる
+
@@ -384,11 +331,12 @@
TaskArray
-
SPEの待ちを解消するためにTaskArrayを提案、実装した
+
SPEのMailの待ち時間を解消するためにTaskArrayを提案、実装した
- TaskArrayは複数のTaskを1つにまとめることができる
- Task毎のMail通知がTaskArray毎のMail通知になる
+- 依存関係のグルーピングができる
@@ -420,34 +368,101 @@
TaskArray
-
WordCountのTaskと、レンダリングエンジンのTaskの一部をTaskArray化した。
+レンダリングエンジンのTaskと、WordCountのTaskの一部をTaskArray化した。
その結果を報告する
-それぞれのTask内容
+レンダリングエンジンのTask内容
+
+
+ - CreatePolygonTask
+
+ - CreateSpanTask
+
+ - Polygonを水平な線(Span)に分割する
+
+ - DrawSpanTask(TaskArray化)
+
+
+
+
+
+
+
+
レンダリングエンジン
+
+DrawSpanTask : Taskの数が多いDrawSpanTaskをTaskArray化した。地球と月を表示する
+例題を対象に計測した。
+
+計測条件
- - WordCount
-
- - WordCountTask(TaskArray化)
- - PrintTask
-
-
- - レンダリングエンジン
-
- - CreatePolygonTask
- - CreateSpanTask
- - DrawSpanTask(TaskArray化)
-
+- FPS : 一秒間に表示するFrame数
+- dma wait : dma転送の待ち時間の割合
+- mail wait : mailの待ち時間の割合
+- TaskArrayの適応の有無を比較
+- TaskArrayのサイズは8
-
WordCount
+
レンダリングエンジン
+
+
+
+ |
+Task |
+TaskArray |
+
+
+FPS |
+3.94 |
+4.32 |
+
+
+
+dma wait |
+0.06% |
+0.07% |
+
+
+
+mail wait |
+55% |
+42%(-13%) |
+
-構成Task
+レンダリングエンジンの比較
+
+
+
+
+ - mail wait 割合が減少し、それに伴ってFPSも増加
+ - レンダリングエンジンの場合、PPE側で実行するTaskがある
+ - PPEのMailチェックがおくれることがあるので、Mailを減らすことは効果がある
+
+
+
+
+
レンダリングエンジン
+
+今後のMail待ち時間削減の改善点
+
+
+ - PPE側のTaskをSPEに任せ、PPEの負担をへらす
+ - 別スレッドでMailを監視する
+ - 他のTaskもTaskArray化する
+
+
+
+
+
- WordCountTask(TaskArray化)
+
@@ -586,76 +602,6 @@
-
-
-
レンダリングエンジン
-
-構成Task
-
-
- - CreatePolygonTask
-
- - CreateSpanTask
-
- - Polygonを水平な線(Span)に分割する
-
- - DrawSpanTask(TaskArray化)
-
-
-
-
-DrawSpanTask : Taskの数が多いDrawSpanTaskをTaskArray化した。地球と月を表示する
-例題を対象に計測した。
-
-
-
-
-
レンダリングエンジン
-
-
- - FPS : 一秒間に表示できるFrame数
-
-
-
-
- |
-Task |
-TaskArray |
-
-
-FPS |
-3.94 |
-4.32 |
-
-
-
-dma wait |
-0.06% |
-0.07% |
-
-
-
-mail wait |
-55% |
-42% |
-
-
-
-
-
-
-
- - mail wait 割合が減少した
- - レンダリングエンジンの場合、PPE側で実行するTaskがあるので、
- mailチェックが遅れ気味になっている
-
-
-
-
まとめ
diff -r 87b8bb4d104c -r ca231fdd013c resume/graf/taskmanager.graffle
Binary file resume/graf/taskmanager.graffle has changed
diff -r 87b8bb4d104c -r ca231fdd013c resume/graf/wc_graf1.graffle
Binary file resume/graf/wc_graf1.graffle has changed