comparison preliminary/final-thesis.tex @ 71:6bddfb10df11

fix
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Tue, 25 Feb 2014 21:40:27 +0900
parents 3988365f6f03
children 3bf281002f72
comparison
equal deleted inserted replaced
70:286a8f57becf 71:6bddfb10df11
22 \author{085726C {古波倉}{正隆} 指導教員 : 河野真治} 22 \author{085726C {古波倉}{正隆} 指導教員 : 河野真治}
23 \date{} 23 \date{}
24 \maketitle 24 \maketitle
25 \thispagestyle{fancy} 25 \thispagestyle{fancy}
26 26
27 \section{はじめに} 27 \section{研究背景と目的}
28 \subsection{研究背景と目的}
29 近年、CPU 1 コア当たりのクロック数が頭打ちとなっているため、シングルコアでの処理能力はほとんど上がっていない。 28 近年、CPU 1 コア当たりのクロック数が頭打ちとなっているため、シングルコアでの処理能力はほとんど上がっていない。
30 それを解決した結果、シングルコアからマルチコアへの移行によって CPU 性能が向上している。 29 それを解決した結果、シングルコアからマルチコアへの移行によって CPU 性能が向上している。
31 しかし、マルチコア CPU を最大限に活かすためには、プログラムの並列度を向上させなければならない。 30 しかし、マルチコア CPU を最大限に活かすためには、プログラムの並列度を向上させなければならない。
32 そこで当研究室では、並列プログラミング用フレームワーク、Cerium 及び Cerium Task Manager の開発を行い、提供することによって並列プログラミングを容易にしている。 31 そこで当研究室では、並列プログラミング用フレームワーク、Cerium 及び Cerium Task Manager の開発を行い、提供することによって並列プログラミングを容易にしている。
33 32
40 Cerium Task Managerは、並列処理をTask単位で記述する。関数やサブルーチンをTaskとして扱い、そのTaskに対してInput Data、Output Data及び依存関係を設定する。そして、それに基づいた設定の元で Task Manager に管理され実行される。本稿で述べるInput Dataとは、検索対象となるテキストファイルのことである。 39 Cerium Task Managerは、並列処理をTask単位で記述する。関数やサブルーチンをTaskとして扱い、そのTaskに対してInput Data、Output Data及び依存関係を設定する。そして、それに基づいた設定の元で Task Manager に管理され実行される。本稿で述べるInput Dataとは、検索対象となるテキストファイルのことである。
41 40
42 Cerium Task ManagerはPlayStation 3/Cell、Mac OS X及びLinux上で利用することが可能で、近年ではGPUでの利用も可能となった。\cite{tomari} 41 Cerium Task ManagerはPlayStation 3/Cell、Mac OS X及びLinux上で利用することが可能で、近年ではGPUでの利用も可能となった。\cite{tomari}
43 42
44 \section{I/O を含む Task の概要} 43 \section{I/O を含む Task の概要}
45 ファイルを読み込んで一定の大きさでファイルを分割し (File Read)、それらに対してそれぞれ文字列検索等の処理 (Run Tasks)を行う。 44 ファイルを読み込んで一定の大きさでファイルを分割し (File Read)、それらに対してそれぞれ文字列検索等の処理 (Task)を行う。
46 そしてそれぞれの処理から返されたの結果 (Output Data)を最後に集計をして結果を返す(Run resultTask)。(図\ref{fig:includeio}) 45 そしてそれぞれの処理から返されたの結果 (Output Data)を最後に集計をして結果を返す(Result Task)。(図\ref{fig:includeio})
47 46
48 図\ref{fig:includeio} 47 図\ref{fig:includeio}
49 48
50 \begin{figure}[htbp] 49 \begin{figure}[htbp]
51 \begin{center} 50 \begin{center}
52 \includegraphics[width=0.4\textwidth]{pic/includeio.pdf} 51 \includegraphics[width=0.5\textwidth]{pic/includeio.pdf}
53 \end{center} 52 \end{center}
54 \caption{I/O を含む Task} 53 \caption{I/O を含む Task}
55 \label{fig:includeio} 54 \label{fig:includeio}
56 \end{figure} 55 \end{figure}
57 56
83 \end{figure} 82 \end{figure}
84 83
85 \subsection{I/O 専用 thread の実装} 84 \subsection{I/O 専用 thread の実装}
86 Cerium Task Manager では Task 単位で CPU Type の設定を変更することができる。 85 Cerium Task Manager では Task 単位で CPU Type の設定を変更することができる。
87 SPE\_ANY という Type を設定すると、Cerium Task Manager 側が自動的に CPU を割り振る。 86 SPE\_ANY という Type を設定すると、Cerium Task Manager 側が自動的に CPU を割り振る。
88 しかし、今回の実装でこの Type を使用してしまうと、Blocked Read Task の隙間時間に Task が割り振られてしまう問題がある。 87 しかし、今回の実装でこの Type を使用してしまうと、Blocked Read Task に割り込んで Task が割り振られてしまう問題がある。
89 その問題を解決するために、IO\_0 という Type を新しく実装した。 88 その問題を解決するために、IO\_0 という I/O 専用の thread を実装した。
90 IO\_0 は他の Type よりも priority を高く設定しているため、他の Task に割り込まれることがないようチューニングを行った。 89 この Thread は I/O を最優先に実行されるようにチューニングを行った。
91 (図\ref{fig:io0}) 90 (図\ref{fig:io0})
92 %% 91 %%
93 %(図\ref{fig:speany}) 92 %(図\ref{fig:speany})
94 % 93 %
95 %\begin{figure}[htbp] 94 %\begin{figure}[htbp]