changeset 6:a46c6f313a0b

*** empty log message ***
author gongo
date Tue, 25 Mar 2008 11:28:28 +0900
parents 30bf38a518e8
children bd8574dedd1b
files cerium-manager.tex cerium-scene_graph.tex cerium_dev.tex compare.tex conclusion.tex figure/spurs-pipeline.bb figure/spurs-pipeline.graffle figure/spurs-pipeline.pdf figure/spurs_task.bb figure/spurs_task.graffle figure/spurs_task.pdf introduction.tex ps3.tex sigos.bib sigos.tex
diffstat 15 files changed, 141 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/cerium-manager.tex	Tue Mar 25 09:48:38 2008 +0900
+++ b/cerium-manager.tex	Tue Mar 25 11:28:28 2008 +0900
@@ -18,7 +18,7 @@
 
 現在実装されている Task Manager の API を \tabref{tab:manager-api} に示す。
 
-\begin{table}[b]
+\begin{table}[htbp]
   \caption{Task Manager API} \label{tab:manager-api}
   \hbox to\hsize{\hfil
   \begin{tabular}{r|l} \hline \hline
@@ -34,6 +34,7 @@
 
 {\small
 \begin{verbatim}
+
 int
 main(void)
 {
@@ -61,6 +62,7 @@
 
     return 0;
 }
+
 \end{verbatim}
 }
 
@@ -110,3 +112,29 @@
     \label{fig-manager-pipeline}
   \end{center}
 \end{figure}
+
+\subsection{SPURS}
+この Task Manager に似た研究として SPURS \cite{spurs} が挙げられる。
+
+SPURS は、閉じた並列分散と考えることができる Cell の環境で、
+いかに効率よく動作させるかということを考えたシステムである。
+
+Cerium のように SPE に入力データを与えるプログラムに関しては
+ほとんど同じ機能を持っている (\figref{fig-spurs-pipeline}) (\figref{fig-spurs-task}) 。
+
+
+\begin{figure}[tb]
+  \begin{center}
+    \includegraphics[scale=0.36]{figure/spurs-pipeline.pdf}
+    \caption{SPURS Pipeline}
+    \label{fig-spurs-pipeline}
+  \end{center}
+\end{figure}
+
+\begin{figure}[tb]
+  \begin{center}
+    \includegraphics[scale=0.36]{figure/spurs_task.pdf}
+    \caption{SPURS Task}
+    \label{fig-spurs-task}
+  \end{center}
+\end{figure}
--- a/cerium-scene_graph.tex	Tue Mar 25 09:48:38 2008 +0900
+++ b/cerium-scene_graph.tex	Tue Mar 25 11:28:28 2008 +0900
@@ -38,8 +38,7 @@
 計算が終わると、Gather で頂点を PolygonPack にまとめる。
 PolygonPack は光源の情報とテクスチャの情報、頂点の情報から構成される。
 
-%% PolygonPack の定義も載せるべき?
-
 今回は Scene Graph の作成に、オープンソースの 3D モデリングツールである
 Blender \cite{blender}  を用いる。Blender でオブジェクトを作成し、
 ポリゴン情報やテクスチャ情報が記述された xml ファイルを出力する。
+その xml ファイルを Rendering Engine が受け取って Polygon を生成する。
--- a/cerium_dev.tex	Tue Mar 25 09:48:38 2008 +0900
+++ b/cerium_dev.tex	Tue Mar 25 11:28:28 2008 +0900
@@ -1,5 +1,5 @@
 \section{開発過程}
-Cerium を作るために、以下の段階にそれぞれ実装とテストを行う。
+Cerium を用いた開発では、以下の段階にそれぞれ実装とテストを行う。
 
 \begin{enumerate}
   \item C によるシーケンシャルな実装 \label{list_dev_1}
--- a/compare.tex	Tue Mar 25 09:48:38 2008 +0900
+++ b/compare.tex	Tue Mar 25 11:28:28 2008 +0900
@@ -5,7 +5,7 @@
 今回、\figref{fig-cerium} で示した Task に対する CPU の割り振りは
 \tabref{tab:hyoka1} とする。
 
-\begin{table}[b]
+\begin{table}[htbp]
   \caption{Task の実行 CPU} \label{tab:hyoka1}
   \hbox to\hsize{\hfil
   \begin{tabular}{c|l} \hline \hline
@@ -19,7 +19,7 @@
 PPE/SPE に対するコンパイルの最適化レベル及びその時の実行 FPS を
 \tabref{tab:hyoka2} に示す。描画領域は 640x80 である。
 
-\begin{table}[b]
+\begin{table}[htbp]
   \caption{Cerium 実行速度 (640x80)} \label{tab:hyoka2}
   \hbox to\hsize{\hfil
   \begin{tabular}{cc|l} \hline \hline
@@ -35,7 +35,7 @@
 また、描画領域の大きさと実行速度は反比例すると考えると、
 1920x1080の時、OSMesa も合わせると \tabref{tab:hyoka3} のようになる。
 
-\begin{table}[b]
+\begin{table}[htbp]
   \caption{実行速度 (1920x1080)} \label{tab:hyoka3}
   \hbox to\hsize{\hfil
   \begin{tabular}{r|l|l} \hline \hline
@@ -52,6 +52,8 @@
 現在、DMA で SPE 上にプログラムをロードする機能を実装していないため、
 必要なプログラムを入れ替えることができない。
 そのため、現在は Renderer の Task だけを SPE 上にマッピングしてある。
+Cerium の描画領域の横幅が 640 に抑えてあるのも、上記の問題が原因で
+1920 pixel 分の Z Buffer を SPE 上に置くスペースが無いからである。
 オーバーレイ機能を導入するという手法もあるが、
 ロード中は SPE が止まってしまうため好ましくない。
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/conclusion.tex	Tue Mar 25 11:28:28 2008 +0900
@@ -0,0 +1,43 @@
+\section{まとめ}
+本研究では、Cell 上で動作する Task Manager を実装し、
+3D Graphics Renderer である Cerium を開発した。
+Cerium を用いることで、PlayStation 3 上という限られた環境だけでなく、
+Linux や Mac OS X でもテストやデバッグを行うことが出来る。
+
+また、 Task Manager の実装を進めれば、Cell 以外の
+Multi Core Architecture に対しても使用できると考えている。
+
+\section{今後の課題}
+
+\subsection{Scene Graph}
+カメラや光源、コントローラ等からの入力に対応するノードが未実装である
+
+また、ネットワークを管理するノードを実装すれば、
+Federated Linda \cite{fuchita} を用いた
+ネットワークゲーム開発も可能である。
+
+\subsection{Rendering}
+必要最低限の機能は実装しているが、ゲームとしては
+
+\begin{itemize}
+  \item Shading
+  \item Alpha blending
+\end{itemize}
+
+が欲しいところである。
+
+現在は描画時に Z Buffer を用いているが、Z sort を用いることにより、
+SPE 上に Z Buffer の領域は必要なくなる。
+Z sort とは、面に対してどちらが手前にあるかというのを判断し、
+おくにある面から描画していく手法である。
+
+\subsection{Task Manager}
+プログラムを SPE 上にロードする機能は必須である。
+
+このライブラリを学生が使用する場合、
+並列化のためのデータとコードの分割は、
+並列プログラミングの経験がない学生には難しいため、
+何らかのひな形を示す必要がある。
+
+現在は C++ で記述しているが、CbC に書き換えることで
+モデル検査を行うことができ、高い信頼性を得られる。
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/figure/spurs-pipeline.bb	Tue Mar 25 11:28:28 2008 +0900
@@ -0,0 +1,5 @@
+%%Title: ./spurs-pipeline.pdf
+%%Creator: ebb Version 0.5.2 (+ArtBox)
+%%BoundingBox: 0 0 551 205
+%%CreationDate: Tue Mar 25 11:56:24 2008
+
Binary file figure/spurs-pipeline.graffle has changed
Binary file figure/spurs-pipeline.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/figure/spurs_task.bb	Tue Mar 25 11:28:28 2008 +0900
@@ -0,0 +1,5 @@
+%%Title: ./spurs_task.pdf
+%%Creator: ebb Version 0.5.2 (+ArtBox)
+%%BoundingBox: 0 0 507 229
+%%CreationDate: Tue Mar 25 12:01:26 2008
+
Binary file figure/spurs_task.graffle has changed
Binary file figure/spurs_task.pdf has changed
--- a/introduction.tex	Tue Mar 25 09:48:38 2008 +0900
+++ b/introduction.tex	Tue Mar 25 11:28:28 2008 +0900
@@ -1,5 +0,0 @@
-\section{はじめに}
-%% シーケンシャルな実装ではマルチコアの力は引き出せないとか
-%% OSMesa はあれだから自分たちで作ったとか
-
-(続きます)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ps3.tex	Tue Mar 25 11:28:28 2008 +0900
@@ -0,0 +1,35 @@
+\section{PS3 上でのゲーム開発}
+PlayStation 3 に 搭載された Linux を用いてゲーム開発する。
+しかし、GPU (RSX) の詳細が一般には公開されていないため、
+ps3fb という Frame Buffer 上に 直接描画する。
+
+先行研究 \Cite{akira} では、レンダリングエンジンとして
+OSMesa \cite{osmesa} + SDL \cite{sdl} を採用し、OSMesa の
+一部の機能を SPE に演算させることにより高速化を図っている。
+その際の実行結果を \tabref{tab:osmesa} に示す。
+FPS (Frame Per Second) は、1秒間に何枚の画像が表示されているかを示している。
+
+\begin{table}[htbp]
+  \caption{実行速度 (描画領域:1920x1080)} \label{tab:osmesa}
+  \hbox to\hsize{\hfil
+    \begin{tabular}{l|l} \hline \hline
+      実行環境 & 実行速度\\ \hline
+      SDL(1.2)+OSMesa(6.5.2) & 18 FPS \\ 
+      SDL(1.2)+OSMesa(6.5.2) with SPE & 24 FPS \\ 
+      SDL(1.2.13)+OSMesa(7.0.2) with SPE & 43 FPS \\ \hline
+    \end{tabular}\hfil}
+\end{table}
+
+\tabref{tab:osmesa}より、SPE に処理を任せれば実行速度は
+速くなるということを示している。同時に、OSMesa を細分化し、
+できるだけ SPE を使うような設計ができれば
+より速くなる可能性を示すものである。
+
+しかし、OSMesa は巨大なマクロによるプログラム記述や
+コピーの多用、巨大な構造体等があり、細分化はもちろん、
+後に拡張をすることも難しい。
+
+そこで、我々は独自のレンダリングエンジン (Cerium) を開発することにした。
+Cerium には、Rendering Engine、タスクの細分化を行い、
+Cell の性能を十分に引き出すことを目的とした
+Task Manager、ゲームのルールを管理する Scene Graph が実装されている。
--- a/sigos.bib	Tue Mar 25 09:48:38 2008 +0900
+++ b/sigos.bib	Tue Mar 25 11:28:28 2008 +0900
@@ -27,11 +27,23 @@
 @article{akira,
 author = "{Akira KAMIZATO.}",
 title = "Cell を用いたゲームフレームワークの提案",
-journal = "琉球大学工学部情報工学科平成19年度学位論文",
+journal = "琉球大学工学部情報工学科平成19年度学位論文(修士)",
 year  = 2008}
 
 @article{chiaki,
 author = "{Chiaki SUGIYAMA.}",
 title = "SceneGraph と StatePattern を用いたゲームフレームワークの設計と実装",
-journal = "琉球大学工学部情報工学科平成19年度学位論文",
-year  = 2008}
\ No newline at end of file
+journal = "琉球大学工学部情報工学科平成19年度卒業論文",
+year  = 2008}
+
+@article{fuchita,
+author = "{Yoshihiko, FUCHITA.}",
+title = "分散プログラミングモデル Federated Linda と分散デバッグ開発",
+journal = "琉球大学工学部情報工学科平成19年度学位論文(修士)",
+year  = 2008}
+
+@article{spurs,
+author = "{Keisuke INOUE.}",
+title = "Cell プロセッサ向け実行環境(SPU Centric Execution Model)",
+journal = "先進的計算基盤システムシンポジウム SACSIS",
+year  = 2006}
--- a/sigos.tex	Tue Mar 25 09:48:38 2008 +0900
+++ b/sigos.tex	Tue Mar 25 11:28:28 2008 +0900
@@ -68,7 +68,8 @@
 
 % 本文はここから始まる
 
-\input{introduction}   % はじめに
+%\input{introduction}   % はじめに
+\input{ps3}
 \input{cell}           % Cell
 \input{cerium}         % Cerium
 \input{cerium_dev}     % 開発過程