Mercurial > hg > Members > yutaka > javakuche_LT
view java_LT_pre.html~ @ 0:4d0ba66dee23
add file
author | Yutaka_Kinjyo |
---|---|
date | Fri, 26 Nov 2010 16:10:06 +0900 |
parents | |
children |
line wrap: on
line source
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> <head> <title>発表資料</title> <!-- metadata --> <meta name="generator" content="S5" /> <meta name="version" content="S5 1.1" /> <meta name="presdate" content="20050728" /> <meta name="author" content="Eric A. Meyer" /> <meta name="company" content="Complex Spiral Consulting" /> <!-- configuration parameters --> <meta name="defaultView" content="slideshow" /> <meta name="controlVis" content="hidden" /> <!-- style sheet links --> <link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> <link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> <link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> <link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> <!-- S5 JS --> <script src="ui/default/slides.js" type="text/javascript"></script> <style type="text/css"> body { font-size: 100%; } p.ex10 { font-size: 2.0em; } p.ex9 { font-size: 1.9em; } p.ex8 { font-size: 1.8em; } p.ex7 { font-size: 1.7em; } p.ex6 { font-size: 1.6em; } p.ex5 { font-size: 1.5em; } p.ex4 { font-size: 1.4em; } p.ex3 { font-size: 1.3em; } p.ex2 { font-size: 1.2em; } p.ex1 { font-size: 1.1em; } p.ex0 { font-size: 1.0em; } p.ex05 { font-size: 0.5em; } span.classifier { font-family: sans-serif ; font-style: oblique } span.classifier-delimiter { font-family: sans-serif ; font-weight: bold } span.interpreted { font-family: sans-serif } span.option { white-space: nowrap } span.pre { white-space: pre } span.problematic { color: red } span.section-subtitle { /* font-size relative to parent (h1..h6 element) */ font-size: 80% } </style> </head> <body> <div class="layout"> <div id="controls"><!-- DO NOT EDIT --></div> <div id="currentSlide"><!-- DO NOT EDIT --></div> <div id="header"></div> <div id="footer"> <!--<h1>Cell上のソフトウェアレンダリングの高速化と高機能化</h1> <h2>琉球大学工学部情報工学科並列信頼研</h2>--> </div> </div> <div class="presentation"> <div class="slide"> <h1>Cerium</h1> <h3>108574D 金城裕</h3> <h3>指導教官:河野真治</h3> <h4>琉球大学大学院理工学研究科情報工学専攻並列信頼研</h4> </div> <div class="slide"> <h1>ゴゴゴゴ</h1> これから語られるのはCeriumに関しての壮大なお話・・・?<br> うろ覚えな所もありますが、だいたいこんな感じかも </div> <div class="slide"> <h1>4年次研究室配属</h1> 4年次配属になり、 ゲーム班でさわってたから、Cerium やるー。やっふー。 </div> <div class="slide"> <h1>先生のソース変更</h1> でも、Ceriumってなにするんだろー。RenderingEngineのチューニングあたりかなー。<br> とりあえず、WordCount を TaskManager を使って実装する。<br> これは比較的優しかった。 </div> <div class="slide"> <h1>先生のソース変更</h1> お次は、RenderingEngineのチューニングあたりかなー。 <ul> <li>Kono先生、TaskManager に、TaskArrayを実装(じばらく、Ceriumは動かない。)</li> <li>動かない -> バグとりしたい -> Cerium を読み始める -> あんまりわかんない</li> <li>進まない -> ゼミ発表「できませんでした!」</li> <li>とりあえず、動くバージョンで光源を実装。RenderingEngine を読み始める</li> </ul> </div> <div class="slide"> <h1>TaskArray</h1> TaskArrayとは? <ul> <li>複数のTaskをまとめて、依存関係を集約できる。</li> <li>Mail待ちのタイミングが減るはず</li> </ul> </div> <div class="slide"> <h1>そして卒研へ</h1> RenderingEngine に光源を実装、spe側ではSIMD演算を実装して、速度向上を計る。<br> </div> <div class="slide"> <h1>M1に昇格</h1> TaskManager のチューニングにとりかかる<br> <ul> <li>ついに、先生の手によってTaskArrayがデバックされる</li> <li>WordCountnをTaskArrayで実装</li> <li>RenderinEngineのDrawSpanTaskもTaskArrayで実装</li> <li>学会で発表。そんなに効果はない</li> </ul> </div> <div class="slide"> <h1>現在</h1> 現在<br> <ul> <li>やっとのことでTaskManagerも理解</li> <li>RenderinEngine も読んだので Cerium をようやっと網羅</li> </ul> みえてきたこと・・・ </div> <div class="slide"> <h1>future</h1> 今の TaskManager だけだと少し足りない<br> <ul> <li>プログラミングの際は、できるだけSPEの稼働率を下げないように工夫しないといけない</li> <li>(ex.バリア同期を避ける、Taskをパイプライン化、依存関係の集約、PPEにできるだけTaskを任せない)</li> </ul> <p><font color="red">それらの煩わしい手順を解決するための、TaskManager以外のものが必要なのかも</font></p> </div> <div class="slide"> <h1>RenderinEngineの場合だと</h1> <ul> <li>それぞれ, CreatePolygonTask, CreateSpanTask, DrawSpanTask, がバリア同期になっていて、SPEの待ち時間20%</li> <li>毎回ユーザが工夫するのか?なんとかできないかなぁー。</li> </ul> <p><font color="red">それらの煩わしい手順を解決するための、TaskManager以外のものが必要なのかも</font></p> </div> <div class="slide"> <h1>TaskCreater</h1> 今ココ。<br> 現在)TaskManager -> ユーザ<br> 提案)TaskManager -> TaskCreater(または何かしらのパターン) -> ユーザ<br><br> TaskCreater 機能 <ul> <li>TaskArray化を自動で行う。</li> <li>他にもいろいろできるはず</li> </ul> </div> <div class="slide"> <h1>TaskCreater</h1> <li>WordCount のをうまく抜き出せば、自動的に input を分割 TaskArray化 できるAPIを作れるのでは</li> <li>input, output の1Dataのsize, Task全体のsize, とそれのスタートアドレスを渡してやれば・・できるはず・</li> <ul> <li>1Dataのsize(ex. WordCountならchar, Engineなら pp, spp,等々)</li> <li>インクリメンタルな task create は可能?WordCountのをうまく使えば多分できる</li> <li>メモリ確保もインクリメンタルにー</li> </ul> </div> <div class="slide"> <h1>今後</h1> <ul> <li>比較したいので、OpenCL や他のフレームワークを調べてみる。</li> <li>もっとTaskManagerを使っていって新しいプログラミングスタイルを編み出す!</li> <ul> <li>TaskCreater(自動TaskArray化)</li> <li>TaskCreater(インクリメンタルな task create)</li> </ul> <li>新しいプログラミングスタイルっていうかAPI?..(ちょっとせこい?)</li> <li>SDLお勉強</li> <li>コツコツやってれば、きっと何か見えてくるのかな。。</li> </ul> </div> <div class="slide"> <h1>END</h1> /*end*/ </div> <div class="slide"> <h1>研究目的</h1> 現在 Cell/PS3またはMacOSX上で動作するCerium Task Manager を使って RenderingEngine を実装中である <ul> <li> 実装方法は各処理を Task という単位にわけ、TaskManager を用いて並列実行していく。 </li> <br> <li>その際に SPEの稼働率を下げないための工夫が必要であることがわかった。(ex.バリア同期を避ける、Taskをパイプライン化、依存関係の集約、PPEにできるだけTaskを任せない)</li> </ul> <p><font color="red">それらの煩わしい手順を解決するための、TaskManagerを用いたプログラミングスタイルを提案する</font></p> </div> <div class="slide"> <h1>研究背景</h1> それでですね。ここらへんで、OpenCL 等の他のフレームワークや、アムダール則について書きたいんです。<br> なんですが、OpenCL を使ってCellでプログラミングしたことがないので、ちょっと書けない。これから他のフレームワークも調べたい。 </div> <div class="slide"> <h1>Mail timing</h1> 学会前に自分がいじったせいか、mail のタイミングでバグがありました。 </div> <div class="slide"> <h1>Mail timing</h1> (前)SchedNop2Ready -> SchedMail<br> (後)SchedNop2Ready -> SchedNop -> SchedMail<br> </div> <div class="slide"> <h1>Mail Queue</h1> Mail Queue を MailManager を使ったものに書き換え。<br> Mail Queue をさっそく計測。。特に実行時間は変わらず^^; </div> <div class="slide"> <h1>Task list mail Time</h1> SPE が TaskList の要求 mail の待ち時間を表示するようにしました。<br> (demo)<br> mail time の ほとんどが task list の待ち時間。 </div> <div class="slide"> <h1>RenderinEngine</h1> mail time の待ち時間 がほんとんど task list 待ちなら。<br> 解決すべきは、TaskManager側ではなく、Engine 部分のバリア同期 </div> <div class="slide"> <h1>SDL</h1> がんばってほんとにいろいろぐぐったり、したんですが・・<br> ./configure --enable-ps3-video <br> みたいなオプションしか分からない。んで、いろいろ探しているうちに・・ </div> <div class="slide"> <h1>SDL</h1> Hello. This patch provides basic support for video on the Sony PS3 Linux framebuffer. Scaling, format-conversion, and drawing is done from the SPEs, so there is little performance impact to PPE applications. <font color="red">This is by no means production quality code,</font> but it is a very good start and a good example of how to use the PS3's hardware capabilities to accelerate video playback on the box.<br> </div> <div class="slide"> <h1>SDL</h1> The driver has been verified to work with ffplay, mplayer and xine. This piece of software has been developed at the IBM R&D Lab in Boeblingen, Germany and is now returned to the community. Enjoy ! </div> <div class="slide"> <h1>SDL</h1> これ以上のことがわらないので、また少しソース読みはじめました・・。<br> ps3 driver って動かないのかも・・<br> </div> <div class="slide"> <h1>やること</h1> とくかく、SDLのやつなんとしないといけない。<br> もっと詳しく調べます<br> </div> <div class="slide"> <h1>今後</h1> 比較したいので、OpenCL や他のフレームワークを調べてみる。<br> 法線ベクトルもOpenGL と合うように、blender から見直す<br> もっとTaskManagerを使っていって新しいプログラミングスタイルを編み出す! </div> <div class="slide"> <h1>END</h1> /*end*/ </div> <div class="slide"> <h1>参照の局所性</h1> RenderinEngine の場合、mail待ちの時間が大きな問題ですが。<br> WordCount 実装時に、SPEが同時にバラバラのメモリにアクセス、パーフォーマンスがいっきに低下したことがある。 データの局所性がなりたたない時がある。 <ul> <li>memory allocate の工夫</li> <li>Task の allocate はすでにQueueになっている</li> <li>独自のアロケータを用いてある程度の大きさまでしか確保しない、処理してる間に次の領域を確保</li> <li>そこらへん勝手にやってくれると助かる。もっと勉強(既存のmalloc等々)</li> <li>いろいろ考えてみたい。工夫の余地がある。</li> </ul> </div> <div class="slide"> <h1>参照の局所性</h1> 大量のデータ、簡単な処理をSPEで行う場合にパイプラインで隠れないことがあるのかも。<br> <ul> <li>Taskの領域のすぐ近くに必要なread bufferやout bufferを確保する</li> <li>なるべく実行される順にデータの領域が確保される方がいい</li> <li>それは Task からヒントをもらえる?</li> <li>rbuf のアドレスは固定、TaskからDMA命令がきたときに、またはそれを予測して、ユーザが確保したデータを移し替える</li> </ul> </div> <div class="slide"> <h1>end</h1> /*end*/ <br><br> </div> <div class="slide"> <h1>Mandelbrot</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(-0)</td> <td align="center">62(-15)%</td> <td align="center">32%(+15)</td> <td align="center">5.5%(-0)</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> </tr> <caption>速度比較(RUN_TASK_BLOCK を二つ生成)</caption> </table><br> </div> <div class="slide"> <h1>Mandelbort</h1> <ul> <br> MandelbrotをCeriumに実装<br> こっちも、まだセグメンテーションエラーです。<br> バグとり間に合わず。 </div> <div class="slide"> <h1>バグとり</h1> <ul> <br> というわけで、WordCountのTaskArray,ネックの検証<br> MandelbrotのCerium実装<br> 引き続きもうちょっと頑張ります。 </div> <div class="slide"> <h1>end</h1> <ul> /*end*/ <br><br> </div> <div class="slide"> <h1>ダブルバッファリング</h1> <img src="gazo/doublebuffering.png" width="670" height="200"> <br> TaskListしたので、ダブルバッファリングしやすかった。次のタスクのアドレスがわかるので、 現Taskを処理している間に次のTaskをdma_get,前のTaskのoutputをdma_putする。 </div> <div class="slide"> <h1>例題</h1> <br> という実装をしたところで、マンデルブロー集合を計算してみました。demoあり </div> <div class="slide"> <h1>今後</h1> <br> 現在、SPE側のrun関数が決め打ちで動き、それがtaskという事になっている。 Cerium/TaskManager のように複数のTaskから指定して動くようにしたい。あとTaskの依存関係も。 MemorySegment!やります! </div> <div class="slide"> <h1>end</h1> <ul> /*end*/ <br><br> </ul> <div class="handout"> [any material that should appear in print but not on the slide] </div> </div> </div> </body> </html>