Mercurial > hg > Papers > 2010 > jsst-yutaka
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
--- 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>