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)
Binary file presen/images/amdahl.jpg has changed
Binary file presen/images/cell_arch.graffle has changed
Binary file presen/images/cell_arch.jpg has changed
--- 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>
-  &darr;
-</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>
-    &darr;
-  </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