view paper/compare.tex @ 9:e17bc730af1a

separate folder
author sugi
date Tue, 02 Apr 2013 20:02:48 +0900
parents
children
line wrap: on
line source

\section{実験}

\subsection{実験環境}
SEDAがコア数の少ないマシーンではうまく動作しないことを考慮して、メニコア環境で実験を行った。


\begin{table}[htbp]
\caption{実行環境の詳細}
\label{tb:MacPro}
\begin{center}
\begin{tabular} {|l|l|}
  \hline
  {\bf CPU}&Intel(R) Xeon(R) X5650 @2.67GHz\\
  \hline
  {\bf 物理コア数}&12\\
  \hline
  {\bf 論理コア数}&24\\
  \hline
  {\bf CPU キャッシュ}&12MB\\
  \hline
  {\bf Memory}&16GB\\
  \hline
\end{tabular}
\end{center}
\end{table}


\subsection{実験概要}
今回それぞれの改善案の効果を調査するために以下の3つの実験を行った。
\subsubsection{SEDAの有無}
LocalからData Segmentを取得するCode Segmentを10000回実行される時間を計測する。
SEDAを使用した場合と、しない場合の2つの比較を行い、その効果を測定する。

\begin{table}[html]
\caption{SEDAの有無の比較}
\label{tb:result1}
\begin{center}
\begin{tabular}{|l|l|l|}
\hline
 SEDA& あり & なし \\ 
 \hline
 実行時間 (ms)& 27.72 & 7.53 \\ 
\hline
\end{tabular} 
\end{center}
\end{table}
SEDAを使わずにコマンドを処理する方が約3.7倍差が見られた。(表\ref{tb:result1})
\subsubsection{flipの効果の測定}
Local にData Segmentを10000回追加するのにかかる時間を計測する。
flipコマンドを使用して追加する場合と、putコマンドを使用して追加する場合の2つの比較を行う。

\begin{table}[html]
\caption{flipの結果}
\label{tb:result2}
\begin{center}
\begin{tabular}{|l|l|l|}
\hline
Command & flip & put \\ 
 \hline
 実行時間 (ms)& 61.12 & 65.24 \\ 
\hline
\end{tabular} 
\end{center}
\end{table}

flipを使う方が若干ではあるが速度改善が見られる。(表\ref{tb:result2})

\subsubsection{bitonic sortにおける効果の測定}
bitonic sortにより、100万の要素をもつ配列のSortにかかる時間を計測する。分割数は10個で行った。

\begin{table}[html]
\caption{bitonic sortの結果}
\label{tb:result3}
\begin{center}
\begin{tabular}{|l|l|l|}
\hline
 & 改善前 & 改善後 \\ 
 \hline
 実行時間 (ms)& 199.38 & 184.64 \\ 
\hline
\end{tabular} 
\end{center}
\end{table}


\subsection{考察}
実験の結果より今回の改善により、約10\%程Aliceの速度改善を行うことができた。(表\ref{tb:result3})この差のほとんどがSEDAによるものと推測される。
LinkedBlockingQueueを使ったSEDAの実装は、コストが高くレスポンスを求めるには不向きであることがわかった。
CeriumのようにスケジューラーによってCode SegmentにData Segmentをセットしたほうがレスポンスを向上できると思われる。