Mercurial > hg > Papers > 2014 > masakoha-thesis > final
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] |