Mercurial > hg > Papers > 2016 > masa-master
view paper/c5.tex @ 57:4efa1c7604f5
add svg
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 14 Feb 2016 02:29:17 +0900 |
parents | c5.tex@49526135ba64 |
children | 5352d96f5cf6 |
line wrap: on
line source
\chapter{ベンチマーク} 本項で行なった実験の環境は以下の通りである。 \begin{itemize} \item Mac OS X 10.10.5 \item 2*2.66 GHz 6-Core Intel Xeon \item Memory 16GB 1333MHz DDR3 \item 1TB HDD \end{itemize} Cerium で実装した Word Count と Mac の wc の比較と、今回実装した正規表現と Mac の egrep の比較を行なった。 また、それぞれの結果に実装した並列処理向け I/O の結果も含む。 \section{Word Count} ファイルの大きさは 約500MByte で、このファイルには 約650万行、約8300万単語が含まれている。 図\ref{fig:wordcount} はファイル読み込みを含まない Word Count の結果である。 Mac の wc ではこのファイルを処理するのに 4.08 秒かかる。それに対して、Cerium Word Count は 1 CPU で 3.70 秒、12 CPU だと 0.40 秒で処理できる。 1 CPU で動作させると Mac の wc よりも 1.1 倍ほど速くなり、12 CPU で動作させると wc よりも 10.2 倍ほど速くなった。 1 CPU と 12 CPU で比較すると、9.25 倍ほど速くなった。 12 倍速くなるはずだが、Word Count の処理以外にも Word Count のタスクを作る、タスクを CPU に送るなどの通信部分も含まれるため理論値は出ない。 表\ref{table:metachar} \begin{tiny} \begin{table}[ht] \begin{center} \begin{tabular}[t]{r|r} \hline 実行方式 & 実行速度(秒)\\ \hline Mac(wc) & 4.08 \\ \hline Cerium Word Count(CPU 1) & 3.70\\ \hline Cerium Word Count(CPU 4) & 1.00\\ \hline Cerium Word Count(CPU 8) & 0.52\\ \hline Cerium Word Count(CPU 12) & 0.40\\ \hline \end{tabular} \caption{ファイル読み込み無しの Word Count} \label{fig:wordcount} \end{center} \end{table} \end{tiny} 図\ref{fig:IOwordcount} は、ファイル読み込みを含めた Word Count の結果である。 Mac の wc ではこのファイルを処理するのに 10.59 秒かかる。それに対して、Cerium Word Count は mmap Blocked Read 全ての状況で Mac の wc よりも速いことを示している。 Cerium Word Count 12 CPU のとき、7.83 秒で処理をしており、Mac の wc の 1.4 倍ほど速くなっている。 mmap は読み込みを OS が制御しており、書き手が制御できない。 また Word Count が走る際ファイルアクセスはランダムアクセスとなる。 mmap はランダムアクセスを想定していなくてグラフにばらつきが起こっていると考えられる。 Blocked Read では読み込みをプログラムの書き手が制御しており、ファイルの読み込みもファイルの先頭から順次読み込みを行なっている。 そのため、読み込みを含めた結果にばらつきが起こりにくくなっていると予想される。 \begin{tiny} \begin{table}[ht] \begin{center} \begin{tabular}[t]{r|r|r|r} \hline CPU Num / 実行方式 & Mac(wc) & mmap & Blocked Read\\ \hline 1 & 10.590 & 9.96 & 9.33 \\ \hline 2 & --- & 8.63 & 8.52 \\ \hline 4 & --- & 10.35 & 8.04 \\ \hline 8 & --- & 9.26 & 7.82 \\ \hline \end{tabular} \caption{ファイル読み込みを含む Word Count} \label{table:IOwordcount} \end{center} \end{table} \end{tiny} \section{正規表現} \begin{itemize} \item DFA を生成後(NFA であれば、Subset Construction後)、逐次にDFAと照らし合わせる。 \item 並列処理時に NFA・DFA を分割した Task に配りそれぞれの Taskで 照らし合わせる。照らし合わせた際に NFA だとわかった場合にはその場で Subset Construction し DFA を生成する。 \end{itemize} 図\ref{table:AZaz} \begin{tiny} \begin{table}[ht] \begin{center} \begin{tabular}[t]{r|r|r|r} \hline CPU Num / 実行方式 & egrep & mmap & Blocked Read\\ \hline 1 & 56.51 & 35.78 & 30.68 \\ \hline 2 & --- & 17.19 & 16.50 \\ \hline 4 & --- & 15.90 & 15.91 \\ \hline 8 & --- & 15.80 & 15.00 \\ \hline \end{tabular} \caption{AZaz} \label{table:AZaz} \end{center} \end{table} \end{tiny} 表\ref{table:abab} \begin{tiny} \begin{table}[ht] \begin{center} \begin{tabular}[t]{r|r|r|r} \hline CPU Num / 実行方式 & egrep & mmap & Blocked Read\\ \hline 1 & 83.09 & 57.65 & 40.49 \\ \hline 2 & --- & 43.96 & 33.72 \\ \hline 4 & --- & 33.37 & 34.26 \\ \hline 8 & --- & 35.48 & 32.46 \\ \hline \end{tabular} \caption{abab} \label{table:abab} \end{center} \end{table} \end{tiny} 表\ref{table:metachar} \begin{tiny} \begin{table}[ht] \begin{center} \begin{tabular}[t]{c|r|r} \hline 実行方式 & ファイル読み込み有 & ファイル読み込み無\\ \hline DFAの状態遷移での逐次実行 & 21.171 & 16.150\\ \hline 並列処理(CPU 2) & 27.061 & 15.401\\ \hline 並列処理(CPU 12) & 10.419 & 7.386\\ \hline egrep & 57.753 & --- \\ \hline \end{tabular} \caption{実装したそれぞれのプログラムと egrep との比較} \label{table:metachar} \end{center} \end{table} \end{tiny}