Mercurial > hg > Papers > 2008 > gongo-sigos
view cerium_dev.tex @ 8:b70a62630a57
*** empty log message ***
author | gongo |
---|---|
date | Tue, 25 Mar 2008 20:45:05 +0900 |
parents | a46c6f313a0b |
children | fea1ac32de27 |
line wrap: on
line source
\section{開発過程} 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 で実行するかを明示的に書くことが出来るからである。 {\small \begin{verbatim} Task *task1 = create_task(cmd1,siz1,in1,out1); Task *task2 = create_task(cmd2,siz2,in2,out2); task1->set_cpu(CPU_PPE); // PPE 上で実行される task2->set_cpu(CPU_SPE); // SPE 上で実行される \end{verbatim} }