view paper/introduciton.tex @ 9:df0056a7b95d

ひとまず完成
author gongo@gendarme.cr.ie.u-ryukyu.ac.jp
date Tue, 10 Feb 2009 14:06:39 +0900
parents 10f410903952
children
line wrap: on
line source

\chapter{序論}
\pagenumbering{arabic}

\section{研究背景と目的}

現在、学生実験にて家庭用ゲーム機を用いたゲーム開発を行っている。
過去に PlayStation や PlayStation 2、Game Boy Advance を用いており、
近年では PlayStation 3 (以後 PS3) で動作するゲーム開発を行っている。

PS3 には Fedora \cite{fedora} や Yellow Dog Linux \cite{ydl} といった
Linux OS をインストールできるので、
学生が今まで学んできた C や C++ といったプログラム言語を用いて
Linux 上でプログラミングすることが可能となっている。
しかし、PS3 のアーキテクチャである Cell は、複数の SPE を使用する
並列プログラミングが求められている。
逐次型プログラミングを学び、並列プログラミングの経験が浅い学生にとって、
このような Cell アーキテクチャを理解した上でゲームを実装することは困難である。
また、制作したゲームを他のゲーム機に移植したり、過去に制作したゲームを
PS3 に移植するといった場合、アーキテクチャ間の差を埋めるためプログラムを
大幅に書き換える必要がある。

この様な問題があることから、例年、学生実験の期間である約3ヶ月のうちの大半を
アーキテクチャの勉強にあて、残りの期間内でゲーム開発を行っている。
そのため、制作されたゲームの完成度が一定以上にならない。
また、現在 PS3 ゲーム開発用フレームワークが存在しないことで、学生が
一からプログラミングしていく必要がある。

そこで我々は、Cell のような Many Core Architecture を用いた、
並列プログラムの開発をサポートするフレームワークとして
Fine Grain Task Manager を提案する。

この TaskManager を用いた開発行程は以下の様になる。

\begin{enumerate}
\item 逐次型プログラム \label{path1}
\item データやコードを分割したプログラム \label{path2}
\item 並列に動かすプログラム \label{path3}
\end{enumerate}

これらのステップ毎にプログラムの仕様やアルゴリズムを確かめ、
テストやデバッグを行い信頼性を確保しながら開発を進める。

本研究での Fine Grain Task の単位は、サブルーチンまたは関数とする。

現在 TaskManager は PS3、Linux、MacOSX といった複数の環境で動作するので、
学生が自分のマシンで開発行程 \ref{path1} や \ref{path2} を行い、
最終的に開発行程 \ref{path3} を PS3 上で実行する、ということが可能となる。

この TaskManager を用いたゲーム開発フレームワークが Cerium である。
Cerium は、オブジェクトのデータやその振る舞い、またはゲームのルールなど
ゲームを構成する場面(シーン)を木構造で持つ Scene Graph、
OSMesa に代表される Rendering Engine、そしてそれらの実行単位を Task とし、
動的に全てのコアが動作する様な割り振りを行うカーネル TaskManager で
構成されている。

\section{論文の構成}
第\ref{chapter:cell}章では Cell の詳細な仕様と、
使用できる基本的な機能の説明を述べる。

第\ref{chapter:manycore}章では Many Core Architecture 上での
プログラミングの要素や難しさを考察し、並列プログラムの処理能力や
信頼性を確保するための開発行程を紹介する。

第\ref{chapter:taskmanager}章では Task Manager の実装と User API を述べ、
TaskManager を用いた基本的な並列プログラムを紹介する。

第\ref{chapter:cerium}章では Cerium を構成する機能の紹介と実装を述べる。
また、実際に学生に制作してもらったゲームを紹介し、
その有用性を述べる。

%学生からユーザとしての
%Cerium の使用の評価を紹介する。

第\ref{chapter:compare}章では TaskManager や Cerium と同じく、
並列プログラミングのフレームワークである OpenCL や 、Cell 上で動作する
レンダリングエンジンである Gallium を紹介し、それらとの比較を行う。

第\ref{chapter:conclusion}章においてまとめと今後の課題とする。