0
|
1 \chapter{序論}
|
|
2 \pagenumbering{arabic}
|
|
3
|
|
4 \section{研究背景と目的}
|
|
5
|
|
6 現在、学生実験にて家庭用ゲーム機を用いたゲーム開発を行っている。
|
|
7 過去に PlayStation や PlayStation 2、Game Boy Advance を用いており、
|
|
8 近年では PlayStation 3 (以後 PS3) で動作するゲーム開発を行っている。
|
|
9
|
|
10 PS3 には Fedora \cite{fedora} や Yellow Dog Linux \cite{ydl} といった
|
|
11 Linux OS をインストールできるので、
|
|
12 学生が今まで学んできた C や C++ といったプログラム言語を用いて
|
|
13 Linux 上でプログラミングすることが可能となっている。
|
|
14 しかし、PS3 のアーキテクチャである Cell は、複数の SPE を使用する
|
|
15 並列プログラミングが求められている。
|
|
16 逐次型プログラミングを学び、並列プログラミングの経験が浅い学生にとって、
|
|
17 このような Cell アーキテクチャを理解した上でゲームを実装することは困難である。
|
|
18 また、制作したゲームを他のゲーム機に移植したり、過去に制作したゲームを
|
|
19 PS3 に移植するといった場合、アーキテクチャ間の差を埋めるためプログラムを
|
|
20 大幅に書き換える必要がある。
|
|
21
|
|
22 この様な問題があることから、例年、学生実験の期間である約3ヶ月のうちの大半を
|
|
23 アーキテクチャの勉強にあて、残りの期間内でゲーム開発を行っている。
|
|
24 そのため、制作されたゲームの完成度が一定以上にならない。
|
|
25 また、現在 PS3 ゲーム開発用フレームワークが存在しないことで、学生が
|
|
26 一からプログラミングしていく必要がある。
|
|
27
|
|
28 そこで我々は、Cell のような Many Core Architecture を用いた、
|
|
29 並列プログラムの開発をサポートするフレームワークとして
|
|
30 Fine Grain Task Manager を提案する。
|
|
31
|
|
32 この TaskManager を用いた開発行程は以下の様になる。
|
|
33
|
|
34 \begin{enumerate}
|
|
35 \item 逐次型プログラム \label{path1}
|
|
36 \item データやコードを分割したプログラム \label{path2}
|
|
37 \item 並列に動かすプログラム \label{path3}
|
|
38 \end{enumerate}
|
|
39
|
|
40 これらのステップ毎にプログラムの仕様やアルゴリズムを確かめ、
|
|
41 テストやデバッグを行い信頼性を確保しながら開発を進める。
|
|
42
|
|
43 本研究での Fine Grain Task の単位は、サブルーチンまたは関数とする。
|
|
44
|
|
45 現在 TaskManager は PS3、Linux、MacOSX といった複数の環境で動作するので、
|
|
46 学生が自分のマシンで開発行程 \ref{path1} や \ref{path2} を行い、
|
|
47 最終的に開発行程 \ref{path3} を PS3 上で実行する、ということが可能となる。
|
|
48
|
|
49 この TaskManager を用いたゲーム開発フレームワークが Cerium である。
|
|
50 Cerium は、オブジェクトのデータやその振る舞い、またはゲームのルールなど
|
|
51 ゲームを構成する場面(シーン)を木構造で持つ Scene Graph、
|
|
52 OSMesa に代表される Rendering Engine、そしてそれらの実行単位を Task とし、
|
|
53 動的に全てのコアが動作する様な割り振りを行うカーネル TaskManager で
|
|
54 構成されている。
|
|
55
|
|
56 \section{論文の構成}
|
|
57 第\ref{chapter:cell}章では Cell の詳細な仕様と、
|
|
58 使用できる基本的な機能の説明を述べる。
|
|
59
|
|
60 第\ref{chapter:manycore}章では Many Core Architecture 上での
|
|
61 プログラミングの要素や難しさを考察し、並列プログラムの処理能力や
|
|
62 信頼性を確保するための開発行程を紹介する。
|
|
63
|
|
64 第\ref{chapter:taskmanager}章では Task Manager の実装と User API を述べ、
|
|
65 TaskManager を用いた基本的な並列プログラムを紹介する。
|
|
66
|
|
67 第\ref{chapter:cerium}章では Cerium を構成する機能の紹介と実装を述べる。
|
9
|
68 また、実際に学生に制作してもらったゲームを紹介し、
|
|
69 その有用性を述べる。
|
|
70
|
|
71 %学生からユーザとしての
|
|
72 %Cerium の使用の評価を紹介する。
|
0
|
73
|
|
74 第\ref{chapter:compare}章では TaskManager や Cerium と同じく、
|
|
75 並列プログラミングのフレームワークである OpenCL や 、Cell 上で動作する
|
|
76 レンダリングエンジンである Gallium を紹介し、それらとの比較を行う。
|
|
77
|
|
78 第\ref{chapter:conclusion}章においてまとめと今後の課題とする。
|