changeset 12:c770f569a801

add file
author Yutaka_Kinjyo
date Fri, 10 Sep 2010 02:43:57 +0900
parents 64d19544a2fd
children 87b8bb4d104c
files presen/gazo/taskarray1.png presen/gazo/tasklist1.png presen/gazo/taskmanager1.png presen/gazo/wc_graf1.png presen/presen.html
diffstat 5 files changed, 208 insertions(+), 197 deletions(-) [+]
line wrap: on
line diff
Binary file presen/gazo/taskarray1.png has changed
Binary file presen/gazo/tasklist1.png has changed
Binary file presen/gazo/taskmanager1.png has changed
Binary file presen/gazo/wc_graf1.png has changed
--- a/presen/presen.html	Fri Sep 10 02:35:22 2010 +0900
+++ b/presen/presen.html	Fri Sep 10 02:43:57 2010 +0900
@@ -180,7 +180,7 @@
 <ul>
 <li>TaskManagerは、Taskと呼ばれる、分割された各プログラムを管理する</li>
 <ul>
-<li>Taskの単位は関数またはサブルーチン</li>
+<li>Taskの単位はサブルーチン</li>
 </ul>
 <li>Task同士の依存関係を考慮</li>
 <li>実行可能になったTaskをSPEに渡す</li>
@@ -188,7 +188,7 @@
 
 <table height="100%" width="100%" border="0">
 <tr><td align="center" valign="middle">
-<img src="gazo/taskmanager1.png" style="width: 60%%"></td></tr>
+<img src="gazo/taskmanager1.png" style="width: 50%%"></td></tr>
 </table>
 
 </div>
@@ -335,281 +335,294 @@
 
 
 <div class="slide">
-<h1>TaskArray</h1>
-<big><u>TaskArray</u></big><br>
+<h1>Taskの送信</h1>
+
 <ul>
-<li>Task毎にMail通知を行う、、今日はここまで・・続きまた頑張りまっす。</li>
+<li>Taskは1つ毎にSPEには送らない</li>
+<li>いくつかのTaskをまとめTaskListとして送る</li>
+<li>TaskListをすべて完了すると、SPEからPPEにMail通知が送られる</li>
+<li>PPE側がMailをチェックし次のTaskListを通知する</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/tasklist1.png" style="width: 40%%"></td></tr>
+</table>
+
+</div>
+
+<div class="slide">
+<h1>Mail通知</h1>
+
+<ul>
+<li>SPEからPPEへのMail送信ボックスはキューになっている</li>
+<li>キューのサイズは1</li>
+<li>書き込む際にキューがいっぱいの場合はPPEから呼び出されるまで待つ</li>
+<li>PPEからのMail呼び出しがないと、SPEは待ち続ける</li>
+</ul>
+
+</div>
+
+<div class="slide">
+<h1>TaskArray</h1>
+
+<font color="red">SPEの待ちを解消するためにTaskArrayを提案、実装した</font>
+
+<ul>
+<li>TaskArrayは複数のTaskを1つにまとめることができる</li>
+<li>Task毎のMail通知がTaskArray毎のMail通知になる</li>
+</ul>
+<br>
+<table height="100%" width="100%" border="0">
+<tr><td align="center" valign="middle">
+<img src="gazo/taskarray1.png" style="width: 50%%"></td></tr>
 </table>
 
 </div>
 
-
-
-
-
 <div class="slide">
-<h1>今週</h1>
+<h1>TaskArray</h1>
 
-<table border="3" style="width:100%;">
-<tr>
-<th></th>
-<th>real_time</th>
-<th>wait_time</th>
-<th>mail_time</th>
-<th>busy_ratio</th>
-</tr>
-<tr>
-<th>all</th>
-<td align="center">58s</td>
-<td align="center">77%</td>
-<td align="center">17%</td>
-<td align="center">5.5%</td>
-
+期待される効果
 
-</tr>
-<tr>
-<th>compatibility</th>
-<td align="center">31s</td>
-<td align="center">50%</td>
-<td align="center">39%</td>
-<td align="center">10%</td>
-
-</tr>
-<tr>
-<th>taskarray</th>
-<td align="center">34s</td>
-<td align="center">35%</td>
-<td align="center">55%</td>
-<td align="center">9%</td>
-</tr>
-
-<caption>速度比較</caption>
-
-</table><br>
-
-しかし、これは、RUN_TASK_BLOCKS_TASK を1つだけ生成した場合でした・・二つにしてみると・・
+<ul>
+<li>Mailの数が減り、SPEのMail待ちのタイミングが減る</li>
+<li>Mail待ちが減るので、SPEの稼働率が向上する</li>
+<li>また、PPE側のMailチェックの時間も減る</li>
+<li>結果、処理速度が向上する</li>
+</ul>
+<br>
+<table height="100%" width="100%" border="0">
+<tr><td align="center" valign="middle">
+<img src="gazo/taskarray1.png" style="width: 50%%"></td></tr>
+</table>
 
 </div>
 
 <div class="slide">
-<h1>今週</h1>
+<h1>TaskArray</h1>
+
+<font color="red">WordCountのTaskと、レンダリングエンジンのTaskの一部をTaskArray化した。
+その結果を報告する</font><br><br>
+
+それぞれのTask内容
+
+<ul>
+  <li>WordCount</li>
+  <ul>
+    <li>WordCountTask(<font color="red">TaskArray化</font>)</li>
+    <li>PrintTask</li>
+  </ul>
 
-<table border="3" style="width:100%;">
-<tr>
-<th></th>
-<th>real_time</th>
-<th>wait_time</th>
-<th>mail_time</th>
-<th>busy_ratio</th>
-</tr>
-<tr>
-<th>all</th>
-<td align="center">58s</td>
-<td align="center">77%</td>
-<td align="center">17%</td>
-<td align="center">5.5%</td>
+  <li>レンダリングエンジン</li>
+  <ul>
+    <li>CreatePolygonTask</li>
+    <li>CreateSpanTask</li>
+    <li>DrawSpanTask(<font color="red">TaskArray化</font>)</li>
+  </ul>
 
+</ul>
+
+</div>
+
+<div class="slide">
+<h1>WordCount</h1>
 
-</tr>
-<tr>
-<th>compatibility</th>
-<td align="center">31s</td>
-<td align="center">50%</td>
-<td align="center">39%</td>
-<td align="center">10%</td>
+<ul>
+  <li>wcするfileをマッピングし、Taskに割り振る</li>
+  <li>WordCountTaskの終了をまって、PrintTaskが実行される</li>
+</ul>
+
+<table height="100%" width="100%" border="0">
+<tr><td align="center" valign="middle">
+<img src="gazo/wc_graf1.png" style="width: 40%%"></td></tr>
+</table>
+
+</div>
+
+<div class="slide">
+<h1>WordCount</h1>
 
-</tr>
-<tr>
-<th>taskarray</th>
-<td align="center">34s</td>
-<td align="center">35%</td>
-<td align="center">55%</td>
-<td align="center">9%</td>
-</tr>
+<ul>
+  <li>TaskArrayのサイズは64</li>
+  <li>WC対象は166Mのテキスト</li>
+  <li>TaskArrayの適応の有無を比較</li>
+</ul>
+
+</div>
 
-<caption>速度比較(RUN_TASK_BLOCK を1つ生成)</caption>
+<div class="slide">
+<h1>WordCount</h1>
 
-</table><br>
+<ul>
+  <li>time : 実行時間</li>
+  <li>dma wait : dma転送待ちの割合</li>
+  <li>time wait : mail待ちの割合</li>
+</ul>
+
+<br>
 
 <table border="3" style="width:100%;">
 <tr>
 <th></th>
-<th>real_time</th>
-<th>wait_time</th>
-<th>mail_time</th>
-<th>busy_ratio</th>
+<th>Task</th>
+<th>TaskArray</th>
 </tr>
 <tr>
-<th>all</th>
-<td align="center">58s</td>
-<td align="center">62%</td>
-<td align="center">32%</td>
-<td align="center">5.5%</td>
-
+<th>time</th>
+<td align="center">2.184s</td>
+<td align="center">2.109s</td>
 
 </tr>
 <tr>
-<th>compatibility</th>
-<td align="center">24s</td>
-<td align="center">79%</td>
-<td align="center">17%</td>
-<td align="center">13%<font color="red">(+3)</font></td>
+<th>dma wait</th>
+<td align="center">18%</td>
+<td align="center">12%</td>
 
 </tr>
 <tr>
-<th>taskarray</th>
-<td align="center">28s</td>
-<td align="center">66%</td>
-<td align="center">22%</td>
-<td align="center">11%<font color="red">(+2)</font></td>
+<th>mail wait</th>
+<td align="center">5%</td>
+<td align="center">8%</td>
 </tr>
 
-<caption>速度比較(RUN_TASK_BLOCK を二つ生成)</caption>
+<caption></caption>
 
 </table><br>
 
-なるほど、次のTask生成までの時間ロスが減るので、少し速くなりますね。
-
-</div>
-
-
-
 <div class="slide">
-<h1>DrawSpan</h1>
-DrawSpanのTaskがTaskArray有無の場合<br><br>
-
-例題はball_bound<br><br>
-
-compatibility -> 4.073888 FPS<br>
-TaskArray -> 4.339242 FPS<br>
-
-</div>
-
-
+<h1>WordCount</h1>
 
-<div class="slide">
-<h1>論文をどうまとめるか</h1>
 <ul>
-論文ちゃんの内容
-<li>Taskが大量の場合一度に全て生成するより、incrementalに生成したほうがよい</li>
-<li>TaskArrayはうーん。うーん。もう少し考えてみます。</li>
-
+  <li>あまり効果は見られなかった</li>
+  <li>PPE側のTaskがないので、あまりmail待ちが入らない</li>
+  <li>ファイルのサイズが大きいのでメモリアクセスで時間がかかる</li>
 </ul>
-</div>
 
-<div class="slide">
-<h1>end</h1>
-<ul>
-/*end*/
-<br><br>
-
-<div class="slide">
-<h1>Mandelbrot</h1>
+<br>
 
 <table border="3" style="width:100%;">
 <tr>
 <th></th>
-<th>real_time</th>
-<th>wait_time</th>
-<th>mail_time</th>
-<th>busy_ratio</th>
+<th>Task</th>
+<th>TaskArray</th>
 </tr>
 <tr>
-<th>all</th>
-<td align="center">58s(-0)</td>
-<td align="center">62(-15)%</td>
-<td align="center">32%(+15)</td>
-<td align="center">5.5%(-0)</td>
+<th>time</th>
+<td align="center">2.184s</td>
+<td align="center">2.109s</td>
 
+</tr>
+<tr>
+<th>dma wait</th>
+<td align="center">18%</td>
+<td align="center">12%</td>
 
 </tr>
 <tr>
-<th>compatibility</th>
-<td align="center">24s(-7)</td>
-<td align="center">79%(+19)</td>
-<td align="center">17%(-22)</td>
-<td align="center">13%(+3)</td>
-
-</tr>
-<tr>
-<th>taskarray</th>
-<td align="center">28s(-6)</td>
-<td align="center">66%(+31)</td>
-<td align="center">22%(-33)</td>
-<td align="center">11%(+2)</td>
+<th>mail wait</th>
+<td align="center">5%</td>
+<td align="center">8%</td>
 </tr>
 
-<caption>速度比較(RUN_TASK_BLOCK を二つ生成)</caption>
+<caption></caption>
 
 </table><br>
 
+</div>
+
+<div class="slide">
+<h1>WordCount</h1>
+
+改善策
+
+<ul>
+  <li>一度にファイルマッピングをしない</li>
+  <li>何度かに分けてマッピングする</li>
+  <li>同じ領域を切り替えて使う</li>
+  <li>スワップを減らし、アクセス時間を短縮する</li>
+  <li>dma wait の割合が減る</li>
+</ul>
 
 </div>
 
 
 <div class="slide">
-<h1>Mandelbort</h1>
-<ul>
-<br>
+<h1>レンダリングエンジン</h1>
 
-MandelbrotをCeriumに実装<br>
-
-こっちも、まだセグメンテーションエラーです。<br>
-バグとり間に合わず。
+構成Task
 
-</div>
+  <ul>
+    <li>CreatePolygonTask</li>
+    <li>CreateSpanTask</li>
+    <li>DrawSpanTask(<font color="red">TaskArray化</font>)</li>
+  </ul>
 
-<div class="slide">
-<h1>バグとり</h1>
-<ul>
 <br>
-
-というわけで、WordCountのTaskArray,ネックの検証<br>
-MandelbrotのCerium実装<br>
-引き続きもうちょっと頑張ります。
+DrawSpanTask : Taskの数が多いDrawSpanTaskをTaskArray化した。地球と月を表示する
+例題を対象に計測した。
 
 </div>
 
 <div class="slide">
-<h1>end</h1>
-<ul>
-/*end*/
-<br><br>
-</div>
+<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>
 
-<div class="slide">
-<h1>ダブルバッファリング</h1>
+</tr>
+<tr>
+<th>dma wait</th>
+<td align="center">0.06%</td>
+<td align="center">0.07%</td>
 
-<img src="gazo/doublebuffering.png" width="670" height="200">
-<br>
-TaskListしたので、ダブルバッファリングしやすかった。次のタスクのアドレスがわかるので、
-現Taskを処理している間に次のTaskをdma_get,前のTaskのoutputをdma_putする。
+</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>
-<br>
+<h1>まとめ</h1>
+
 
-という実装をしたところで、マンデルブロー集合を計算してみました。demoあり
+<ul>
+  <li>複数のTaskをまとめるTaskArrayを提案、実装した。</li>
+  <li>PPE側が忙しく、mailチェックが遅れる場合に効果的</li>
+  <li>PPE側にTaskがない場合は、mailチェックは間に合う</li>
+  <li>WordCountはdma転送がネックになっている</li>
+  <li>マッピングの方法、Taskのスケジューリングを工夫して、dma転送時間を削減できる</li>
+
+
+</ul>
 
 </div>
 
-<div class="slide">
-<h1>今後</h1>
-<br>
-
-現在、SPE側のrun関数が決め打ちで動き、それがtaskという事になっている。
-Cerium/TaskManager のように複数のTaskから指定して動くようにしたい。あとTaskの依存関係も。
-
-MemorySegment!やります!
-
-</div>
 
 
 <div class="slide">
@@ -619,8 +632,6 @@
 <br><br>
 
 
-</ul>
-
 <div class="handout">
 [any material that should appear in print but not on the slide]
 </div>