# HG changeset patch # User Yuhi TOMARI # Date 1423896618 -32400 # Node ID 9b7ce931cad98e6d361810a332a3cb550cd3d884 # Parent f0060254db3f27600c3dc08cb81b998976f859cf fix about cerium diff -r f0060254db3f -r 9b7ce931cad9 paper/chapter2.tex --- a/paper/chapter2.tex Sat Feb 14 14:29:17 2015 +0900 +++ b/paper/chapter2.tex Sat Feb 14 15:50:18 2015 +0900 @@ -7,61 +7,13 @@ GPGPU の Data Parallel を含めて同じ形式で記述できる。 CeriumはTaskManager、 SceneGraph、Rendering Engine の3つの要素から構成される。 -本研究では Cerium の TaskManager を汎用計算フレームワークとして改良を行う。 -これによりヘテロジニアス環境に対応したシステムやフレームワークに必要な API や機構について考察していく。 +本研究では Cerium の TaskManager を汎用計算フレームワークとして改良を行った。 + \section{Cerium TaskManager} Cerium TaskManager では、処理の単位を Task としてプログラムを記述していく。 関数やサブルーチンを Task として扱い、 Task 間の依存関係を考慮しながら実行される。 -Task を生成する際に、以下のような要素を設定することができる。 -\begin{itemize} -\item input data -\item output data -\item parameter -\item cpu type -\item dependency -\end{itemize} - -input/output data, parameter は関数で言うところの引数に相当する。 -cpu type は Task が動作する Device を示し、 dependency は他の Task との依存関係を表す。 - -\section{Cerium における Task} -図:\ref{fig:taskmanager}は Cerium が Task を生成/実行する場合のクラスの構成図である。 -TaskManager で依存関係が解消され、実行可能になった Task は ActiveTaskList に移される。 -ActiveTaskList に移された Task は依存関係が存在しないのでどのような順番で実行されても良い。 -Task は転送を行いやすい TaskList に変換され、cpu type に対応した Scheduler に転送される。 -なお、転送はSynchronozed Queue である mail を通して行われる。 - - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.7]{./images/createTask.pdf} - \end{center} - \caption{Task Manager} - \label{fig:taskmanager} -\end{figure} - -\section{Task の Scheduling} - -GPU や Cell のような Shared Memory でない環境でのプログラミングを行う場合、 -Task の入出力となるデータを転送し、転送が終わってから Task を起動しなければならない。 -転送処理がボトルネックとなり、並列度が低下してしまう。 -そのため、Cerium はパイプライン実行をサポートしている。 - -Scheduler に転送された Task はパイプラインで処理される(図:\ref{fig:scheduler})。 -Task が全て終了すると Scheduler から TaskManager に mail を通して通知される。 -通知に従い依存関係を解決した Task が再び TaskManager から Scheduler に転送される。 - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.7]{./images/scheduler.pdf} - \end{center} - \caption{Scheduler} - \label{fig:scheduler} -\end{figure} -\newpage -\section{Task 生成の例} -ソースコード:\ref{src:createTask}に Task を生成する例題を示す。 +ソースコード:\ref{src:createTask}に Host 側で Task を生成する例題を示す。 input data を2つ用意し、 input data の各要素同士を乗算し、 output に格納する multiply という例題である。 @@ -92,7 +44,8 @@ \end{lstlisting} 表:\ref{table:task_create_api}は Task 生成時に用いる API の一覧である。 -create された Task は各種パラメタを設定し、spawn/iterate することで TaskManager に登録される。 +create された Task は Input Data や 依存関係を設定し、 +spawn することで TaskManager に登録される。 \begin{tiny} \begin{table}[htpb] @@ -119,8 +72,7 @@ \end{table} \end{tiny} -ソースコード:\ref{src:createTask}は Host 側で Task を生成しているプログラムである。 -Device 側で実行される Task (OpenCL、CUDA でいう kernel) の記述はソースコード:\ref{src:task}のようになる。 +次に、ソースコード:\ref{src:task} に Device 側で実行される Task (OpenCL、CUDA でいう kernel) の記述を示す。 \begin{lstlisting}[frame=lrbt,label=src:task,caption=Task,numbers=left] static int @@ -142,6 +94,7 @@ \end{lstlisting} 表:\ref{table:task_api}は Task 側で使用する API である。 +Host 側で設定した Input Data やパラメタを取得することができる。 \begin{tiny} \begin{table}[htpb] @@ -161,3 +114,50 @@ \end{center} \end{table} \end{tiny} + +Task を生成する際に設定できる要素は以下の通りとなる。 + +\begin{itemize} +\item Input Data +\item Output Data +\item Parameter +\item CpuType +\item Dependency +\end{itemize} + +Input/Output Data, Parameter は関数で言うところの引数に相当する。 +CpuType は Task が動作する Device を示し、 Dependency は他の Task との依存関係を表す。 + +\section{Cerium における Task} +図:\ref{fig:taskmanager}は Cerium が Task を生成/実行する場合のクラスの構成図である。 +TaskManager で依存関係が解消され、実行可能になった Task は ActiveTaskList に移される。 +ActiveTaskList に移された Task は依存関係が存在しないのでどのような順番で実行されても良い。 +Task は転送を行いやすい TaskList に変換され、CpuType に対応した Scheduler に転送される。 +なお、転送はSynchronozed Queue である mail を通して行われる。 + +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.7]{./images/createTask.pdf} + \end{center} + \caption{Task Manager} + \label{fig:taskmanager} +\end{figure} + +\section{Task の Scheduling} + +GPU や Cell のような Shared Memory でない環境でのプログラミングを行う場合、 +Task の入出力となるデータを転送し、転送が終わってから Task を起動しなければならない。 +転送処理がボトルネックとなり、並列度が低下してしまう。 +そのため、Cerium はパイプライン実行をサポートしている。 + +Scheduler に転送された Task はパイプラインで処理される(図:\ref{fig:scheduler})。 +Task が全て終了すると Scheduler から TaskManager に mail を通して通知される。 +通知に従い依存関係を解決した Task が再び TaskManager から Scheduler に転送される。 + +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.7]{./images/scheduler.pdf} + \end{center} + \caption{Scheduler} + \label{fig:scheduler} +\end{figure} diff -r f0060254db3f -r 9b7ce931cad9 paper/master_paper.aux --- a/paper/master_paper.aux Sat Feb 14 14:29:17 2015 +0900 +++ b/paper/master_paper.aux Sat Feb 14 15:50:18 2015 +0900 @@ -21,21 +21,20 @@ \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {3.1}Cerium の概要}{7}} \@writefile{toc}{\contentsline {section}{\numberline {3.2}Cerium TaskManager}{7}} -\@writefile{toc}{\contentsline {section}{\numberline {3.3}Cerium における Task}{8}} -\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Task Manager}}{8}} -\newlabel{fig:taskmanager}{{3.1}{8}} -\@writefile{toc}{\contentsline {section}{\numberline {3.4}Task の Scheduling}{8}} -\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Scheduler}}{9}} -\newlabel{fig:scheduler}{{3.2}{9}} -\@writefile{toc}{\contentsline {section}{\numberline {3.5}Task 生成の例}{9}} -\newlabel{src:createTask}{{3.1}{9}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.1}Task の生成}{9}} -\@writefile{lot}{\contentsline {table}{\numberline {3.1}{\ignorespaces Task 生成おける API}}{10}} -\newlabel{table:task_create_api}{{3.1}{10}} -\newlabel{src:task}{{3.2}{10}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.2}Task}{10}} -\@writefile{lot}{\contentsline {table}{\numberline {3.2}{\ignorespaces Task 側で使用する API}}{10}} -\newlabel{table:task_api}{{3.2}{10}} +\newlabel{src:createTask}{{3.1}{7}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.1}Task の生成}{7}} +\@writefile{lot}{\contentsline {table}{\numberline {3.1}{\ignorespaces Task 生成おける API}}{8}} +\newlabel{table:task_create_api}{{3.1}{8}} +\newlabel{src:task}{{3.2}{8}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.2}Task}{8}} +\@writefile{lot}{\contentsline {table}{\numberline {3.2}{\ignorespaces Task 側で使用する API}}{8}} +\newlabel{table:task_api}{{3.2}{8}} +\@writefile{toc}{\contentsline {section}{\numberline {3.3}Cerium における Task}{9}} +\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Task Manager}}{9}} +\newlabel{fig:taskmanager}{{3.1}{9}} +\@writefile{toc}{\contentsline {section}{\numberline {3.4}Task の Scheduling}{10}} +\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Scheduler}}{10}} +\newlabel{fig:scheduler}{{3.2}{10}} \@writefile{toc}{\contentsline {chapter}{\numberline {第4章}Ceriumを用いた例題}{11}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} diff -r f0060254db3f -r 9b7ce931cad9 paper/master_paper.dvi Binary file paper/master_paper.dvi has changed diff -r f0060254db3f -r 9b7ce931cad9 paper/master_paper.lof --- a/paper/master_paper.lof Sat Feb 14 14:29:17 2015 +0900 +++ b/paper/master_paper.lof Sat Feb 14 15:50:18 2015 +0900 @@ -3,8 +3,8 @@ \contentsline {figure}{\numberline {2.1}{\ignorespaces GPU Architecture}}{4} \contentsline {figure}{\numberline {2.2}{\ignorespaces CPU Architecture}}{4} \addvspace {10\p@ } -\contentsline {figure}{\numberline {3.1}{\ignorespaces Task Manager}}{8} -\contentsline {figure}{\numberline {3.2}{\ignorespaces Scheduler}}{9} +\contentsline {figure}{\numberline {3.1}{\ignorespaces Task Manager}}{9} +\contentsline {figure}{\numberline {3.2}{\ignorespaces Scheduler}}{10} \addvspace {10\p@ } \contentsline {figure}{\numberline {4.1}{\ignorespaces Bitonic Sort の例}}{12} \contentsline {figure}{\numberline {4.2}{\ignorespaces WordCountのフロー}}{14} diff -r f0060254db3f -r 9b7ce931cad9 paper/master_paper.log --- a/paper/master_paper.log Sat Feb 14 14:29:17 2015 +0900 +++ b/paper/master_paper.log Sat Feb 14 15:50:18 2015 +0900 @@ -1,4 +1,4 @@ -This is e-pTeX, Version 3.1415926-p3.4-110825-2.6 (utf8.euc) (TeX Live 2013) (format=platex 2013.5.30) 14 FEB 2015 14:28 +This is e-pTeX, Version 3.1415926-p3.4-110825-2.6 (utf8.euc) (TeX Live 2013) (format=platex 2013.5.30) 14 FEB 2015 15:34 entering extended mode \write18 enabled. %&-line parsing enabled. @@ -294,40 +294,40 @@ [6] 第 3 章(7ページ) -[7 - -] -File: ./images/createTask.pdf Graphic file (type pdf) - <./images/createTask.pdf> -File: ./images/scheduler.pdf Graphic file (type pdf) - <./images/scheduler.pdf> -File: images/emblem-bitmap.eps Graphic file (type eps) - - [8] LaTeX Font Warning: Font shape `JT1/mc/m/it' undefined -(Font) using `JT1/mc/m/n' instead on input line 72. +(Font) using `JT1/mc/m/n' instead on input line 24. LaTeX Font Warning: Font shape `JY1/mc/m/it' undefined -(Font) using `JY1/mc/m/n' instead on input line 72. +(Font) using `JY1/mc/m/n' instead on input line 24. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <7> on input line 73. +(Font) <7> on input line 25. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <5> on input line 73. -LaTeX Font Info: Try loading font information for OML+cmr on input line 73. +(Font) <5> on input line 25. +LaTeX Font Info: Try loading font information for OML+cmr on input line 25. (/usr/local/share/texlive/2013/texmf-dist/tex/latex/base/omlcmr.fd File: omlcmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions ) LaTeX Font Info: Font shape `OML/cmr/m/n' in size <10> not available -(Font) Font shape `OML/cmm/m/it' tried instead on input line 73. +(Font) Font shape `OML/cmm/m/it' tried instead on input line 25. + [7 + +] File: images/emblem-bitmap.eps Graphic file (type eps) - [9]) (./chapter3.tex + [8] +File: ./images/createTask.pdf Graphic file (type pdf) + <./images/createTask.pdf> File: images/emblem-bitmap.eps Graphic file (type eps) - -[10] + + [9] +File: ./images/scheduler.pdf Graphic file (type pdf) + <./images/scheduler.pdf>) (./chapter3.tex +File: images/emblem-bitmap.eps Graphic file (type eps) + + [10] 第 4 章(11ページ) [11 @@ -464,4 +464,4 @@ 745 hyphenation exceptions out of 8191 33i,12n,40p,207b,1888s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on master_paper.dvi (43 pages, 122168 bytes). +Output written on master_paper.dvi (43 pages, 121412 bytes). diff -r f0060254db3f -r 9b7ce931cad9 paper/master_paper.lot --- a/paper/master_paper.lot Sat Feb 14 14:29:17 2015 +0900 +++ b/paper/master_paper.lot Sat Feb 14 15:50:18 2015 +0900 @@ -1,8 +1,8 @@ \addvspace {10\p@ } \addvspace {10\p@ } \addvspace {10\p@ } -\contentsline {table}{\numberline {3.1}{\ignorespaces Task 生成おける API}}{10} -\contentsline {table}{\numberline {3.2}{\ignorespaces Task 側で使用する API}}{10} +\contentsline {table}{\numberline {3.1}{\ignorespaces Task 生成おける API}}{8} +\contentsline {table}{\numberline {3.2}{\ignorespaces Task 側で使用する API}}{8} \addvspace {10\p@ } \addvspace {10\p@ } \addvspace {10\p@ } diff -r f0060254db3f -r 9b7ce931cad9 paper/master_paper.pdf Binary file paper/master_paper.pdf has changed diff -r f0060254db3f -r 9b7ce931cad9 paper/master_paper.toc --- a/paper/master_paper.toc Sat Feb 14 14:29:17 2015 +0900 +++ b/paper/master_paper.toc Sat Feb 14 15:50:18 2015 +0900 @@ -7,9 +7,8 @@ \contentsline {chapter}{\numberline {第3章}並列プログラミングフレームワーク Cerium}{7} \contentsline {section}{\numberline {3.1}Cerium の概要}{7} \contentsline {section}{\numberline {3.2}Cerium TaskManager}{7} -\contentsline {section}{\numberline {3.3}Cerium における Task}{8} -\contentsline {section}{\numberline {3.4}Task の Scheduling}{8} -\contentsline {section}{\numberline {3.5}Task 生成の例}{9} +\contentsline {section}{\numberline {3.3}Cerium における Task}{9} +\contentsline {section}{\numberline {3.4}Task の Scheduling}{10} \contentsline {chapter}{\numberline {第4章}Ceriumを用いた例題}{11} \contentsline {section}{\numberline {4.1}Bitonic Sort}{11} \contentsline {section}{\numberline {4.2}Word Count}{13}