Mercurial > hg > Papers > 2008 > gongo-sigos
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 +
--- /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 +
--- 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}