changeset 8:8fa7b93195cf

multicore(benchmark is not yet)
author Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
date Thu, 29 Jan 2015 16:49:43 +0900
parents 786db8c94c6e
children e2b7c59f3d65
files paper/chapter3.tex paper/chapter4.tex paper/chapter5.tex paper/master_paper.aux paper/master_paper.dvi paper/master_paper.lof paper/master_paper.log paper/master_paper.lot paper/master_paper.pdf paper/master_paper.toc
diffstat 10 files changed, 177 insertions(+), 83 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter3.tex	Thu Jan 22 11:14:42 2015 +0900
+++ b/paper/chapter3.tex	Thu Jan 29 16:49:43 2015 +0900
@@ -37,6 +37,7 @@
 このようなTaskの分割 →Sort を分割数分繰り返し実行することで全体をSortする。
 
 本論文では Bitonic Sort による測定を行う場合、10万入力を Input とするベンチマークを行う。
+
 \begin{figure}[htpb]
   \begin{center}
     \includegraphics[scale=0.7]{./images/sort.pdf}
@@ -44,13 +45,62 @@
   \caption{Bitonic Sort の例}
   \label{fig:sort}
 \end{figure}
+\newpage
 
 \section{Word Count}
+WordCount は Input としてファイルを受け取り、ファイルの単語数と行数を集計し、表示する。
+空白で区切られたものを単語として扱う。
+
+Word Count の Task の構成は以下の通りである。
+
+\begin{itemize}
+\item WordCountTask
+\item PrintTask
+\end{itemize}
+
+WordCountTask は Input された data を Word Count し、
+単語数と行数を Output として指定された Data 領域に書き込む Task である。
+
+Task には分割されたテキストが送られてくるため、送られてきたテキストの前後の状態によっては振る舞いを変える必要がある。
+分割により Word の途中で切れてしまう場合があり、その場合だとword数-1する処理が必要になる。
+そのため、 WordCountTask は自分が割り当てられた範囲である data の先頭と末尾のパラメータを返す。
+
+PrintTask は WordCountTask によって書き出された単語数と行数を集計し、出力する Task である。
+集計時は全 WordCount の結果を照らし合わせ、分割されたテキストを正しく整合する。
+PrintTask は WordCountTask を wait する設定で、全ての WordCountTask が終了したあとに動作する。
+
+WordCount の対象として入力されたファイルは、 mmap を用いてメモリに展開する。
+その後データを 16KByte の大きさに分割しながら WordCountTask に割り当てていく。
+
+各 Task 間の data の流れを図:\ref{fig:wordcount}に示す。
+
+\begin{figure}[htpb]
+  \begin{center}
+    \includegraphics[scale=0.7]{./images/wordcount.pdf}
+  \end{center}
+  \caption{WordCountのフロー}
+  \label{fig:wordcount}
+\end{figure}
+
+\clearpage
 
 \section{FFT}
+FFT:Fast Fourier Transform(高速フーリエ変換) は、フーリエ変換と周波数フィルタによる画像処理を行う例題である。
+今回は入力として受け取った画像に対してハイパスフィルターを行う例題である。
 
+FFT の Task の構成は以下のとおりである。
+
+\begin{itemize}
+\item BitReverse
+\item Butteerfly
+\item HighPassFilter
+\item SpinFact
+\item Transpose
+\end{itemize}
+
+FFT は画像 Data に対して様々な Task を割り当てる。
+入力は比較的大きなサイズを想定している。
+Input と Output を繰り返し行うと、特に GPU だとボトルネックになってしまう。
+このベンチマークで並列度を維持するにはデータ並列実行に対応し、データ依存で並列化を可能にする必要がある。
 
 
-
-
-
--- a/paper/chapter4.tex	Thu Jan 22 11:14:42 2015 +0900
+++ b/paper/chapter4.tex	Thu Jan 29 16:49:43 2015 +0900
@@ -1,3 +1,26 @@
 \chapter{マルチコアへの対応}
+Cerium は Cell 上で並列に動作するフレームワークであったが、 Mac OS X 、 Linux 上でも並列に実行させることを可能にした。
+
 \section{マルチコア上での実行の機構}
+これまでは FifoManager と FifoScheduler を用いた逐次処理のみであった。
+% FifoManager と FifoScheduler に対応する形で CpuThreads と Scheduler を実装した。
+FifoManager に対応する形で CpuThreads を実装し、Scheduler を並列化した。
+この Threads は Syncronized な Mail Queue で管理されている。
+各スレッドは Input 用と Output 用として Synchronized Queue を2つ持っており、管理スレッドから Task を受けて
+並列に実行する。
+
 \section{ベンチマーク}
+今回使用する実験環境を\ref{tab:dragonfly_spec}に示す.
+\begin{table}[!htbp]
+\label{tab:dragonfly_spec}
+\begin{center}
+\begin{tabular}{|c||c|} \hline
+名前 & 概要 \\ \hline \hline
+CPU & 6-Core Intel Xeon E5@3.5GHz \\ \hline
+Memory & 16GB \\ \hline
+OS & MacOSX 10.10.1 \\ \hline
+Graphics & AMD FirePro D700 6144MB \\ \hline
+\end{tabular}
+\end{center}
+\caption{Ceriumを実行する実験環境}
+\end{table}
--- a/paper/chapter5.tex	Thu Jan 22 11:14:42 2015 +0900
+++ b/paper/chapter5.tex	Thu Jan 29 16:49:43 2015 +0900
@@ -1,6 +1,5 @@
 \chapter{GPGPUへの対応}
 
-\section{OpenCL}
 \subsection{OpenCL による実装の機構}
 \subsection{ベンチマーク}
 
--- a/paper/master_paper.aux	Thu Jan 22 11:14:42 2015 +0900
+++ b/paper/master_paper.aux	Thu Jan 29 16:49:43 2015 +0900
@@ -57,47 +57,51 @@
 \@writefile{toc}{\contentsline {section}{\numberline {4.1}Bitonic Sort}{15}}
 \@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces Bitonic Sort の例}}{16}}
 \newlabel{fig:sort}{{4.1}{16}}
-\@writefile{toc}{\contentsline {section}{\numberline {4.2}Word Count}{16}}
-\@writefile{toc}{\contentsline {section}{\numberline {4.3}FFT}{16}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {第5章}マルチコアへの対応}{17}}
+\@writefile{toc}{\contentsline {section}{\numberline {4.2}Word Count}{17}}
+\@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces WordCountのフロー}}{18}}
+\newlabel{fig:wordcount}{{4.2}{18}}
+\@writefile{toc}{\contentsline {section}{\numberline {4.3}FFT}{19}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {第5章}マルチコアへの対応}{20}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {5.1}マルチコア上での実行の機構}{17}}
-\@writefile{toc}{\contentsline {section}{\numberline {5.2}ベンチマーク}{17}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {第6章}GPGPUへの対応}{18}}
+\@writefile{toc}{\contentsline {section}{\numberline {5.1}マルチコア上での実行の機構}{20}}
+\@writefile{toc}{\contentsline {section}{\numberline {5.2}ベンチマーク}{20}}
+\newlabel{tab:dragonfly_spec}{{5.2}{20}}
+\@writefile{lot}{\contentsline {table}{\numberline {5.1}{\ignorespaces Ceriumを実行する実験環境1}}{20}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {第6章}GPGPUへの対応}{21}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {6.1}OpenCL}{18}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.1}OpenCL による実装の機構}{18}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.2}ベンチマーク}{18}}
-\@writefile{toc}{\contentsline {section}{\numberline {6.2}CUDA}{18}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}CUDA による実装の機構}{18}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}ベンチマーク}{18}}
-\@writefile{toc}{\contentsline {section}{\numberline {6.3}データ並列}{18}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}データ並列実行の機構}{18}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}iterate API}{18}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}ベンチマーク}{18}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {第7章}並列処理向けI/O}{19}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.1}OpenCL}{21}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.1}OpenCL による実装の機構}{21}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.2}ベンチマーク}{21}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.2}CUDA}{21}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}CUDA による実装の機構}{21}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}ベンチマーク}{21}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.3}データ並列}{21}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}データ並列実行の機構}{21}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}iterate API}{21}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}ベンチマーク}{21}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {第7章}並列処理向けI/O}{22}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {7.1}新たに実装したI/Oの機構}{19}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.2}ベンチマーク}{19}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {第8章}Memory Allocator}{20}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.1}新たに実装したI/Oの機構}{22}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.2}ベンチマーク}{22}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {第8章}Memory Allocator}{23}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {8.1}現状のMemory Allocator}{20}}
-\@writefile{toc}{\contentsline {section}{\numberline {8.2}新しいMemory Allocator}{20}}
-\@writefile{toc}{\contentsline {section}{\numberline {8.3}ベンチマーク}{20}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {第9章}結論}{21}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.1}現状のMemory Allocator}{23}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.2}新しいMemory Allocator}{23}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.3}ベンチマーク}{23}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {第9章}結論}{24}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
-\newlabel{chapter:conclusion}{{9}{21}}
-\@writefile{toc}{\contentsline {section}{\numberline {9.1}まとめ}{21}}
-\@writefile{toc}{\contentsline {section}{\numberline {9.2}今後の課題}{21}}
+\newlabel{chapter:conclusion}{{9}{24}}
+\@writefile{toc}{\contentsline {section}{\numberline {9.1}まとめ}{24}}
+\@writefile{toc}{\contentsline {section}{\numberline {9.2}今後の課題}{24}}
 \citation{*}
 \bibstyle{junsrt}
 \bibdata{master_paper}
-\@writefile{toc}{\contentsline {chapter}{謝辞}{22}}
+\@writefile{toc}{\contentsline {chapter}{謝辞}{25}}
 \bibcite{msgpack:2013}{1}
 \bibcite{nobuyasu:2013a}{2}
 \bibcite{shoshi:2011a}{3}
@@ -108,5 +112,5 @@
 \bibcite{dynamo}{8}
 \bibcite{deos2013}{9}
 \bibcite{d_add2013}{10}
-\@writefile{toc}{\contentsline {chapter}{参考文献}{23}}
-\@writefile{toc}{\contentsline {chapter}{発表文献}{24}}
+\@writefile{toc}{\contentsline {chapter}{参考文献}{26}}
+\@writefile{toc}{\contentsline {chapter}{発表文献}{27}}
Binary file paper/master_paper.dvi has changed
--- a/paper/master_paper.lof	Thu Jan 22 11:14:42 2015 +0900
+++ b/paper/master_paper.lof	Thu Jan 29 16:49:43 2015 +0900
@@ -10,6 +10,7 @@
 \contentsline {figure}{\numberline {3.2}{\ignorespaces Scheduler}}{13}
 \addvspace {10\p@ }
 \contentsline {figure}{\numberline {4.1}{\ignorespaces Bitonic Sort の例}}{16}
+\contentsline {figure}{\numberline {4.2}{\ignorespaces WordCountのフロー}}{18}
 \addvspace {10\p@ }
 \addvspace {10\p@ }
 \addvspace {10\p@ }
--- a/paper/master_paper.log	Thu Jan 22 11:14:42 2015 +0900
+++ b/paper/master_paper.log	Thu Jan 29 16:49:43 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)  22 JAN 2015 10:55
+This is e-pTeX, Version 3.1415926-p3.4-110825-2.6 (utf8.euc) (TeX Live 2013) (format=platex 2013.5.30)  29 JAN 2015 14:24
 entering extended mode
  \write18 enabled.
  %&-line parsing enabled.
@@ -348,29 +348,45 @@
 
 ]
 File: ./images/sort.pdf Graphic file (type pdf)
- <./images/sort.pdf>) (./chapter4.tex
+ <./images/sort.pdf>
 File: images/emblem-bitmap.eps Graphic file (type eps)
  <images/emblem-bitmap.eps> [16]
-第 5 章(17ページ)
-) (./chapter5.tex [17
+File: ./images/wordcount.pdf Graphic file (type pdf)
+
+<./images/wordcount.pdf>
+Overfull \hbox (6.37852pt too wide) in paragraph at lines 79--80
+ [] 
+ []
 
-]
-第 6 章(18ページ)
-) (./chapter6.tex [18
+File: images/emblem-bitmap.eps Graphic file (type eps)
+<images/emblem-bitmap.eps> [17]
+File: images/emblem-bitmap.eps Graphic file (type eps)
+ <images/emblem-bitmap.eps> [18])
+(./chapter4.tex
+File: images/emblem-bitmap.eps Graphic file (type eps)
+ <images/emblem-bitmap.eps> [19
 
 ]
-第 7 章(19ページ)
-) (./chapter7.tex [19
+第 5 章(20ページ)
+) (./chapter5.tex [20
+
+]
+第 6 章(21ページ)
+) (./chapter6.tex [21
 
 ]
-第 8 章(20ページ)
-) (./conclusion.tex [20
+第 7 章(22ページ)
+) (./chapter7.tex [22
 
 ]
-第 9 章(21ページ)
-) (./thanx.tex [21
+第 8 章(23ページ)
+) (./conclusion.tex [23
 
-]) (./master_paper.bbl [22
+]
+第 9 章(24ページ)
+) (./thanx.tex [24
+
+]) (./master_paper.bbl [25
 
 ]
 
@@ -381,11 +397,11 @@
 LaTeX Font Warning: Font shape `JY1/gt/m/it' undefined
 (Font)              using `JY1/gt/m/n' instead on input line 25.
 
-) (./appendix.tex [23
+) (./appendix.tex [26
 
 ])
 No file master_paper.ind.
-[24
+[27
 
 ] (./master_paper.aux)
 
@@ -393,12 +409,12 @@
 
  ) 
 Here is how much of TeX's memory you used:
- 2469 strings out of 494008
- 34721 string characters out of 6154472
+ 2473 strings out of 494008
+ 34791 string characters out of 6154472
  177728 words of memory out of 5000000
- 5852 multiletter control sequences out of 15000+600000
+ 5855 multiletter control sequences out of 15000+600000
  20103 words of font info for 78 fonts, out of 8000000 for 9000
  745 hyphenation exceptions out of 8191
  33i,12n,40p,301b,1252s stack positions out of 5000i,500n,10000p,200000b,80000s
 
-Output written on master_paper.dvi (31 pages, 67436 bytes).
+Output written on master_paper.dvi (34 pages, 74488 bytes).
--- a/paper/master_paper.lot	Thu Jan 22 11:14:42 2015 +0900
+++ b/paper/master_paper.lot	Thu Jan 29 16:49:43 2015 +0900
@@ -6,6 +6,7 @@
 \contentsline {table}{\numberline {3.2}{\ignorespaces Task 側で使用する API}}{14}
 \addvspace {10\p@ }
 \addvspace {10\p@ }
+\contentsline {table}{\numberline {5.1}{\ignorespaces Ceriumを実行する実験環境1}}{20}
 \addvspace {10\p@ }
 \addvspace {10\p@ }
 \addvspace {10\p@ }
Binary file paper/master_paper.pdf has changed
--- a/paper/master_paper.toc	Thu Jan 22 11:14:42 2015 +0900
+++ b/paper/master_paper.toc	Thu Jan 29 16:49:43 2015 +0900
@@ -20,32 +20,32 @@
 \contentsline {section}{\numberline {3.5}Task 生成の例}{13}
 \contentsline {chapter}{\numberline {第4章}Ceriumを用いた例題}{15}
 \contentsline {section}{\numberline {4.1}Bitonic Sort}{15}
-\contentsline {section}{\numberline {4.2}Word Count}{16}
-\contentsline {section}{\numberline {4.3}FFT}{16}
-\contentsline {chapter}{\numberline {第5章}マルチコアへの対応}{17}
-\contentsline {section}{\numberline {5.1}マルチコア上での実行の機構}{17}
-\contentsline {section}{\numberline {5.2}ベンチマーク}{17}
-\contentsline {chapter}{\numberline {第6章}GPGPUへの対応}{18}
-\contentsline {section}{\numberline {6.1}OpenCL}{18}
-\contentsline {subsection}{\numberline {6.1.1}OpenCL による実装の機構}{18}
-\contentsline {subsection}{\numberline {6.1.2}ベンチマーク}{18}
-\contentsline {section}{\numberline {6.2}CUDA}{18}
-\contentsline {subsection}{\numberline {6.2.1}CUDA による実装の機構}{18}
-\contentsline {subsection}{\numberline {6.2.2}ベンチマーク}{18}
-\contentsline {section}{\numberline {6.3}データ並列}{18}
-\contentsline {subsection}{\numberline {6.3.1}データ並列実行の機構}{18}
-\contentsline {subsection}{\numberline {6.3.2}iterate API}{18}
-\contentsline {subsection}{\numberline {6.3.3}ベンチマーク}{18}
-\contentsline {chapter}{\numberline {第7章}並列処理向けI/O}{19}
-\contentsline {section}{\numberline {7.1}新たに実装したI/Oの機構}{19}
-\contentsline {section}{\numberline {7.2}ベンチマーク}{19}
-\contentsline {chapter}{\numberline {第8章}Memory Allocator}{20}
-\contentsline {section}{\numberline {8.1}現状のMemory Allocator}{20}
-\contentsline {section}{\numberline {8.2}新しいMemory Allocator}{20}
-\contentsline {section}{\numberline {8.3}ベンチマーク}{20}
-\contentsline {chapter}{\numberline {第9章}結論}{21}
-\contentsline {section}{\numberline {9.1}まとめ}{21}
-\contentsline {section}{\numberline {9.2}今後の課題}{21}
-\contentsline {chapter}{謝辞}{22}
-\contentsline {chapter}{参考文献}{23}
-\contentsline {chapter}{発表文献}{24}
+\contentsline {section}{\numberline {4.2}Word Count}{17}
+\contentsline {section}{\numberline {4.3}FFT}{19}
+\contentsline {chapter}{\numberline {第5章}マルチコアへの対応}{20}
+\contentsline {section}{\numberline {5.1}マルチコア上での実行の機構}{20}
+\contentsline {section}{\numberline {5.2}ベンチマーク}{20}
+\contentsline {chapter}{\numberline {第6章}GPGPUへの対応}{21}
+\contentsline {section}{\numberline {6.1}OpenCL}{21}
+\contentsline {subsection}{\numberline {6.1.1}OpenCL による実装の機構}{21}
+\contentsline {subsection}{\numberline {6.1.2}ベンチマーク}{21}
+\contentsline {section}{\numberline {6.2}CUDA}{21}
+\contentsline {subsection}{\numberline {6.2.1}CUDA による実装の機構}{21}
+\contentsline {subsection}{\numberline {6.2.2}ベンチマーク}{21}
+\contentsline {section}{\numberline {6.3}データ並列}{21}
+\contentsline {subsection}{\numberline {6.3.1}データ並列実行の機構}{21}
+\contentsline {subsection}{\numberline {6.3.2}iterate API}{21}
+\contentsline {subsection}{\numberline {6.3.3}ベンチマーク}{21}
+\contentsline {chapter}{\numberline {第7章}並列処理向けI/O}{22}
+\contentsline {section}{\numberline {7.1}新たに実装したI/Oの機構}{22}
+\contentsline {section}{\numberline {7.2}ベンチマーク}{22}
+\contentsline {chapter}{\numberline {第8章}Memory Allocator}{23}
+\contentsline {section}{\numberline {8.1}現状のMemory Allocator}{23}
+\contentsline {section}{\numberline {8.2}新しいMemory Allocator}{23}
+\contentsline {section}{\numberline {8.3}ベンチマーク}{23}
+\contentsline {chapter}{\numberline {第9章}結論}{24}
+\contentsline {section}{\numberline {9.1}まとめ}{24}
+\contentsline {section}{\numberline {9.2}今後の課題}{24}
+\contentsline {chapter}{謝辞}{25}
+\contentsline {chapter}{参考文献}{26}
+\contentsline {chapter}{発表文献}{27}