Mercurial > hg > Papers > 2008 > gongo-ess
changeset 7:a927f08d51e2
*** empty log message ***
author | gongo |
---|---|
date | Mon, 14 Jul 2008 20:51:46 +0900 |
parents | 30b41d745225 |
children | 6fb31d97a288 |
files | dev.tex ess2008.tex task_manager.tex |
diffstat | 3 files changed, 29 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/dev.tex Mon Jul 14 20:37:12 2008 +0900 +++ b/dev.tex Mon Jul 14 20:51:46 2008 +0900 @@ -1,35 +1,47 @@ -\section{TaskManager を用いた並列プログラムの開発行程} \label{sec:debug} -TaskManager を用いたプログラムの作成では、 -以下の段階において、それぞれ実装とテストを行う。 +\section{並列プログラムの開発行程} \label{sec:debug} +並列プログラミングでは、以下の段階において、それぞれ実装とテストを行う +(\figref{fig:dev-step})。 + +\begin{figure}[tb] + \begin{center} + \includegraphics[scale=0.35]{figure/step.pdf} + \caption{並列プログラムの開発行程} + \label{fig:dev-step} + \end{center} +\end{figure} \begin{enumerate} \item C によるシーケンシャルな実装 \label{list_dev1} -\item TaskManager を考慮したデータ構造を持つ実装 \label{list_dev2} -\item コードをタスクに分割し、シーケンシャルに実行する実装 \label{list_dev3} +\item 並列実行を考慮したデータ構造を持つ実装 \label{list_dev2} +\item コードを分割し、シーケンシャルに実行する実装 \label{list_dev3} \item タスクを並列実行する実装 \label{list_dev4} \end{enumerate} -段階 (\ref{list_dev1}) の実装は Task Manager を用いず、 +段階 (\ref{list_dev1}) の実装は、 プログラムのアルゴリズムの信頼性を確認するために用いる。 -段階 (\ref{list_dev2}) ではコードをタスクに分割した際、 +段階 (\ref{list_dev2}) ではコードを分割した際、 そのタスクが使用できるようなデータの変換が必要になり、 段階 (\ref{list_dev1}) と同じ結果を得られるかどうかを検証する。 -段階 (\ref{list_dev3}) の実装からは Task Manager を用いる。 -この段階まではアーキテクチャに依存しないので、 +段階 (\ref{list_dev3}) の実装では、並列実行を意識した +コードの分割を行う。この段階まではアーキテクチャに依存しないので、 ターゲットが開発途中の段階でも記述することが可能である。 また、入力に対して出力が一意に決まる状況であり、テストは容易である。 シーケンシャルな実装であるため、デバッグも二分法により容易に行うことが出来る。 -段階 (\ref{list_dev4}) では、段階 (\ref{list_dev3}) までが動いていれば +段階 (\ref{list_dev4}) の実装では、段階 (\ref{list_dev3} で分割したコードを +実際に並列に動かす。段階 (\ref{list_dev3}) までが動いていれば 問題なく動作すると期待される。 問題が発生した場合、その原因と思われるタスクを見つけ、 一度段階 (\ref{list_dev3}) に戻した後、前後のタスクと合わせて 入出力データのチェックなどのテストしていくことが必要となる。 -段階 (\ref{list_dev3}) から 段階 (\ref{list_dev4}) へのプログラムの変換は -非常に容易である。Task Manager の API である set\_cpu() を用いることにより、 -Task をメインスレッドで実行するか、他 Core で実行するかを -明示的に書くことが出来るからである。 +%段階 (\ref{list_dev3}) から 段階 (\ref{list_dev4}) へのプログラムの変換は +%非常に容易である。Task Manager の API である set\_cpu() を用いることにより、 +%Task をメインスレッドで実行するか、他 Core で実行するかを +%明示的に書くことが出来るからである。 + +第 \ref{sec:tm} 節から説明する TaskManager は、 +以上の開発行程をサポートしたフレームワークとなる。
--- a/ess2008.tex Mon Jul 14 20:37:12 2008 +0900 +++ b/ess2008.tex Mon Jul 14 20:51:46 2008 +0900 @@ -70,8 +70,8 @@ \input{introduction} % 研究目的 \input{cell} % Cell \input{manycore} % many core system +\input{dev} % 開発過程 \input{task_manager} % Task Manager -\input{dev} % 開発過程 \input{student} % 学生の反応 \input{cerium} % Cerium \input{compare} % 評価と考察
--- a/task_manager.tex Mon Jul 14 20:37:12 2008 +0900 +++ b/task_manager.tex Mon Jul 14 20:51:46 2008 +0900 @@ -207,8 +207,8 @@ \end{verbatim} メインスレッド内でもタスクを実行する事が可能なため、これを用いる事により、 -環境依存によるプログラム変換はタスクの部分だけとなり、全体の変換は必要ない。 -(TODO) +環境依存によるプログラム変換はタスクの部分だけとなる。 +よって、\figref{fig:dev-step} の 段階 (3) と 段階 (4) の相互変換が容易になる。 \subsection{メインスレッドと各 Core 間との同期} メインスレッドと各 Core 間では、32 ビットメッセージの