view cerium_dev.tex @ 13:a91e95964045

*** empty log message ***
author gongo
date Thu, 27 Mar 2008 00:48:54 +0900
parents fea1ac32de27
children 091d888f7729
line wrap: on
line source

\section{Cerium によるゲーム開発}
Cerium 自身や Cerium を用いた開発では、以下の段階にそれぞれ実装とテストを行う。

\begin{enumerate}
  \item C によるシーケンシャルな実装 \label{list_dev_1}
  \item SPE を考慮したデータ構造 (PolygonPack, SpanPack) を持つ実装 \label{list_dev_2}
  \item コードをタスクに分割し、FIFO キューでシーケンシャルに実行する実装 \label{list_dev_3}
  \item タスクを SPE に割り当て並列実行する実装 \label{list_dev_4}
\end{enumerate}

段階 (\ref{list_dev_1}) の実装は Task Manager を用いず、
プログラムのアルゴリズムの信頼性を確認するために用いる。

段階 (\ref{list_dev_2}) ではデータの変換が必要になり、
段階 (\ref{list_dev_1}) と同じ結果を得られるかどうかを検証する。
この段階までは、入力に対して出力が一意に決まる状況であり、テストは容易である。
シーケンシャルな実装であるため、デバッグも二分法により容易に行うことが出来る。

段階 (\ref{list_dev_3}) の実装からは Task Manager を用いる。
この段階まではアーキテクチャに依存しないので、
ターゲットが開発途中の段階でも記述することが可能である。
また、FIFO スケジューラを用いずに Random スケジューラを実装することにより、
並列実行特有の非決定的な実行が導入される。
非決定的な動作においても、段階 (\ref{list_dev_2}) までと同じ仕様を
満たすことを検証する必要がある。
これは、逐次型プログラムでは出て来ない問題である。

段階 (\ref{list_dev_4}) では、段階 (\ref{list_dev_3}) までが動いていれば
問題なく動作すると期待される。また、SPE タスクを、
SPE が持つ命令セットを用いて最適化することにより、更なる性能向上が期待できる。

段階 (\ref{list_dev_3}) から 段階 (\ref{list_dev_4}) へのプログラムの変換は
非常に容易である。Task Manager の API である set\_cpu() を用いることにより、
Task を PPE で実行するか SPE で実行するかを明示的に書くことが出来るからである。