Mercurial > hg > Papers > 2018 > parusu-master
view paper/parallelism_gears.tex @ 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 | 106c1d35afd2 |
children | a0f9def49535 |
line wrap: on
line source
\chapter{Gears OSの並列処理} \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{依存関係の解決} \section{並列処理の記述} \section{Iterator} \section{待ち機構}