diff presen/presen.rst @ 26:252d2d951d7e

add Task Manager
author gongo@gendarme.cr.ie.u-ryukyu.ac.jp
date Sun, 15 Feb 2009 11:44:57 +0900
parents de8ba175cc9b
children 90128e098120
line wrap: on
line diff
--- a/presen/presen.rst	Sat Feb 14 23:53:02 2009 +0900
+++ b/presen/presen.rst	Sun Feb 15 11:44:57 2009 +0900
@@ -15,18 +15,6 @@
   **琉球大学 理工学研究科 情報工学専攻 並列信頼研究室**
 
 
-発表の流れ
-======================
-
-- 研究の背景と目的
-- Cell アーキテクチャの概要
-- Many Core プログラミングの特徴
-- Task Manager の実装
-- Task Manager を用いた並列プログラム
-- Cerium
-- Cerium を用いたゲーム
-- まとめと今後の課題
-
 
 研究の背景
 ===================
@@ -62,9 +50,9 @@
 
 - Task Manager を用いた開発行程
 
-  1. 逐次型プログラム (MacOSX、Linux)
-  #. データやコードを分割したプログラム (MacOSX、Linux)
-  #. 並列に動かすプログラム (Cell)
+  1. 逐次型プログラム
+  #. データやコードを分割したプログラム
+  #. 並列に動かすプログラム
 
   各段階で信頼性を確保しながら開発を進める
 
@@ -83,17 +71,29 @@
 - Rendering Engine や Scene Graph の処理単位を Task とし、複数の Core へ
   割り振りを行うカーネル :maroon:`TaskManager`
 
+学生が Cell アーキテクチャを理解しながら、
+期間内でゲーム開発が行える、シンプルな
+マルチタスクフレームワークを目指す
+
+
+発表の流れ
+======================
+
+- Cell アーキテクチャの概要
+- Many Core プログラミングの特徴
+- Task Manager の実装、例題
+- Cerium
+- 比較
+- まとめと今後の課題
 
 Cell アーキテクチャの概要
 ===========================
 
-- :silver:`研究の背景と目的`
 - :big:`Cell アーキテクチャの概要`
 - :silver:`Many Core プログラミングの特徴`
 - :silver:`Task Manager の実装`
-- :silver:`Task Manager を用いた並列プログラム`
 - :silver:`Cerium`
-- :silver:`Cerium を用いたゲーム`
+- :silver:`比較`
 - :silver:`まとめと今後の課題`
 
 Cell Broadband Engine
@@ -113,23 +113,25 @@
   - SPE が持つ MFC (Memory Flow Controller) へ
     :maroon:`DMA 命令` を送ることで行う
 
+- 128 ビットレジスタを用いて SIMD (Single Instruction Multiple Data) が可能
+
 Cell の基本機能
 =======================
 
-- :maroon:`DMA (Direct Memory Access)`
+**DMA**
 
-  メインメモリと LS 間でデータが転送される
+- メインメモリと LS 間でデータが転送される
 
-  DMA 転送を行うにはいくつか条件がある
+- DMA 転送を行うにはいくつか条件がある
 
   - データサイズは 16 バイトの倍数
   - 転送元と転送先のアドレスが 16 バイト境界に揃えられている
 
-- :maroon:`Mailbox`
+**Mailbox**
 
-  SPE の MFC 内にある FIFO キュー
+- SPE の MFC 内にある FIFO キュー
   
-  PPE と SPE 間で 32 ビットメッセージの交換に用いられる
+- PPE と SPE 間で 32 ビットメッセージの交換に用いられる
 
   キューは 3 種類
 
@@ -140,13 +142,11 @@
 Many Core プログラミングの特徴
 ================================
 
-- :silver:`研究の背景と目的`
 - :silver:`Cell アーキテクチャの概要`
 - :big:`Many Core プログラミングの特徴`
 - :silver:`Task Manager の実装`
-- :silver:`Task Manager を用いた並列プログラム`
 - :silver:`Cerium`
-- :silver:`Cerium を用いたゲーム`
+- :silver:`比較`
 - :silver:`まとめと今後の課題`
 
 
@@ -163,7 +163,7 @@
 .. raw:: html
 
   <div align="center" style="font-size: large;">
-    6 CPU を使っても、プログラムの並列化率が 8 割程度では<br/>
+    6 CPU を使っても、プログラムの並列化率が 8 割程度では<br />
     3倍程度の性能向上しか得られない
   </div>
 
@@ -234,14 +234,75 @@
 並列プログラムの開発行程
 ==========================
 
-並列プログラミングでは、以下の段階において、それぞれ実装とテストを行う。
+以下の段階において、それぞれ実装とテストを行う
 
 1. C によるシーケンシャルな実装
+
+- アルゴリズムの確認
+
 2. 並列実行を考慮したデータ構造を持つ実装
-3. コードを分割し、シーケンシャルに実行する実装
+
+- データ構造が変化しても 1. と結果が同じになるかを確認
+
+3. コードを分割し、それらをシーケンシャルに実行する実装
+
+- この段階まではアーキテクチャに依存しない
+- 二分法によるデバッグが可能
+
 4. 分割したコードを並列実行する実装
 
 
+Task Manager の実装
+================================
+
+- :silver:`Cell アーキテクチャの概要`
+- :silver:`Many Core プログラミングの特徴`
+- :big:`Task Manager の実装`
+- :silver:`Cerium`
+- :silver:`比較`
+- :silver:`まとめと今後の課題`
+
+
+Task Manager
+================
+
+Task と呼ばれる、分割された各プログラムを管理する
+
+- Task はサブルーチンもしくは関数
+- Task 同士の依存関係を考慮
+- 実行状態になった Task を各 SPE に割り振る
+
+.. raw:: html
+
+  <div align="center">
+
+.. class:: small
+
+  Task Manager User API
+
+  =============  ============================================
+  create_task     Task の生成
+  allocate        実行環境のアライメントを考慮した allocator
+  =============  ============================================
+
+  Task API
+
+  =============  ==================================================
+  add_inData      Task の入力データの設定 (入力元アドレス、データサイズ)
+  add_outData     Task の出力データの設定 (出力先アドレス、データサイズ)
+  add_param       Task のパラメータ (32bits)
+  wait_for        Task の依存関係の考慮 
+  set_cpu         Task を実行する CPU の設定
+  =============  ==================================================
+
+.. raw:: html
+
+  </div>
+
+
+
+
+
 比較 - Gallium
 ===========================
 
@@ -306,6 +367,11 @@
    :align: center
    :width: 350px
 
+
+.. raw:: html
+
+  <div align="center">
+
 =====================  ===============
  Gallium (SPE 6 個)     5.4 FPS
 ---------------------  ---------------
@@ -313,6 +379,10 @@
 ---------------------  ---------------
  Cerium (SPE 6 個)     :maroon:`9.5 FPS`
 =====================  ===============
+
+.. raw:: html
+
+  </div>
   
 
 比較 - OpenGL
@@ -328,10 +398,10 @@
 .. raw:: html
 
   <div align="center" style="color: maroon; font-size: large;">
-    // 線分3つ指定し、三角形を生成<br/>
-    glVertex3d(x1, y1, z1);<br/>
-    glVertex3d(x2, y2, z2);<br/>
-    glVertex3d(x3, y3, z3);<br/>
+    // 線分3つ指定し、三角形を生成<br />
+    glVertex3d(x1, y1, z1);<br />
+    glVertex3d(x2, y2, z2);<br />
+    glVertex3d(x3, y3, z3);<br />
   </div>
 
 - OpenGL での親子関係の表現
@@ -396,4 +466,5 @@
 
 Task Manager は :maroon:`OpenCL による実装の一つ` と言える
 
-- 学生による Cell プログラミングフレームワークとしては Task Manager が扱いやすい
+- 学生が Cell アーキテクチャの理解、及び Cell プログラミングを行う際は
+  Task Manager が適している