Mercurial > hg > Papers > 2009 > gongo-master
changeset 23:51c95851ae11
fix presentation
author | gongo@gendarme.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Sat, 14 Feb 2009 19:40:02 +0900 |
parents | d0a637c1e4cc |
children | de8ba175cc9b |
files | paper/cell.tex presen/images/amdahl.jpg presen/images/cell_arch.graffle presen/images/cell_arch.jpg presen/presen.html presen/presen.rst presen/s5defs.txt presen/ui/default/gongo.css presen/ui/default/print.css presen/ui/default/slides.css |
diffstat | 10 files changed, 360 insertions(+), 122 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/cell.tex Sat Feb 14 13:54:55 2009 +0900 +++ b/paper/cell.tex Sat Feb 14 19:40:02 2009 +0900 @@ -43,7 +43,7 @@ \section{SPE (Synergistic Processor Element)} \label{sec:cell_spe} SPE には 256KB の Local Store (LS) と呼ばれる、SPE から唯一、 -直接参照できるメモリ領域がり、バスに負担をかける事無く +直接参照できるメモリ領域があり、バスに負担をかける事無く 並列に計算を進めることが出来る。SPE からメインメモリへは、 直接アクセスすることは出来ず、SPE を構成する一つである MFC (Memory Flow Controller) へ、チャネルを介して DMA (Direct Memory Access)
--- a/presen/presen.html Sat Feb 14 13:54:55 2009 +0900 +++ b/presen/presen.html Sat Feb 14 19:40:02 2009 +0900 @@ -336,6 +336,11 @@ ===================== --> <!-- Incremental Display =================== --> +<!-- This data file has been placed in the public domain. --> +<!-- Derived from the Unicode character mappings available from +<http://www.w3.org/2003/entities/xml/>. +Processed by unicode2rstsubs.py, part of Docutils: +<http://docutils.sourceforge.net>. --> <dl class="docutils"> <dt><em>発表者</em></dt> <dd><strong>宮國渡</strong></dd> @@ -347,11 +352,11 @@ </div> <div class="slide" id="id1"> -<h1>研究の背景と目的</h1> -<p>現在、学生実験で PS3Linux を用いてゲーム開発を行っている</p> -<p><strong>しかし、学生には困難!</strong></p> +<h1>研究の背景</h1> +<p>現在、学生実験で PS3Linux を用いてゲーム開発を行っているが、 +学生には困難であることがわかってきている</p> <ul> -<li><p class="first">問題1:Cell アーキテクチャプログラミング</p> +<li><p class="first"><span class="text-maroon">問題1</span> : <span class="text-underline">Cell アーキテクチャプログラミング</span></p> <ul> <li><p class="first">Many Core による並列プログラミング</p> <p>(データ、コードの分割の必要性)</p> @@ -360,68 +365,133 @@ </li> </ul> </li> -<li><p class="first">問題2:ゲーム開発用の Framework が無い</p> +<li><p class="first"><span class="text-maroon">問題2</span> : <span class="text-underline">ゲーム開発用の Framework が無い</span></p> </li> </ul> -<p>実験期間の大半を Cell の勉強に費やし、 +<p>実験期間の大半を Cell の勉強に費やさねばならず、 開発されるゲームのレベルが例年一定以上にならない</p> -<center> - ↓ -</center><p>Many Core Architecture を用いた並列プログラムの開発を -サポートするフレームワーク「 <span class="red">Fine Grain Task Manager</span> 」を提案する</p> </div> <div class="slide" id="id2"> <h1>研究目的</h1> -<ul class="simple"> -<li>学生実験で PS3Linux を用いてゲーム開発を行っている<ul> -<li>Cell プログラミングが難しい<ul> -<li>並列実行のためのデータ、コードの分割</li> -<li>Cell 仕様 (DMA、アライメント、etc...)</li> -</ul> +<p>Many Core Architecture を用いた並列プログラムの開発をサポートするフレームワーク <span class="text-maroon">Fine Grain Task Manager</span> を提案する</p> +<ul> +<li><p class="first">動作環境</p> +<p>Mac OS X、Linux、PS3(Cell)</p> +</li> +<li><p class="first">Fine Grain Task の単位</p> +<p>サブルーチンまたは関数</p> </li> -<li>毎回 Cell の勉強からしないと始めないといけないので -ゲームプログラムのレベルが一定以上にならない</li> -<li>ゲーム開発用のフレームワークが無い</li> -</ul> +<li><p class="first">Task Manager を用いた開発行程</p> +<ol class="arabic simple"> +<li>逐次型プログラム</li> +<li>データやコードを分割したプログラム</li> +<li>並列に動かすプログラム</li> +</ol> +<p>各段階で信頼性を確保しながら開発を進める</p> </li> -<li>本研究では、Cell のような Many Core Architecture を用いた、 -並列プログラムの開発をサポートするフレームワークとして、 -Fine Grain Task Manager を設計する</li> -<li>Task Manager を用いた開発行程<ol class="arabic"> -<li>逐次型プログラム</li> -<li>データやコードを分割したプログラム(シーケンシャルに動く)</li> -<li>並列実行プログラム</li> -</ol> -</li> -<li>各ステップで信頼性を確かめながら開発を行っていく</li> -<li>Task Manager を用いて、PS3 ゲーム開発用フレームワークとして Cerium を開発する</li> +</ul> +</div> +<div class="slide" id="con-t"> +<h1>研究目的 (Con't)</h1> +<dl class="docutils"> +<dt><strong>Cerium</strong></dt> +<dd>Task Manager を用いた、PS3ゲーム開発用フレームワーク</dd> +</dl> +<p>Cerium は 3 つの機能で構成されている</p> +<ul class="simple"> +<li>独自の <span class="text-maroon">Rendering Engine</span></li> +<li>ゲームに登場するオブジェクトやルールなど、ゲームを構成する要素を +木構造として持つ <span class="text-maroon">Scene Graph</span></li> +<li>Rendering Engine や Scene Graph の処理単位を Task とし、複数の Core へ +割り振りを行うカーネル <span class="text-maroon">TaskManager</span></li> </ul> </div> <div class="slide" id="id3"> -<h1>作業報告</h1> +<h1>発表の流れ</h1> +<ul class="simple"> +<li>Cell アーキテクチャの概要</li> +<li>Many Core プログラミングの特徴</li> +<li>Task Manager の実装</li> +<li>Task Manager を用いた並列プログラム</li> +<li>Cerium</li> +<li>Cerium を用いたゲーム</li> +<li>まとめと今後の課題</li> +</ul> +</div> +<div class="slide" id="cell"> +<h1>Cell アーキテクチャの概要</h1> <ul class="simple"> -<li>修論事務提出</li> -<li>SceneGraph<ul> -<li>allExecute</li> +<li><span class="text-big">Cell アーキテクチャの概要</span></li> +<li><span class="text-silver">Many Core プログラミングの特徴</span></li> +<li><span class="text-silver">Task Manager の実装</span></li> +<li><span class="text-silver">Task Manager を用いた並列プログラム</span></li> +<li><span class="text-silver">Cerium</span></li> +<li><span class="text-silver">Cerium を用いたゲーム</span></li> +<li><span class="text-silver">まとめと今後の課題</span></li> +</ul> +</div> +<div class="slide" id="cell-broadband-engine"> +<h1>Cell Broadband Engine</h1> +<div align="center" class="align-center"><img alt="images/cell_arch.jpg" class="align-center" src="images/cell_arch.jpg" style="width: 280px;" /></div> +<ul class="simple"> +<li>1個の PPE と 8 個の SPE がリングバスで構成されている<ul> +<li>Linux 側から使える SPE は 6 個</li> </ul> </li> -<li>Camera</li> -</ul> -</div> -<div class="slide" id="scenegraph"> -<h1>SceneGraph</h1> -<p>allExecute で一つずつコピーしていく</p> -<ul class="simple"> -<li>remove flag がついた奴はコピーしない</li> -<li>今の実装だと親消すと子も全滅<ul> -<li>選べてもいいし、ユーザが自分で付け替えるのは。。。</li> +<li>SPE は <span class="text-maroon">256KB</span> の Local Store (LS) を持つ</li> +<li>SPE からメインメモリへは直接アクセスできない<ul> +<li>SPE が持つ MFC (Memory Flow Controller) へ +<span class="text-maroon">DMA 命令</span> を送ることで行う</li> </ul> </li> </ul> </div> -<div class="slide" id="camera"> -<h1>Camera</h1> -<p>それっぽい動き</p> +<div class="slide" id="id4"> +<h1>Cell の基本機能</h1> +<ul> +<li><p class="first"><span class="text-maroon">DMA (Direct Memory Access)</span></p> +<p>メインメモリと LS 間でデータが転送される</p> +<p>DMA 転送を行うにはいくつか条件がある</p> +<ul class="simple"> +<li>データサイズは 16 バイトの倍数</li> +<li>転送元と転送先のアドレスが 16 バイト境界に揃えられている</li> +</ul> +</li> +<li><p class="first"><span class="text-maroon">Mailbox</span></p> +<p>SPE の MFC 内にある FIFO キュー</p> +<p>PPE と SPE 間で 32 ビットメッセージの交換に用いられる</p> +<p>キューは 3 種類</p> +<ul class="simple"> +<li>SPU Inbound Mailbox : PPE → SPE</li> +<li>SPU Outbound Mailbox : SPE → PPE</li> +<li>SPU Outbound interrupt Mailbox : SPE → PPE (割り込み)</li> +</ul> +</li> +</ul> +</div> +<div class="slide" id="many-core"> +<h1>Many Core プログラミングの特徴</h1> +<ul class="simple"> +<li><span class="text-silver">Cell アーキテクチャの概要</span></li> +<li><span class="text-big">Many Core プログラミングの特徴</span></li> +<li><span class="text-silver">Task Manager の実装</span></li> +<li><span class="text-silver">Task Manager を用いた並列プログラム</span></li> +<li><span class="text-silver">Cerium</span></li> +<li><span class="text-silver">Cerium を用いたゲーム</span></li> +<li><span class="text-silver">まとめと今後の課題</span></li> +</ul> +</div> +<div class="slide" id="id5"> +<h1>定常的な並列度の必要性</h1> +<dl class="docutils"> +<dt><strong>Amdahl 則</strong></dt> +<dd>元のプログラムの並列化率が低ければ、その性能を生かすことは出来ない</dd> +</dl> +<div align="center" class="align-center"><img alt="images/amdahl.jpg" class="align-center" src="images/amdahl.jpg" style="width: 360px;" /></div> +<div align="center" style="font-size: large;"> + 6 CPU を使っても、プログラムの並列化率が 8 割程度では<br/> + 3倍程度の性能向上しか得られない +</div><p>Amdahl 則より、恒常的に並列プログラムの並列度を維持する必要がある</p> </div> </div> </body>
--- a/presen/presen.rst Sat Feb 14 13:54:55 2009 +0900 +++ b/presen/presen.rst Sat Feb 14 19:40:02 2009 +0900 @@ -1,4 +1,5 @@ -.. include:: <s5defs.txt> +.. include:: s5defs.txt +.. include:: <mmlalias.txt> =========================================== Cell 用の Fine-Grain Task Manager の実装 @@ -14,14 +15,13 @@ **琉球大学 理工学研究科 情報工学専攻 並列信頼研究室** -研究の背景と目的 +研究の背景 =================== -現在、学生実験で PS3Linux を用いてゲーム開発を行っている +現在、学生実験で PS3Linux を用いてゲーム開発を行っているが、 +学生には困難であることがわかってきている -**しかし、学生には困難!** - -+ 問題1:Cell アーキテクチャプログラミング ++ :maroon:`問題1` : :underline:`Cell アーキテクチャプログラミング` + Many Core による並列プログラミング @@ -29,73 +29,137 @@ + Cell の仕様 (DMA、データのアライメント、etc..) -+ 問題2:ゲーム開発用の Framework が無い ++ :maroon:`問題2` : :underline:`ゲーム開発用の Framework が無い` + +実験期間の大半を Cell の勉強に費やさねばならず、 +開発されるゲームのレベルが例年一定以上にならない + +研究目的 +============ + +Many Core Architecture を用いた並列プログラムの開発をサポートするフレームワーク :maroon:`Fine Grain Task Manager` を提案する + +- 動作環境 + + Mac OS X、Linux、PS3(Cell) + +- Fine Grain Task の単位 + + サブルーチンまたは関数 + +- Task Manager を用いた開発行程 + + 1. 逐次型プログラム + 2. データやコードを分割したプログラム + 3. 並列に動かすプログラム + + 各段階で信頼性を確保しながら開発を進める + + +研究目的 (Con't) +================== + +**Cerium** + Task Manager を用いた、PS3ゲーム開発用フレームワーク + +Cerium は 3 つの機能で構成されている + +- 独自の :maroon:`Rendering Engine` +- ゲームに登場するオブジェクトやルールなど、ゲームを構成する要素を + 木構造として持つ :maroon:`Scene Graph` +- Rendering Engine や Scene Graph の処理単位を Task とし、複数の Core へ + 割り振りを行うカーネル :maroon:`TaskManager` + +発表の流れ +====================== + +- Cell アーキテクチャの概要 +- Many Core プログラミングの特徴 +- Task Manager の実装 +- Task Manager を用いた並列プログラム +- Cerium +- Cerium を用いたゲーム +- まとめと今後の課題 + +Cell アーキテクチャの概要 +=========================== + +- :big:`Cell アーキテクチャの概要` +- :silver:`Many Core プログラミングの特徴` +- :silver:`Task Manager の実装` +- :silver:`Task Manager を用いた並列プログラム` +- :silver:`Cerium` +- :silver:`Cerium を用いたゲーム` +- :silver:`まとめと今後の課題` -実験期間の大半を Cell の勉強に費やし、 -開発されるゲームのレベルが例年一定以上にならない +Cell Broadband Engine +======================== + +.. image:: images/cell_arch.jpg + :align: center + :width: 280px + +- 1個の PPE と 8 個の SPE がリングバスで構成されている + + - Linux 側から使える SPE は 6 個 + +- SPE は :maroon:`256KB` の Local Store (LS) を持つ +- SPE からメインメモリへは直接アクセスできない + + - SPE が持つ MFC (Memory Flow Controller) へ + :maroon:`DMA 命令` を送ることで行う + +Cell の基本機能 +======================= + +- :maroon:`DMA (Direct Memory Access)` + + メインメモリと LS 間でデータが転送される + + DMA 転送を行うにはいくつか条件がある + + - データサイズは 16 バイトの倍数 + - 転送元と転送先のアドレスが 16 バイト境界に揃えられている + +- :maroon:`Mailbox` + + SPE の MFC 内にある FIFO キュー + + PPE と SPE 間で 32 ビットメッセージの交換に用いられる + + キューは 3 種類 + + - SPU Inbound Mailbox : PPE |rightarrow| SPE + - SPU Outbound Mailbox : SPE |rightarrow| PPE + - SPU Outbound interrupt Mailbox : SPE |rightarrow| PPE (割り込み) + +Many Core プログラミングの特徴 +================================ + +- :silver:`Cell アーキテクチャの概要` +- :big:`Many Core プログラミングの特徴` +- :silver:`Task Manager の実装` +- :silver:`Task Manager を用いた並列プログラム` +- :silver:`Cerium` +- :silver:`Cerium を用いたゲーム` +- :silver:`まとめと今後の課題` + + +定常的な並列度の必要性 +======================== + +**Amdahl 則** + 元のプログラムの並列化率が低ければ、その性能を生かすことは出来ない + +.. image:: images/amdahl.jpg + :align: center + :width: 360px .. raw:: html - <center> - ↓ - </center> - -Many Core Architecture を用いた並列プログラムの開発を -サポートするフレームワーク「 :red:`Fine Grain Task Manager` 」を提案する - -研究目的 -============== - -+ 学生実験で PS3Linux を用いてゲーム開発を行っている - - + Cell プログラミングが難しい - - + 並列実行のためのデータ、コードの分割 - + Cell 仕様 (DMA、アライメント、etc...) - - + 毎回 Cell の勉強からしないと始めないといけないので - ゲームプログラムのレベルが一定以上にならない - - + ゲーム開発用のフレームワークが無い - -+ 本研究では、Cell のような Many Core Architecture を用いた、 - 並列プログラムの開発をサポートするフレームワークとして、 - Fine Grain Task Manager を設計する -+ Task Manager を用いた開発行程 - - 1. 逐次型プログラム - 2. データやコードを分割したプログラム(シーケンシャルに動く) - 3. 並列実行プログラム + <div align="center" style="font-size: large;"> + 6 CPU を使っても、プログラムの並列化率が 8 割程度では<br/> + 3倍程度の性能向上しか得られない + </div> -+ 各ステップで信頼性を確かめながら開発を行っていく - -+ Task Manager を用いて、PS3 ゲーム開発用フレームワークとして Cerium を開発する - - -作業報告 -====================== - -- 修論事務提出 -- SceneGraph - - - allExecute - -- Camera - - -SceneGraph -================= - -allExecute で一つずつコピーしていく - -- remove flag がついた奴はコピーしない -- 今の実装だと親消すと子も全滅 - - - 選べてもいいし、ユーザが自分で付け替えるのは。。。 - -Camera -================= - -それっぽい動き - - +Amdahl 則より、恒常的に並列プログラムの並列度を維持する必要がある
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/s5defs.txt Sat Feb 14 19:40:02 2009 +0900 @@ -0,0 +1,86 @@ +.. Definitions of interpreted text roles (classes) for S5/HTML data. +.. This data file has been placed in the public domain. + +.. Colours + ======= + +.. role:: black + :class: text-black +.. role:: gray + :class: text-gray +.. role:: silver + :class: text-silver +.. role:: white + :class: text-white + +.. role:: maroon + :class: text-maroon +.. role:: red + :class: text-red +.. role:: magenta + :class: text-magenta +.. role:: fuchsia + :class: text-fuchsia +.. role:: pink + :class: text-pink +.. role:: orange + :class: text-orange +.. role:: yellow + :class: text-yellow +.. role:: lime + :class: text-lime +.. role:: green + :class: text-green +.. role:: olive + :class: text-olive +.. role:: teal + :class: text-teal +.. role:: cyan + :class: text-cyan +.. role:: aqua + :class: text-aqua +.. role:: blue + :class: text-blue +.. role:: navy + :class: text-navy +.. role:: purple + :class: text-purple + + +.. Text Sizes + ========== + +.. role:: huge +.. role:: big + :class: text-big +.. role:: small +.. role:: tiny + + +.. Display in Slides (Presentation Mode) Only + ========================================== + +.. role:: slide + :class: slide-display + +.. role:: underline + :class: text-underline + + +.. Display in Outline Mode Only + ============================ + +.. role:: outline + + +.. Display in Print Only + ===================== + +.. role:: print + + +.. Incremental Display + =================== + +.. role:: incremental +.. default-role:: incremental
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/ui/default/gongo.css Sat Feb 14 19:40:02 2009 +0900 @@ -0,0 +1,17 @@ +@charset "UTF-8"; + +span.text-red {color: red; } +span.text-silver {color: #E0E0E0; } /* 本当は #C0C0C0 */ +span.text-maroon {color: maroon; } +span.text-orange {color: orange; } +span.text-lime {color: lime; } +span.text-cyan {color: cyan; } +span.text-aqua {color: aqua; } +span.text-blue {color: blue; } +span.text-navy {color: navy; } +span.text-purple {color: purple; } +span.text-teal {color: teal; } +span.text-big {font-size: xx-large; } +span.text-underline {border-bottom: solid 2px black; } + +* {font-family: Osaka, 'MS Pゴシック';} \ No newline at end of file
--- a/presen/ui/default/print.css Sat Feb 14 13:54:55 2009 +0900 +++ b/presen/ui/default/print.css Sat Feb 14 19:40:02 2009 +0900 @@ -1,1 +1,1 @@ -/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */ .slide, ul {page-break-inside: avoid; visibility: visible !important;} h1 {page-break-after: avoid;} body {font-size: 12pt; background: white;} * {color: black;} #slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;} #slide0 h3 {margin: 0; padding: 0;} #slide0 h4 {margin: 0 0 0.5em; padding: 0;} #slide0 {margin-bottom: 3em;} h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;} .extra {background: transparent !important;} div.extra, pre.extra, .example {font-size: 10pt; color: #333;} ul.extra a {font-weight: bold;} p.example {display: none;} #header {display: none;} #footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;} #footer h2, #controls {display: none;} /* The following rule keeps the layout stuff out of print. Remove at your own risk! */ .layout, .layout * {display: none !important;} \ No newline at end of file +/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */ .slide, ul {page-break-inside: avoid; visibility: visible !important;} h1 {page-break-after: avoid;} body {font-size: 12pt; background: white;} * {color: black;} #slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;} #slide0 h3 {margin: 0; padding: 0;} #slide0 h4 {margin: 0 0 0.5em; padding: 0;} #slide0 {margin-bottom: 3em;} h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;} .extra {background: transparent !important;} div.extra, pre.extra, .example {font-size: 10pt; color: #333;} ul.extra a {font-weight: bold;} p.example {display: none;} #header {display: none;} #footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;} #footer h2, #controls {display: none;} /* The following rule keeps the layout stuff out of print. Remove at your own risk! */ .layout, .layout * {display: none !important;} \ No newline at end of file
--- a/presen/ui/default/slides.css Sat Feb 14 13:54:55 2009 +0900 +++ b/presen/ui/default/slides.css Sat Feb 14 19:40:02 2009 +0900 @@ -1,3 +1,4 @@ @import url(s5-core.css); /* required to make the slide show run at all */ @import url(framing.css); /* sets basic placement and size of slide components */ -@import url(pretty.css); /* stuff that makes the slides look better than blah */ \ No newline at end of file +@import url(pretty.css); /* stuff that makes the slides look better than blah */ +@import url(gongo.css); /* by gongo */ \ No newline at end of file