view develop_process.tex @ 10:baeefa4212db

*** empty log message ***
author akira
date Wed, 05 Mar 2008 21:03:51 +0900
parents a9f3e198cb96
children
line wrap: on
line source

\section{開発過程}
開発過程として次のような順で実装する。
\begin{enumerate}
\item Cによるシーケンシャルな開発
\item SPUを考慮したデータ構造を持つシーケンシャルな開発
\item SPUを使った開発
\item CbCをもちいた開発
\end{enumerate}
1のCによるシーケンシャルな開発はタスクマネージャを使わず実際にプログラム
のアルゴリズムの信頼性をみるために行われる。Cによるシーケンシャルな開発
ではタスクマネージャは使われない。

2のSPUを考慮したデータ構造を持つシーケンシャルな開発はタスクマネージャを
用いるが、このタスクマネージャはSPUの実行部分をシミュレーションしたタス
クマネージャを使って、実装することができる。しかし、依存関係やSPUに送る
データのサイズなどを考慮する必要があり、またタスクの中ではポインターを使
うことができないなど多少の煩わしさがある。実際のコードは次のようになる。
\input{src/task.c}
create\_pp関数は図\ref{fig:Cerium}のSceneGraphの実行コードである。入力は引数のSceneGraphPackで、ポリゴンの頂点が与えられる。また出力は引数のPolygonPackとなる。PolygonPackはポリゴンとなる。

2から3へ移行するのはタスクマネージャのset\_cpuを用いることによって少量の変更で簡単に移行することが可能である。実行コードは次のようになる。
\input{src/spe_task.c}
引数はすべてvoidで受け取る。またタスクマネージャに登録するときに入力データやサイズなどが記述されているので、入力データはそれを基にタスクマネージャが行っている。

4のCbCを用いた開発では改めて今まで書いてきたプログラムをCbCに書き直す作
業が待っている。しかし、CbCへの変換は今まで書いていたCのプログラムを逐次
的にgotoでcode-segmentを接続すればよい。
\input{src/debug.c}
現在はサブルーチンで書かれている3の段階である。