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