view document/presentation/semi09_10_20.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/10/20</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/10/20]</h1>
<h2>発表資料</h2>
</div>

</div>



<div class="presentation">


<div class="slide">
<h1>Cell を用いた<br>
並列 Programming の為の<br>
テスト手法の提案</h1>
<h3>小林 佑亮</h3>
<h4>琉球大学 理工学研究科 情報工学専攻</h4>
<h4>No.098581D</h4>
</div>


<div class="slide">
<h1>研究背景・目的</h1>

<font size="5"><ul>
<li>近年、CPU の性能向上はクロックの限界や発熱問題などからマルチコア化による
性能向上が図られている</li>
<li>マルチコア CPU の中でも、PlayStation3 に搭載されている Cell と呼ばれる CPU は、
1つの PPE と8つの  SPE をもつヘテロジニアス型のマルチコア CPU である</li>
<li>各 SPE は 256KB の LocalStore(LS) を持ち、
必要に応じて MainMemory 上の Data を LS に Load して実行する</li>
<li>並列 Programming における計算の順序性と Cell 独自の仕様により、
Cell 上での Program の Debug は通常の Program に比べて困難である</li>
</ul></font>
</div>


<div class="slide">
<h1>研究背景・目的</h1>

<font size="5"><ul>
<li>本研究では Cell 上で動く Program の正常な動作を保証するテスト手法を提案する</li>
<li>Program の順序性と PPE, SPE 上での Data 管理の面からテスト手法を考える</li>
<li>当研究室で開発した Cerium というPlayStation3 上で動作する Engine を用いてテストを行う</li>
<li>Cerium にはプログラムを Task 単位で Cell の各アーキテクチャに処理させる TaskManager と
 Object をScene 毎に管理する SceneGraph、Object の描画をする RenderingEngine がある</li>
</ul></font>
</div>

<div class="slide">
<h1>DONE</h1>
<ul>
<li>SnowLeopard 上での Cerium 開発環境</li>
<li>Dandy のタイトル画面追加</li>
</ul>
</div>


<div class="slide">
<h1>SnowLeopard 上でのCerium 開発環境</h1>
<h2>GCC, G++</h2>
<ul>
<li>default ではgcc-4.2</li>
<li>gcc-4.2 だと cast 等で error</li>
<pre>
  $sudo mv /usr/bin/gcc /usr/bin/gcc4.2
  $sudo mv /usr/bin/g++ /usr/bin/g++4.2
  $sudo ln -s /usr/bin/gcc-4.0 /usr/bin/gcc
  $sudo ln -s /usr/bin/g++-4.0 /usr/bin/g++
</pre>
</ul>
</div>


<div class="slide">
<h1>SnowLeopard 上でのCerium 開発環境</h1>
<h2>SDL</h2>
<ul>
<li>SDL-1.2.13 の Option を変えて Compile</li>
<pre>
  $env CC='/usr/bin/gcc-4.0' CFLAGS='-isysroot 
  /Developer/SDKs/MacOSX10.5.sdk -arch i386'
  LDFLAGS='-arch i386' ./configure
  --prefix=/sw --without-x
  $make
  ...
</pre>
<li>うまく行かない…</li>
<li>SDL-1.3 がSnowLeopard で動くらしい</li>
<li>…と思ったら、10月6日に SnowLeopard 対応の SDL-1.2.14 公開</li>
</ul>
</div>


<div class="slide">
<h1>DOING</h1>
<ul>
<li>汎用的な collision 関数の実装</li>
<li>爆発アニメーションの実装</li>
<li>Blender file の作成</li>
</ul>
</div>


<div class="slide">
<h1>汎用的な collision 関数の実装</h1>
<font size="5"><pre>
static bool
collision_judge(SceneGraphIteratorPtr it, SceneGraphPtr myself,
                int obj_id, int my_radius, int enemy_radius)
{
  /* 自分と相手のx,y座標での距離と2点間の距離 */
  float x_distant, y_distant, distance;
  SceneGraphPtr enemy;

  for (; it->hasNext(obj_id);) {
    it->next(obj_id);
    enemy = it->get();

    x_distant = enemy->xyz[0] - myself->xyz[0];
    y_distant = enemy->xyz[1] - myself->xyz[1];

    /* hypotf で2点間の距離を求める */
    distance = hypotf(x_distant, y_distant);

    /* collision 判定 */
    if(distance < (my_radius+enemy_radius)) {
      return true;
    }
    return false;
  }
}
</pre></font>

</div>


<div class="slide">
<h1>爆発アニメーションの実装</h1>
<font size="5"><pre>
static void
blast_move(SceneGraphPtr node, int screen_w, int screen_h)
{
  if(node->sgid > BLAST8 && node->frame%blast_interval == 0) {
    SceneGraphPtr next_blast = sgroot->createSceneGraph(node->sgid-1);
    next_blast->frame = 1;
    next_blast->set_move_collision(blast_move, null_collision);
    node->addBrother(next_blast);
    node->remove();
  }
}
</pre></font>

</div>


<div class="slide">
<h1>TODO</h1>
<ul>
<li>PS3 上でテスト</li>
<li>引き続き Dandy の実装</li>
<li>example を用いたテスト</li>
</ul>
</div>



</div>
</body>
</html>