Mercurial > hg > Papers > 2018 > parusu-master
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
--- 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}