view java_LT_pre.html~ @ 1:a106e466dded default tip

add file
author Yutaka_Kinjyo
date Sat, 27 Nov 2010 02:37:54 +0900
parents 4d0ba66dee23
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>