Mercurial > hg > Papers > 2008 > gongo-ess
view dev.tex @ 3:3ee6deaab278
*** empty log message ***
author | gongo |
---|---|
date | Mon, 14 Jul 2008 16:28:37 +0900 |
parents | d40dd97c0a50 |
children | a927f08d51e2 |
line wrap: on
line source
\section{TaskManager を用いた並列プログラムの開発行程} \label{sec:debug} TaskManager を用いたプログラムの作成では、 以下の段階において、それぞれ実装とテストを行う。 \begin{enumerate} \item C によるシーケンシャルな実装 \label{list_dev1} \item TaskManager を考慮したデータ構造を持つ実装 \label{list_dev2} \item コードをタスクに分割し、シーケンシャルに実行する実装 \label{list_dev3} \item タスクを並列実行する実装 \label{list_dev4} \end{enumerate} 段階 (\ref{list_dev1}) の実装は Task Manager を用いず、 プログラムのアルゴリズムの信頼性を確認するために用いる。 段階 (\ref{list_dev2}) ではコードをタスクに分割した際、 そのタスクが使用できるようなデータの変換が必要になり、 段階 (\ref{list_dev1}) と同じ結果を得られるかどうかを検証する。 段階 (\ref{list_dev3}) の実装からは Task Manager を用いる。 この段階まではアーキテクチャに依存しないので、 ターゲットが開発途中の段階でも記述することが可能である。 また、入力に対して出力が一意に決まる状況であり、テストは容易である。 シーケンシャルな実装であるため、デバッグも二分法により容易に行うことが出来る。 段階 (\ref{list_dev4}) では、段階 (\ref{list_dev3}) までが動いていれば 問題なく動作すると期待される。 問題が発生した場合、その原因と思われるタスクを見つけ、 一度段階 (\ref{list_dev3}) に戻した後、前後のタスクと合わせて 入出力データのチェックなどのテストしていくことが必要となる。 段階 (\ref{list_dev3}) から 段階 (\ref{list_dev4}) へのプログラムの変換は 非常に容易である。Task Manager の API である set\_cpu() を用いることにより、 Task をメインスレッドで実行するか、他 Core で実行するかを 明示的に書くことが出来るからである。