1
|
1 \chapter{TaskManagerを使った例題}
|
|
2 本章では、TaskManager を使った例題を紹介する
|
|
3 \section{WordCount}
|
|
4 例題としTaskManagerを使ったWordCountを実装した。Taskの構成は以下のである。
|
|
5 \begin{enumerate}
|
|
6 \item WordCountTask
|
|
7 \item PrintTask
|
|
8 \end{enumerate}
|
|
9 WordCountTaskは、input された data を word count し、単語数と行数を output に指定された data 領域に書きこむTaskである。
|
|
10 分割されたデータが送られてくるため、分割された前後のテキストがどうなっているかはわからない。そのため担当範囲であるデータの先頭と末尾のパラメータを単語数と行数の他に付け加える。後にそのデータを他のword count 結果と照らし合わせ、分割されたテキストを正しく整合する。
|
|
11 PrintTask は WordCountTask によって書き出された単語数と行数を集計し、出力するTaskである。WordCountTask を wait する設定で、すべてのWordCountTaskが終了したあとに、動作する。
|
|
12 word count 対象として入力されたファイルは、mmapを用いてメモリに展開する。その後データを16kbyteの大きさに分割しながら、WordCountTaskに割り当てていく。(\figref{wc-graf})
|
0
|
13
|
1
|
14 \begin{figure}[htb]
|
|
15 \begin{center}
|
|
16 \includegraphics[scale=0.70]{./images/wc_graf1.pdf}
|
|
17 \end{center}
|
|
18 \caption{wordcount flow}
|
|
19 \label{fig:wc-graf}
|
|
20 \end{figure}
|
0
|
21
|
4
|
22 サイズを 100MB, 200MB としたテキストファイルを対象に、速度の測定を行った。Linux wc は PS3上の Linux のが提供するwcコマンドを用いた結果で PPE 1基を利用したものである。Cerium wc は SPE 6基 を用い今回実装した word count の計測結果である。(\tabref{wc_speed})
|
|
23
|
|
24 \begin{table}[!htb]
|
|
25 \begin{center}
|
|
26 \caption{speed of WordCount} \label{tab:wc_speed}
|
|
27 \hbox to\hsize{\hfil
|
|
28 \begin{tabular}{|c|c|c|c|} \hline
|
|
29 wc & file size(MB) & time(sec) \\ \hline
|
|
30 Linux & 100 & 30.9 \\ \hline
|
|
31 Linux & 200 & 62.8 \\ \hline
|
|
32 Cerium & 100 & 2.2 \\ \hline
|
|
33 Cerium & 200 & 12.8 \\ \hline
|
|
34 \end{tabular}\hfil}
|
|
35 \end{center}
|
|
36 \end{table}
|
|
37
|
|
38 100MBのテキストを扱う場合には、Linux と比べ15倍ほどの差が見られた。200MB の場合は約5倍ほどであるのは、PPE のメモリ容量が256MBとなっており、200MBのファイルを扱う場合には、頻繁にスワップなどが起きているため、ファイルのIOの部分でのオーバヘッドが高いと考えられる。通常のwcコマンドよりも Cerium を用いた wc が高い性能を示した。
|
1
|
39
|
|
40 \section{Sort}
|
|
41
|
|
42 \section{Prime}
|
|
43
|
|
44
|