view prepaper/Cerium.tex @ 11:16c5f065f7e7

change files structure, new directory paper and preparer
author oc
date Tue, 17 Feb 2015 10:53:45 +0900
parents
children
line wrap: on
line source

\section{Cerium Task Manager}
Cerium Task Manager では、並列処理を Task 単位で記述する。関数やサブルーチンを Task として扱い、Task には input data, output data および依存関係を設定する。
Cerium Task Manager によって、それらの Task は管理され、実行される。図:\ref{fig:createTask}は Task を生成/実行する場合のクラス構成である。

\begin{figure}[!ht]
  \begin{center}
    \includegraphics[scale=0.35]{./images/createTask.pdf}
  \end{center}
  \caption{Task Manager}
  \label{fig:createTask}
\end{figure}

Scheduler と CpuThreads に対応させる形で、GpuScheduler, CudaSchduler および GpuThreads, CudaThreads を実装した。
TaskList から device 上での memory 領域を確保し、host から device へのデータ転送、kernel の実行、device から host へのデータ転送の順序で device に Operation を投入していく。

Commqnd Queue および Stream を複数用意することでパイプライン実行を実現している。
これらは任意の数に変更することができる。デフォルトでは8個生成しているので8段のパイプラインとして実行される。
Task Manager 間の通信を担当する同期キューである mail を使用し Task の完了を通知する。

各 Scheduler 内で初期化、メモリ管理、データ転送のオーバーラップを行なっている。
Task は Multi Core CPU, OpenCL, CUDA でほぼ同じ記述であるが、修飾子など若干形式が異なる。これらは将来的に自動変換などを行うことが望ましい。