view introduction.tex @ 7:bd8574dedd1b

*** empty log message ***
author gongo
date Tue, 25 Mar 2008 15:51:53 +0900
parents a46c6f313a0b
children b70a62630a57
line wrap: on
line source

\section{はじめに}

\subsection{PS3 上でのレンダリング}
PlayStation 3 (以下 PS3) に搭載された Linux を用いて、
PS3 上で動くゲーム開発することができる。
しかし、現在 GPU (Graphics Processing Unit) の詳細/API は
一般には公開されていないため、GPU を使った描画はできない。
ps3fb という Frame Buffer 上に 直接描画することはできるため、
我々は Frame Buffer 上に描画するゲームフレームワークを提案してきた。

まず我々は、OSMesa \cite{osmesa} という Frame Buffer Engine 用の
レンダリングエンジン、マルチメディアライブラリの SDL \cite{sdl}、これら
二つを用いて開発を行った。

最初は PPE のみを利用してゲームプログラミングを行ってきた。
例題として、一つの立方体を回転させるというプログラムの実行速度は
約 18 FPS という結果となった。FPS (Frame Per Second) は、
1秒間に何枚の画像が表示されているかを示している。

これは非常に遅い結果で、その理由は、SPE を使用していないため、
Cell の能力を十分発揮できていないからだと考えられる。

次に、OSMesa の一部の機能を SPE に演算させることにより高速化を図っている
 \Cite{akira} 。

その際の実行結果を \tabref{tab:osmesa} に示す。

\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 は巨大なマクロによるプログラム記述や
コピーの多用、巨大な構造体等があり、細分化はもちろん、
後に拡張をすることも難しい。

\subsection{Many Core 上のプログラミング}
従来の逐次型のプログラムでは、Cell といった Many Core の性能を
十分に引き出すことは出来ない。

並列実行には Amdahl 則 \cite{amdahl} があり、
プログラムの並列化率が低ければ、その性能を生かすことは出来ない。
0.8 程度の並列化では、6 CPU でも
3 倍程度の性能向上しか得られない (\figref{fig-amdahl}) 。

\begin{figure}[tb]
  \begin{center}
    \includegraphics[scale=0.2]{figure/amdahl.pdf}
    \caption{Amdahl 則}
    \label{fig-amdahl}
  \end{center}
\end{figure}

並列プログラムの特徴として、デバッグが難しいことも挙げられる。
実行が非決定的(同じ状態で実行しても同じ結果が異なる)場合があり、
バグの状態を再現することが難しい。
また、個々の Core 上のデータを調べる必要もある。


\subsection{研究目的}
我々は独自のレンダリングエンジンである
Cerium \cite{gongo} を開発することにした。
Cerium は、Rendering Engine、タスクの細分化を行い
Cell の性能を十分に引き出すことを目的とした
Task Manager、ゲームのルールを管理する Scene Graph で構成されている。

Cerium は Cell 上だけでなく、Linux や Mac OS X 上でも
動く、シーケンシャルなプログラムも実装することが出来る。
並列プログラムとシーケンシャルプログラムの相互の変換は容易である。
これにより、全体の動作のデバッグはシーケンシャルプログラムで行い、
仕様が正しいと確認できたら、 Cell 上などの特有の環境で
動作、デバッグを行えばいい。