changeset 9:729602c52c46

Add sendTask.graffle
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Sun, 21 Jan 2018 02:09:28 +0900
parents 555bfb4c8cbf
children a0f9def49535
files paper/fig/sendTask.graffle paper/fig/sendTask.pdf paper/master_paper.pdf paper/parallelism_gears.tex
diffstat 4 files changed, 38 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
Binary file paper/fig/sendTask.graffle has changed
Binary file paper/fig/sendTask.pdf has changed
Binary file paper/master_paper.pdf has changed
--- a/paper/parallelism_gears.tex	Fri Jan 19 00:15:41 2018 +0900
+++ b/paper/parallelism_gears.tex	Sun Jan 21 02:09:28 2018 +0900
@@ -1,9 +1,45 @@
 \chapter{Gears OSの並列処理}
-\section{Allocator}
+\section{並列処理の構成}
+
 \section{TaskManager}
+Gears OS の TaskManager は Task を実行する Worker の生成、管理、Task の送信を行う。
+\coderef{taskManagerInterface} に TaskManager の Interface を示す。
+
+\lstinputlisting[caption=TaskManager の Interface, label=code:taskManagerInterface]{./src/taskManagerInterface.cbc}
+
+TaskManager は 以下の API を持っている。
+
+\begin{itemize}
+    \item Task の実行(spawn, spawnTasks)
+    \item Task の依存関係の設定(setWaitTask)
+    \item TaskManager が管理している Task 数のインクリメントとデクリメント(increment/decrementTaskCount)
+    \item TaskManager(shutdown)の終了処理
+\end{itemize}
+
+\coderef{createTaskManager}  に TaskManager Interface を実装した Data Gear の初期化部分を示す。
+TaskManager は初期化の際に、指定した数の Worekr を生成する。
+その際CPU、GPU の数を指定することができ、指定した分の CPUWorker と GPUWorker が \coderef{createTaskManager} の createWorker 関数で生成される。
+
+\lstinputlisting[caption=TaskManager の初期化, label=code:createTaskManager]{./src/createTaskManager.cbc}
+
+TaskManager は \coderef{sendTask}のように spawn を呼び出した際、実行する Task の Input Data Gear が用意されているかをチェックする。
+Input Data Gear が全て用意されている場合、その Task を Worker の TaskQueue に送信する。
+送信する Worker は Task を実行する環境(CPU、GPU) によって決定する。
+
+\begin{figure}[htbp]
+    \begin{center}
+        \includegraphics[scale=0.6]{./fig/sendTask.pdf}
+    \end{center}
+    \caption{Workerへの Task 送信}
+    \label{fig:sendTask}
+\end{figure}
+
+実際にTask を Worker に送信する処理を\coderef{sendTask}に示す。
+
+\lstinputlisting[caption=Task の送信処理, label=code:sendTask]{./src/sentTask.cbc}
+
 \section{Worker}
 \section{SynchornizedQueue}
-\section{Task}
 \section{依存関係の解決}
 \section{並列処理の記述}
 \section{Iterator}