view document/presentation/semi09_01_16.html @ 0:99a6512a8253

moving from firefly
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Wed, 28 Oct 2009 20:12:40 +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">

<head>
<title>ゼミ資料 09/01/16</title>
<!-- metadata -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<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>
</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>[date:09/01/16]</h1>
<h2>並列プログラミングにおけるテストルーチンによる信頼性の向上</h2>
</div>

</div>


<div class="presentation">

<div class="slide">
<h1>並列プログラミングにおける<br>テストルーチンによる信頼性の向上</h1>
<h3>小林 佑亮</h3>
<h4>琉球大学 工学部 情報工学科</h4>
<h4>No.055722G</h4>
</div>


<div class="slide">
<h1>研究背景・目的</h1>
<ul>
<font size="4">
<li>当研究室では学生実験において、PlayStation3を用いた並列的なゲームプログラムの作成を行っている。</li>
<li>PlayStation3にはCellと呼ばれるCPUが搭載されており、作成したプログラムはCellに最適化させる必要がある。</li>
<li>そこで使用されるのが当研究室で開発したCeriumレンダリングエンジンである。</li>
<li>Ceriumには、Taskの管理やデータの転送などを行うTaskManager、オブジェクトのレンダリングを行うRenderingEngine、ゲームの場面(Scene)やルールをTree構造に格納したSceneGraphがある。</li>
<li>Ceriumを用いたプログラムにはTaskやSceneの概念、Cell上でのデータのやりとりなどがある為、期待された動作を保証するのは難しい。</li>
<br>
<li>本研究ではCppUnitを用いて、学生の作成したプログラム、およびCerium本体に対しての単体テストを行う。学生の作成したプログラムに対してはTask単位、Scene単位でのテストを行い、その動作を保証する。</li>
</font>
</ul>
</div>


<div class="slide">
<h1>TaskManagerとは</h1>
<font size="4">
TaskManagerは、Taskと呼ばれる分割された各プログラムを管理するライブラリである。 Task同士の依存関係を考慮しながらメモリ上にマッピングし、SPE上ではそのプログラムを DMA転送によりロードする。SPEは256KBという小さなデータ量しか持てず、 大量のプログラムを全てSPE上に置いておく事は出来ない可能性がある。 そのため、必要な時に必要な実行プログラムだけがSPE上にロードされている事が望ましい。(図1)

<img src="image/TaskManager.jpg" width="30%" height="50%" alt="TaskManager"><br>
図1:TaskManager
</font>
</div>


<div class="slide">
<h1>SceneGraphとは</h1>
<font size="4">
ゲームの中の一つの場面(Scene)を構成するオブジェクトやその振る舞い、ゲームのルールの集合をSceneGraphとする。SceneGraphのノードは親子関係を持つTreeで構成される。(図2)
<table>
<tr>
<td><img src="image/SceneGraph.jpg" width="" height="" alt=" SceneGraph"></td>
<td>
<font size="3">
<ul>
<li>Vervatim:ポリゴンオブジェクトの頂点座標
<li>Texture:ポリゴンオブジェクトのテクスチャ座標
<li>TextureImage:テクスチャイメージ
<li>TransMatrix:ポリゴンオブジェクトの変換行列
<li>Coordinates:オブジェクトの座標
<li>Angle:オブジェクトの角度
<li>Move:自律的なオブジェクトの動き
<li>Collision:他のノードと衝突した時の動き
</ul>
</font>
</td>
</table>
図2:SceneGraph<br>
<br>
親子関係とは、親オブジェクトの回転や平行移動等の行列計算による頂点座標の変更が、子オブジェクトにも反映する関係の事である。これは子に対してスタックに積まれた親の変換行列をかけることで実現出来る。
</font>
</div>


<div class="slide">
<h1>Doing</h1>
<ul>
<li>Game_project/ps3/tree_dandy2のCeriumへの移行</li>
<font size="5">
Scene_Graphの適用<font color= red>_doing</font><br>
その他
</font>

<li>Test</li>
<font size="5">
1つのSceneだけを抜き出すテスト<br>
(まずは明らかにおかしい2面ボスシーンを)
</font>
</ul>
</div>


<div class="slide">
<h1>tree_dandy2</h1>
<ul>
<li>move.c</li>
<font size ="5">
<pre>
void Move()
...

switch (enemy[tekino].move) {
            case 0:
                enemy[tekino].x += enemy[tekino].sx;
                enemy[tekino].y += enemy[tekino].sy;
                break;
            case 1:
                enemy[tekino].x -= enemy[tekino].sx;
                enemy[tekino].y -= enemy[tekino].sy;
                break;
            case 2:
                enemy[tekino].sy -= 0.25;
                enemy[tekino].y += enemy[tekino].sy;
                break;
				...
</pre>
</font>
</ul>
</div>

</div>

</body>
</html>