Mercurial > hg > Papers > 2015 > oc-thesis
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 でほぼ同じ記述であるが、修飾子など若干形式が異なる。これらは将来的に自動変換などを行うことが望ましい。