Mercurial > hg > Papers > 2014 > masakoha-sigos
changeset 3:05a0e70f5823
add some image files
author | Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 17 Apr 2014 01:37:37 +0900 |
parents | b15b449619b1 |
children | c030ccbf279a |
files | paper/cerium.tex paper/eclbkbox.sty paper/example.tex paper/images/blockedreadimage.pdf paper/images/blockedreadimage.xbb paper/images/blockreadtask.pdf paper/images/blockreadtask.xbb paper/images/ceriumtaskmanager.pdf paper/images/ceriumtaskmanager.xbb paper/images/io0.pdf paper/images/io0.xbb paper/images/mmap.pdf paper/images/mmap.xbb paper/images/speany.pdf paper/images/speany.xbb paper/introduction.tex paper/io.tex |
diffstat | 17 files changed, 183 insertions(+), 52 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/cerium.tex Tue Apr 15 18:01:08 2014 +0900 +++ b/paper/cerium.tex Thu Apr 17 01:37:37 2014 +0900 @@ -1,25 +1,24 @@ \section{Cerium TaskManager}\label{section:cerium} -% \begin{figure}[ht] -% \begin{center} -% \includegraphics[scale=0.45]{./images/createTask.pdf} -% \end{center} -% \caption{Task Manager} -% \label{fig:createTask} -% \end{figure} +\subsection{Cerium Task Manager の概要} Cerium Task Manager は並列プログラミングフレームワークであり、内部では C や C++ で実装されている。 Cerium Task Manager は、User が並列処理を Task 単位で記述し、関数やサブルーチンを Task として扱い、その Task に対して Input Data、Output Data 及び依存関係を設定する。 そして、それに基づいた設定の元で Task Manager にて管理し実行される。 Cerium Task Manager は PlayStation 3/Cell、Mac OS X 及び Linux 上で利用することが可能である。 -図\ref{fig:createTask} では、 User が Task を生成して、CPU や GPU の各デバイスに Task が割り振られる様子を表している。 +図\ref{fig:cerium} では、 User が Task を生成して、CPU や GPU の各デバイスに Task が割り振られる様子を表している。 User が設定を行った Task は Task Manager にて生成される。その生成した Task に HTask にて Input Data 、Output Data や依存関係などを設定して Task の集合体である TaskList に Set する。 そして TaskList を各デバイスに割り振って、各 Scheduler に管理をさせたあとにそれぞれの Task を起動する。 -% \begin{figure}[htbp] -% \begin{center} -% \includegraphics[width=0.7\textwidth]{fig/ceriumtaskmanager.pdf} -% \end{center} +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.5]{images/ceriumtaskmanager.pdf} +\end{center} +\caption{Cerium} +\label{fig:cerium} +\end{figure} + +\subsection{Cerium Task Manager の利用方法} input Data で格納して 2 つの数を乗算し、output data に格納する multiply という例題がある。 その例題の Task 生成部分を以下に示す。 @@ -67,8 +66,6 @@ \end{table} \end{tiny} -\newpage - Task の記述は以下のようになる。 \\
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/eclbkbox.sty Thu Apr 17 01:37:37 2014 +0900 @@ -0,0 +1,82 @@ +% eclbkbox.sty by Hideki Isozaki, 1992 +% Date: May 28, 1993 + +\newbox\bk@bxb +\newbox\bk@bxa +\newif\if@bkcont +\newif\ifbkcount +\newcount\bk@lcnt + +\def\breakboxskip{2pt} +\def\breakboxparindent{1.8em} + +\def\breakbox{\vskip\breakboxskip\relax +\setbox\bk@bxb\vbox\bgroup +\advance\linewidth -2\fboxrule +\advance\linewidth -2\fboxsep +\hsize\linewidth\@parboxrestore +\parindent\breakboxparindent\relax} + +% \@tempdimb: amount of vertical skip +% between the first line (\bk@bxa) and the rest (\bk@bxb) +\def\bk@split{% +\@tempdimb\ht\bk@bxb % height of original box +\advance\@tempdimb\dp\bk@bxb +\setbox\bk@bxa\vsplit\bk@bxb to\z@ % split it +\setbox\bk@bxa\vbox{\unvbox\bk@bxa}% recover height & depth of \bk@bxa +\setbox\@tempboxa\vbox{\copy\bk@bxa\copy\bk@bxb}% naive concatenation +\advance\@tempdimb-\ht\@tempboxa +\advance\@tempdimb-\dp\@tempboxa}% gap between two boxes + + +% \@tempdima: height of the first line (\bk@bxa) + fboxsep +\def\bk@addfsepht{% + \setbox\bk@bxa\vbox{\vskip\fboxsep\box\bk@bxa}} + +\def\bk@addskipht{% + \setbox\bk@bxa\vbox{\vskip\@tempdimb\box\bk@bxa}} + +% \@tempdima: depth of the first line (\bk@bxa) + fboxsep +\def\bk@addfsepdp{% + \@tempdima\dp\bk@bxa + \advance\@tempdima\fboxsep + \dp\bk@bxa\@tempdima} + +% \@tempdima: depth of the first line (\bk@bxa) + vertical skip +\def\bk@addskipdp{% + \@tempdima\dp\bk@bxa + \advance\@tempdima\@tempdimb + \dp\bk@bxa\@tempdima} + +\def\bk@line{% + \hbox to \linewidth{\ifbkcount\smash{\llap{\the\bk@lcnt\ }}\fi + \vrule \@width\fboxrule\hskip\fboxsep + \box\bk@bxa\hfil + \hskip\fboxsep\vrule \@width\fboxrule}} + +\def\endbreakbox{\egroup +\ifhmode\par\fi{\noindent\bk@lcnt\@ne +\@bkconttrue\baselineskip\z@\lineskiplimit\z@ +\lineskip\z@\vfuzz\maxdimen +\bk@split\bk@addfsepht\bk@addskipdp +\ifvoid\bk@bxb % Only one line +\def\bk@fstln{\bk@addfsepdp +\vbox{\hrule\@height\fboxrule\bk@line\hrule\@height\fboxrule}}% +\else % More than one line +\def\bk@fstln{\vbox{\hrule\@height\fboxrule\bk@line}\hfil +\advance\bk@lcnt\@ne +\loop + \bk@split\bk@addskipdp\leavevmode +\ifvoid\bk@bxb % The last line + \@bkcontfalse\bk@addfsepdp + \vtop{\bk@line\hrule\@height\fboxrule}% +\else % 2,...,(n-1) + \bk@line +\fi + \hfil\advance\bk@lcnt\@ne +\if@bkcont\repeat}% +\fi +\leavevmode\bk@fstln\par}\vskip\breakboxskip\relax} + +\bkcountfalse +
--- a/paper/example.tex Tue Apr 15 18:01:08 2014 +0900 +++ b/paper/example.tex Thu Apr 17 01:37:37 2014 +0900 @@ -28,6 +28,7 @@ この例題の Task 生成部分を以下に示す。 \\ + \begin{verbatim} HTaskPtr read = manager->create_task(Read_task); read->set_cpu(SPE_ANY); @@ -49,7 +50,7 @@ task_number++; \end{verbatim} -read という Task を宣言し、Task に CPU Type、パラメータとして生成した Task 番号の task\_number +read という Task を宣言し、Task に対して CPU Type、パラメータとして生成した Task 番号の task\_number 1つの Task の読み込み量 division\_size、読み込むファイルのファイルディスクリプタ fd を設定する。 読み込んだデータの格納先を set\_outData にて設定を行い、そして spawn にて Task を生成する。
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/blockedreadimage.xbb Thu Apr 17 01:37:37 2014 +0900 @@ -0,0 +1,8 @@ +%%Title: ./images/blockedreadimage.pdf +%%Creator: extractbb 20130405 +%%BoundingBox: 0 0 439 235 +%%HiResBoundingBox: 0.000000 0.000000 439.000000 235.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Thu Apr 17 01:35:03 2014 +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/blockreadtask.xbb Thu Apr 17 01:37:37 2014 +0900 @@ -0,0 +1,8 @@ +%%Title: ./images/blockreadtask.pdf +%%Creator: extractbb 20130405 +%%BoundingBox: 0 0 564 265 +%%HiResBoundingBox: 0.000000 0.000000 564.000000 265.000000 +%%PDFVersion: 1.4 +%%Pages: 1 +%%CreationDate: Thu Apr 17 01:35:03 2014 +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/ceriumtaskmanager.xbb Thu Apr 17 01:37:37 2014 +0900 @@ -0,0 +1,8 @@ +%%Title: ./images/ceriumtaskmanager.pdf +%%Creator: extractbb 20130405 +%%BoundingBox: 0 0 392 302 +%%HiResBoundingBox: 0.000000 0.000000 392.000000 302.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Thu Apr 17 01:35:03 2014 +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/io0.xbb Thu Apr 17 01:37:37 2014 +0900 @@ -0,0 +1,8 @@ +%%Title: ./images/io0.pdf +%%Creator: extractbb 20130405 +%%BoundingBox: 0 0 501 360 +%%HiResBoundingBox: 0.000000 0.000000 501.000000 360.000000 +%%PDFVersion: 1.4 +%%Pages: 1 +%%CreationDate: Thu Apr 17 01:35:03 2014 +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/mmap.xbb Thu Apr 17 01:37:37 2014 +0900 @@ -0,0 +1,8 @@ +%%Title: ./images/mmap.pdf +%%Creator: extractbb 20130405 +%%BoundingBox: 0 0 334 272 +%%HiResBoundingBox: 0.000000 0.000000 334.000000 272.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Thu Apr 17 01:35:03 2014 +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/speany.xbb Thu Apr 17 01:37:37 2014 +0900 @@ -0,0 +1,8 @@ +%%Title: ./images/speany.pdf +%%Creator: extractbb 20130405 +%%BoundingBox: 0 0 569 367 +%%HiResBoundingBox: 0.000000 0.000000 569.000000 367.000000 +%%PDFVersion: 1.4 +%%Pages: 1 +%%CreationDate: Thu Apr 17 01:35:03 2014 +
--- a/paper/introduction.tex Tue Apr 15 18:01:08 2014 +0900 +++ b/paper/introduction.tex Thu Apr 17 01:37:37 2014 +0900 @@ -5,5 +5,7 @@ 先行研究による Task の並列化によって、プログラム全体の処理速度は飛躍的に向上した。\cite{kinjyo} ファイルの読み込み等の I/O を含むプログラムは、読み込み時間が Task の処理時間と比較して非常に重くなる場合が多い。 マルチコアでの並列処理を行ったとしても、I/O の動作を軽量にしなければ、I/O を含めたプログラムの処理は軽量にならない。 + そして従来の mmap では、I/O と読み込んだファイルに対する処理をプログラム作成者が自由に記述することができない。 -そこで本研究では、並列処理時におけるファイル読み込みをどのように実装すれば軽量に動作するかを考慮し、なおかつ読み込みとそれらに対する処理をプログラム作成者が自由に書けるように設計・実装を行う。 + +本研究では、並列処理時におけるファイル読み込みをどのように実装すれば軽量に動作するかを考慮し、なおかつ読み込みとそれらに対する処理をプログラム作成者が自由に書けるように設計・実装を行う。
--- a/paper/io.tex Tue Apr 15 18:01:08 2014 +0900 +++ b/paper/io.tex Thu Apr 17 01:37:37 2014 +0900 @@ -44,12 +44,13 @@ それらを解決するためには、ファイル読み込みと Task を分離し、ファイルの読み込みも制御しやすくでき、なおかつ高速で動くのではないかと考えた。 -% \begin{figure}[htbp] -% \begin{center} -% \includegraphics[width=0.7\textwidth]{fig/mmap.pdf} -% \end{center} -% \caption{mmap image} -% \label{fig:mmap} \end{figure} +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.5]{images/mmap.pdf} +\end{center} +\caption{mmap image} +\label{fig:mmap} +\end{figure} \subsection{Blocked Read の設計と実装} @@ -90,13 +91,13 @@ (図\ref{fig:block}) Read Task が生成されて、その後 Task の生成となるので、Read Task は常に走っている必要がある。 -%\begin{figure}[htbp] -%\begin{center} -%\includegraphics[width=0.8\textwidth]{fig/blockedreadimage.pdf} -%\end{center} -%\caption{Blocked Read image} -%\label{fig:block} -%\end{figure} +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.5]{images/blockedreadimage.pdf} +\end{center} +\caption{Blocked Read image} +\label{fig:block} +\end{figure} 図\ref{fig:block} では、Read Task 1つに対して Task 1つ起動しているが、このように1つ1つ生成、起動をすると Task 生成でメモリを圧迫してしまい、全体的な動作に影響を与えてしまう。 実際には Task をある一定数まとめた単位で生成し、起動を行っている。この単位を Task Block と定義する。 @@ -108,14 +109,14 @@ まだ読み込まれていない領域に対して何らかの処理を行ってしまうので、正しい結果が返ってこなくなってしまう。 それを防止するために、Blocked Read が読み込み終わってから Task Block が起動されるように wait をかけている。 -%(図\ref{fig:block}) -%\begin{figure}[htbp] -%\begin{center} -%\includegraphics[width=1.0\textwidth]{fig/blockreadtask.pdf} -%\end{center} -%\caption{Blocked Read image} -%\label{fig:block} -%\end{figure} +(図\ref{fig:block}) +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.5]{images/blockreadtask.pdf} +\end{center} +\caption{Blocked Read image} +\label{fig:block} +\end{figure} \subsection{I/O 専用 thread の実装} @@ -125,13 +126,13 @@ Blocked Read 、Task それぞれに SPE\_ANY にてデバイスの設定を行うと、Task Manager 側で自動的に CPU を割り当てられ、本来 Blocked Read は連続で読み込むはずが、他の Task を割り当てられてしまう。 (図\ref{fig:speany}) -%\begin{figure}[htbp] -%\begin{center} -%\includegraphics[width=1.0\textwidth]{fig/speany.pdf} -%\end{center} -%\caption{SPE\_ANY での実装時} -%\label{fig:speany} -%\end{figure} +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.5]{images/speany.pdf} +\end{center} +\caption{SPE\_ANY での実装時} +\label{fig:speany} +\end{figure} この問題を解決するために、Task Manager に新しく I/O 専用の thread 、 IO\_0 の追加を行った。 @@ -141,7 +142,7 @@ % %\begin{figure}[htbp] %\begin{center} -%\includegraphics[width=0.7\textwidth]{fig/addio_0.pdf} +%\includegraphics[scale=0.5]{images/addio_0.pdf} %\end{center} %\caption{IO\_0 の追加} %\label{fig:addio0} @@ -150,10 +151,10 @@ SPE\_ANY で使用する CPU の設定よりも高く設定しているので、IO\_0 で設定を行う Read Task に SPE\_ANY で設定した 文字列検索 Task に割り込まれることがなくなる。 (図\ref{fig:io0}) -%\begin{figure}[htbp] -%\begin{center} -%\includegraphics[width=1.0\textwidth]{fig/io0.pdf} -%\end{center} -%\caption{Blocked Read Task を IO\_0 での実装時} -%\label{fig:io0} -%\end{figure} +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.5]{images/io0.pdf} +\end{center} +\caption{Blocked Read Task を IO\_0 での実装時} +\label{fig:io0} +\end{figure}