changeset 56:09ac2339b00d

Add vs graph
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Wed, 07 Feb 2018 19:22:21 +0900
parents a4404c7a72d5
children b07959c8bcc8
files paper/conclusion.tex paper/evaluation.tex paper/master_paper.pdf
diffstat 3 files changed, 34 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/paper/conclusion.tex	Wed Feb 07 18:22:25 2018 +0900
+++ b/paper/conclusion.tex	Wed Feb 07 19:22:21 2018 +0900
@@ -29,10 +29,10 @@
 モデル検査では CbC で記述されたモデル検査器である akasha \cite{atton-ipsj}を使用して行う。
 モデル検査の方針としては、Code Gear の実行を擬似並列で実行し、全ての組合せを列挙する方法で行う。
 
+Go、OpenMP との比較から、 Gears OS が1CPU での動作が遅いということがわかった。
 Gears OS は par goto 文を使用することで Context を生成し、並列処理を行う。
 しかし、Context はメモリ空間の確保や使用する全ての Code/Data Gear を設定する必要があり、生成にある程度の時間がかかってしまう。
-par goto 文は通常のプログラミングの関数呼び出しのように扱われる。
-そこで、 par goto のコンパイルタイミングで実行する Code Gear のフローをモデル検査で解析し、処理が軽い場合は並列に実行せずに、関数呼び出しを行う等の最適化を行う。
+そこで、 par goto のコンパイルタイミングで実行する Code Gear のフローをモデル検査で解析し、処理が軽い場合はContext を生成せずに、関数呼び出しを行う等の最適化を行うといったチューニングが必要である。
 
 今回の CUDA 実装では Output Data Gear を書き出す際に一度 GPU から CPU にデータの送信する必要があった。
 しかし、CPU、 GPU 間のデータの通信はコストが高いことが例題の結果からわかった。
--- a/paper/evaluation.tex	Wed Feb 07 18:22:25 2018 +0900
+++ b/paper/evaluation.tex	Wed Feb 07 19:22:21 2018 +0900
@@ -155,8 +155,24 @@
 Gears OS では Input Data Gear が揃った Code Gear は並列に実行されるため、プログラム全体の並列度を高めることが出来る。
 また 並列処理のコードとデータの依存関係を par goto 文で簡潔に記述することが出来る。
 
-\section{Go との比較}
-Go言語\cite{go} は Google社が開発しているプログラミング言語である。
+Gears OS と OpenMP で実装した Twice の実行結果の比較を\figref{fig:vsopenmp} に示す。
+実行環境は \tabref{powerEdge}、 $2^{27}$ のデータに対して行い、Gears OS 側は配列を 64個のTaskに分割し、OpenMP は for 文を static スケジュールで並列実行した。
+static スケジュールはループの回数をプロセッサーの数で分割し、並列実行を行う openMP のスケジュール方法である。
+
+\begin{figure}[htbp]
+    \begin{center}
+        \includegraphics[scale=0.5]{./fig/vsopenmp.pdf}
+    \end{center}
+    \caption{vs OpenMP}
+    \label{fig:vsopenmp}
+\end{figure}
+
+OpenMP は 1CPUと 32CPU で約10.8 倍の速度向上がみられた。
+一方 Gears OS では約 27.1 倍の速度向上のため、台数効果が高くなっている。
+しかし、Gears OS は 1CPU での実行時間がOpenMP に比べて大幅に遅くなっている。
+
+\section{Go 言語との比較}
+Go 言語\cite{go} は Google社が開発しているプログラミング言語である。
 Go 言語によるTwice の実装例を\coderef{go}に示す。
 
 \lstinputlisting[caption=Go 言語での Twice, label=code:go]{./src/go.go}
@@ -174,3 +190,17 @@
 
 Gears OS では goroutine は par goto 文とほぼ同等に扱うことが出来る。
 また、Code Gear は par goto 文で書き出す Output Data Gear を指定して実行するため、Data Gear の書き出し元が推測しやすい。
+
+Go 言語での OpenMP と同様に Twice を実装しGears OS と比較を行う。
+こちらも実行環境は \tabref{powerEdge}、 $2^{27}$ のデータに対して行い、Gears OS Go言語両方とも配列を64個のTask、 goroutineに分割して並列実行を行った。
+
+\begin{figure}[htbp]
+    \begin{center}
+        \includegraphics[scale=0.5]{./fig/vsgo.pdf}
+    \end{center}
+    \caption{vs Go}
+    \label{fig:vsgo}
+\end{figure}
+
+Go 言語は 1CPUと32CPU で約4.33 倍の速度向上が見られた。
+こちらも OpenMP と同じく、台数効果自体は Gears OS が高いが、 1CPU での実行時間が10倍程度速くなっている。
Binary file paper/master_paper.pdf has changed