changeset 14:ca231fdd013c

fix
author Yutaka_Kinjyo
date Sun, 12 Sep 2010 02:16:11 +0900
parents 87b8bb4d104c
children ada468ecbba5
files presen/presen.html resume/graf/taskmanager.graffle resume/graf/wc_graf1.graffle
diffstat 3 files changed, 144 insertions(+), 198 deletions(-) [+]
line wrap: on
line diff
--- 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 @@
 <div class="slide">
 
 <h1>Fine grain Task Manager Cerium のチューニング</h1>
-<h3>108574D 金城裕</h3>
-<h3>指導教官:河野真治</h3>
+<h3>金城裕</h3>
 <h4>琉球大学大学院理工学研究科情報工学専攻並列信頼研</h4>
 </div>
 
@@ -95,23 +94,6 @@
 <div class="slide">
 <h1>研究目的 と 背景</h1>
 <p class="ex1">
-CPUのクロック周波数の増加は、発熱や消費電力の増大により難しくなっている
-</p>
-<ul>
-<li>
-クロック周波数を上げる代わりに、CPUコア数を増やす傾向になった。
-</li>
-<br>
-<li>マルチコアにあったプログラミングが必要になる</li>
-</ul>
-
-<p><font color="red">そこで、プログラミングを支援するフレームワークが必要になってくる</font></p>
-
-</div>
-
-<div class="slide">
-<h1>研究目的 と 背景</h1>
-<p class="ex1">
 現在 Cell/PS3またはMac OS X上で動作するOpen CL 的なFine Grain Task Manager である Cerium Task Manager を開発中である。
 </p>
 <ul>
@@ -226,58 +208,45 @@
 
 </div>
 
-<div class="slide">
-<h1>CeriumにおけるTask</h1>
-<big><u>Input data</u></big>
-<ul>
-<li>Input data にはTaskの処理対象データのアドレスとサイズを指定する。</li>
-<li>SPE側でそのアドレスをもとにDMA転送を用いて実際のデータをメインメモリから取得する。</li>
-</ul>
+<!-- <div class="slide"> -->
+<!-- <h1>CeriumにおけるTask</h1> -->
+<!-- <big><u>Input data</u></big> -->
+<!-- <ul> -->
+<!-- <li>Input data にはTaskの処理対象データのアドレスとサイズを指定する。</li> -->
+<!-- <li>SPE側でそのアドレスをもとにDMA転送を用いて実際のデータをメインメモリから取得する。</li> -->
+<!-- </ul> -->
 
-<table height="100%" width="100%" border="0">
-<tr><td align="center" valign="middle">
-<img src="gazo/task1.png" style="width: 80%%"></td></tr>
-</table>
-
-</div>
+<!-- <big><u>Output data</u></big> -->
+<!-- <ul> -->
+<!-- <li>Onput data にはTaskが処理したデータの書き出し先アドレスとサイズを指定する。</li> -->
+<!-- <li>SPE側でそのアドレスをもとにDMA転送を用いて実際のデータをメインメモリに書き出す。</li> -->
+<!-- </ul> -->
 
-<div class="slide">
-<h1>CeriumにおけるTask</h1>
-<big><u>Output data</u></big>
-<ul>
-<li>Onput data にはTaskが処理したデータの書き出し先アドレスとサイズを指定する。</li>
-<li>SPE側でそのアドレスをもとにDMA転送を用いて実際のデータをメインメモリに書き出す。</li>
-</ul>
+<!-- </div> -->
 
-<table height="100%" width="100%" border="0">
-<tr><td align="center" valign="middle">
-<img src="gazo/task2.png" style="width: 80%%"></td></tr>
-</table>
-
-</div>
+<!-- <div class="slide"> -->
+<!-- <h1>CeriumにおけるTask</h1> -->
+<!-- <big><u>Paramater</u></big><br> -->
+<!-- <ul> -->
+<!-- <li>Input data とは別にデータを与えたい場合に使用する。</li> -->
+<!-- <li>32bitの値を指定する。</li> -->
+<!-- </ul> -->
 
-<div class="slide">
-<h1>CeriumにおけるTask</h1>
-<big><u>Paramater</u></big><br>
-<ul>
-<li>Input data とは別にデータを与えたい場合に使用する。</li>
-<li>32bitの値を指定する。</li>
-</ul>
+<!-- <big><u>CPU type</u></big> -->
+<!-- <ul> -->
+<!-- <li>TaskがどのCoreで実行されるかを指定する。</li> -->
+<!-- <li>PPEもしくは、6基のSPEのいづれかを選択できる。</li> -->
+<!-- </ul> -->
 
-<big><u>CPU type</u></big>
-<ul>
-<li>TaskがどのCoreで実行されるかを指定する。</li>
-<li>PPEもしくは、6基のSPEのいづれかを選択できる。</li>
-</ul>
-
-</div>
+<!-- </div> -->
 
 <div class="slide">
 <h1>CeriumにおけるTask</h1>
 <big><u>Dependency</u></big><br>
 <ul>
 <li>Dependencyは他のTaskとの依存関係を示す。</li>
-<li>例えばTaskAがTaskBの実行完了を待つ例を紹介する。</li>
+<li>例えばTaskAがTaskBをwaitする場合、TaskBが実行完了すると、TaskAが実行可能になる。</li>
+<li>Taskの実行完了は、SPEのMail送信ボックスにデータが書き込まれ通知される。</li>
 </ul>
 
 <table height="100%" width="100%" border="0">
@@ -290,62 +259,29 @@
 
 <div class="slide">
 <h1>CeriumにおけるTask</h1>
-<big><u>Dependency</u></big><br>
+<big><u>Mail機能</u></big><br>
 <ul>
-<li>はじめTaskBは待つTaskがないので、すぐにActiveQueueに入る。</li>
-<li>TaskAはTaskBを待つのでWaitQueueに入る。</li>
+<li>Cellの機能の1つ</li>
+<li>32bitのメッセージをPPE,SPE間でやりとりできる</li>
+<li>送信ボックス、受信ボックスがSPEに設けられている。</li>
+<li>それぞれMailボックスはキューになっている</li>
+<li>受信ボックスのサイズは4</li>
+<li>送信ボックスのサイズは1</li>
 </ul>
 
-<table height="100%" width="100%" border="0">
-<tr><td align="center" valign="middle">
-<img src="gazo/dependency2.png" style="width: 60%%"></td></tr>
-</table>
-
 </div>
 
 <div class="slide">
 <h1>CeriumにおけるTask</h1>
-<big><u>Dependency</u></big><br>
+<big><u>Mail機能</u></big><br>
 <ul>
-<li>ActiveQueueにあるTaskBはSPEに送られ実行される。</li>
-<li>TaskAはWaitQueueでTaskBを待つ。</li>
+<li>送信ボックスのデータはPPEから、受信ボックスのデータはSPEから呼び出される</li>
+<li>書き込みはその逆</li>
 </ul>
 
 <table height="100%" width="100%" border="0">
 <tr><td align="center" valign="middle">
-<img src="gazo/dependency3.png" style="width: 60%%"></td></tr>
-</table>
-
-</div>
-
-
-<div class="slide">
-<h1>CeriumにおけるTask</h1>
-<big><u>Dependency</u></big><br>
-<ul>
-<li>TaskBが完了するとMailで通知される。</li>
-<li>TaskAは待つTaskがなくなるので、ActiveQueueに移る。</li>
-</ul>
-
-<table height="100%" width="100%" border="0">
-<tr><td align="center" valign="middle">
-<img src="gazo/dependency4.png" style="width: 60%%"></td></tr>
-</table>
-
-</div>
-
-
-<div class="slide">
-<h1>CeriumにおけるTask</h1>
-<big><u>Dependency</u></big><br>
-<ul>
-<li>TaskBが完了するとMailで通知される。</li>
-<li>TaskAは待つTaskがなくなるので、ActiveQueueに移る。</li>
-</ul>
-
-<table height="100%" width="100%" border="0">
-<tr><td align="center" valign="middle">
-<img src="gazo/dependency5.png" style="width: 60%%"></td></tr>
+<img src="gazo/mail.png" style="width: 60%%"></td></tr>
 </table>
 
 </div>
@@ -357,8 +293,8 @@
 <ul>
 <li>Taskは1つ毎にSPEには送らない</li>
 <li>いくつかのTaskをまとめTaskListとして送る</li>
-<li>TaskListをすべて完了すると、SPEからPPEにMail通知が送られる</li>
-<li>PPE側がMailをチェックし次のTaskListを通知する</li>
+<li>TaskListをすべて完了すると、SPEからPPEへのMailが書き込まれる</li>
+<li>PPE側がMailをチェックし次のTaskListをMailで通知する</li>
 </ul>
 
 <table height="100%" width="100%" border="0">
@@ -369,14 +305,25 @@
 </div>
 
 <div class="slide">
-<h1>Mail通知</h1>
+<h1>SPEの待ち時間</h1>
+
+SPEはデータの転送とMailの読み込み、書き込みの際に待ち時間が生じることがある。
+
 
 <ul>
-<li>SPEからPPEへのMail送信ボックスはキューになっている</li>
-<li>キューのサイズは1</li>
-<li>書き込む際にキューがいっぱいの場合はPPEから呼び出されるまで待つ</li>
-<li>PPEからのMail呼び出しがないと、SPEは待ち続ける</li>
+
+<li>
+送信Mailボックスに書き込もうとしたとき、
+ボックスがいっぱいの場合は、PPEから呼び出されるまでSPEは待ち続ける
+</li>
+
+<li>
+TaskManagerでは、受信ボックスがいっぱいになることはない。
+</li>
+
+<li>PPEでMailのチェック、返信があるまで、SPEは止まってしまう</li>
 <li>SPEの待ち時間が増えると、処理速度の低下につながる</li>
+
 </ul>
 
 </div>
@@ -384,11 +331,12 @@
 <div class="slide">
 <h1>TaskArray</h1>
 
-<font color="red">SPEの待ちを解消するためにTaskArrayを提案、実装した</font>
+<font color="red">SPEのMailの待ち時間を解消するためにTaskArrayを提案、実装した</font>
 
 <ul>
 <li>TaskArrayは複数のTaskを1つにまとめることができる</li>
 <li>Task毎のMail通知がTaskArray毎のMail通知になる</li>
+<li>依存関係のグルーピングができる</li>
 </ul>
 <br>
 <table height="100%" width="100%" border="0">
@@ -420,34 +368,101 @@
 <div class="slide">
 <h1>TaskArray</h1>
 
-<font color="red">WordCountのTaskと、レンダリングエンジンのTaskの一部をTaskArray化した。
+<font color="red">レンダリングエンジンのTaskと、WordCountのTaskの一部をTaskArray化した。
 その結果を報告する</font><br><br>
 
-それぞれのTask内容
+レンダリングエンジンのTask内容
+
+  <ul>
+    <li>CreatePolygonTask</li>
+    <ul>
+      <li>Polygonを生成する</li>
+    </ul>
+    <li>CreateSpanTask</li>
+    <ul>
+      <li>Polygonを水平な線(Span)に分割する</li>
+    </ul>
+    <li>DrawSpanTask(<font color="red">TaskArray化</font>)</li>
+    <ul>
+      <li>Spanを描画する</li>
+    </ul>
+  </ul>
+
+
+</div>
+
+<div class="slide">
+<h1>レンダリングエンジン</h1>
+
+DrawSpanTask : Taskの数が多いDrawSpanTaskをTaskArray化した。地球と月を表示する
+例題を対象に計測した。<br><br>
+
+計測条件
 
 <ul>
-  <li>WordCount</li>
-  <ul>
-    <li>WordCountTask(<font color="red">TaskArray化</font>)</li>
-    <li>PrintTask</li>
-  </ul>
-
-  <li>レンダリングエンジン</li>
-  <ul>
-    <li>CreatePolygonTask</li>
-    <li>CreateSpanTask</li>
-    <li>DrawSpanTask(<font color="red">TaskArray化</font>)</li>
-  </ul>
+<li>FPS : 一秒間に表示するFrame数</li>
+<li>dma wait : dma転送の待ち時間の割合</li>
+<li>mail wait : mailの待ち時間の割合</li>
+<li>TaskArrayの適応の有無を比較</li>
+<li>TaskArrayのサイズは8</li>
 
 </ul>
 
 </div>
 
 <div class="slide">
-<h1>WordCount</h1>
+<h1>レンダリングエンジン</h1>
+
+<table border="3" style="width:100%;">
+<tr>
+<th></th>
+<th>Task</th>
+<th>TaskArray</th>
+</tr>
+<tr>
+<th>FPS</th>
+<td align="center">3.94</td>
+<td align="center">4.32</td>
+
+</tr>
+<tr>
+<th>dma wait</th>
+<td align="center">0.06%</td>
+<td align="center">0.07%</td>
+
+</tr>
+<tr>
+<th>mail wait</th>
+<td align="center">55%</td>
+<td align="center">42%(<font color="red">-13%</font>)</td>
+</tr>
 
-構成Task
+<caption>レンダリングエンジンの比較</caption>
+
+</table><br>
+
+  <ul>
+    <li>mail wait 割合が減少し、それに伴ってFPSも増加</li>
+    <li>レンダリングエンジンの場合、PPE側で実行するTaskがある</li>
+    <li>PPEのMailチェックがおくれることがあるので、Mailを減らすことは効果がある</li>
+  </ul>
+
+</div>
 
+<div class="slide">
+<h1>レンダリングエンジン</h1>
+
+今後のMail待ち時間削減の改善点
+
+  <ul>
+    <li>PPE側のTaskをSPEに任せ、PPEの負担をへらす</li>
+    <li>別スレッドでMailを監視する</li>
+    <li>他のTaskもTaskArray化する</li>
+  </ul>
+
+</div>
+
+<div class="slide">
   <ul>
     <li>WordCountTask(<font color="red">TaskArray化</font>)</li>
     <ul>
@@ -462,6 +477,7 @@
     
   </ul>
 
+</ul>
 </div>
 
 <div class="slide">
@@ -586,76 +602,6 @@
 
 </div>
 
-
-<div class="slide">
-<h1>レンダリングエンジン</h1>
-
-構成Task
-
-  <ul>
-    <li>CreatePolygonTask</li>
-    <ul>
-      <li>Polygonを生成する</li>
-    </ul>
-    <li>CreateSpanTask</li>
-    <ul>
-      <li>Polygonを水平な線(Span)に分割する</li>
-    </ul>
-    <li>DrawSpanTask(<font color="red">TaskArray化</font>)</li>
-    <ul>
-      <li>Spanを描画する</li>
-    </ul>
-  </ul>
-
-<br>
-DrawSpanTask : Taskの数が多いDrawSpanTaskをTaskArray化した。地球と月を表示する
-例題を対象に計測した。
-
-</div>
-
-<div class="slide">
-<h1>レンダリングエンジン</h1>
-
-  <ul>
-    <li>FPS : 一秒間に表示できるFrame数</li>
-  </ul>
-
-<table border="3" style="width:100%;">
-<tr>
-<th></th>
-<th>Task</th>
-<th>TaskArray</th>
-</tr>
-<tr>
-<th>FPS</th>
-<td align="center">3.94</td>
-<td align="center">4.32</td>
-
-</tr>
-<tr>
-<th>dma wait</th>
-<td align="center">0.06%</td>
-<td align="center">0.07%</td>
-
-</tr>
-<tr>
-<th>mail wait</th>
-<td align="center">55%</td>
-<td align="center">42%</td>
-</tr>
-
-<caption></caption>
-
-</table><br>
-
-  <ul>
-    <li>mail wait 割合が減少した</li>
-    <li>レンダリングエンジンの場合、PPE側で実行するTaskがあるので、
-    mailチェックが遅れ気味になっている</li>
-  </ul>
-
-</div>
-
 <div class="slide">
 <h1>まとめ</h1>
 
Binary file resume/graf/taskmanager.graffle has changed
Binary file resume/graf/wc_graf1.graffle has changed