Mercurial > hg > Papers > 2018 > parusu-master
changeset 58:131b1274cbae
Fix layout
author | Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 07 Feb 2018 20:03:24 +0900 |
parents | b07959c8bcc8 |
children | ed207d6c511a |
files | paper/conclusion.tex paper/evaluation.tex paper/gearsOS.tex paper/gpu.tex paper/master_paper.pdf paper/parallelism_gears.tex |
diffstat | 6 files changed, 18 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/conclusion.tex Wed Feb 07 19:23:18 2018 +0900 +++ b/paper/conclusion.tex Wed Feb 07 20:03:24 2018 +0900 @@ -22,6 +22,7 @@ 今後の課題として、Gears OS の並列処理の信頼性の保証、 チューニングを行う。 Gears OS では証明とモデル検査をメタレベルで実行することで信頼性を保証する。 + 証明は CbC のプログラムを証明支援系の Agda に対応させて証明を行う。 現在は Gears OS の Interface 部分の動作の証明を行っており、Stack や Tree の動作の証明を行っている。 Gears OS の並列処理の信頼性を証明するには Synchronized Queue の証明を行う必要がある。
--- a/paper/evaluation.tex Wed Feb 07 19:23:18 2018 +0900 +++ b/paper/evaluation.tex Wed Feb 07 20:03:24 2018 +0900 @@ -69,16 +69,16 @@ \end{center} \end{table} +\newpage + \begin{figure}[htbp] \begin{center} - \includegraphics[scale=0.5]{./fig/twice.pdf} + \includegraphics[scale=0.6]{./fig/twice.pdf} \end{center} \caption{$2^{27}$ のデータに対する Twice} \label{fig:twice} \end{figure} -\newpage - 1 CPU と 32 CPU では 約 27.1 倍の速度向上が見られた。 ある程度の台数効果があると考えられる。 @@ -128,19 +128,19 @@ \begin{figure}[htbp] \begin{center} - \includegraphics[scale=0.5]{./fig/bitonicSort.pdf} + \includegraphics[scale=0.6]{./fig/bitonicSort.pdf} \end{center} \caption{$2^{24}$ のデータに対する BitonicSort} \label{fig:bitonicSort} \end{figure} +\newpage + 1 CPU と 32 CPU で 約22.12 倍 の速度向上が見られた。 GPU では通信時間を含めると 8 CPU の約1.16倍となり、 kernel のみの実行では 32 CPU の約11.48倍となった。 現在の Gears OS の CUDA 実装では、 Output Data Gear を書き出す際に一度 GPU から CPU へ kernel の実行結果の書き出しを行っており、その処理の時間で差が出たと考えられる。 GPU で実行される Task 同士の依存関係の解決の際はCuDevicePtr などのGPU のメモリへのポインタを渡し、CPU でデータが必要になったときに初めて GPU から CPU へデータの通信を行うメタ計算の実装が必要となる。 -\newpage - \section{OpenMP との比較} OpenMP\cite{openmp} は C、 C++ のプログラムにアノテーションを付けることで並列化を行う。 アノテーションを \coderef{openMP} のように for 文の前につけることで、ループの並列化を行う。 @@ -155,13 +155,15 @@ Gears OS では Input Data Gear が揃った Code Gear は並列に実行されるため、プログラム全体の並列度を高めることが出来る。 また 並列処理のコードとデータの依存関係を par goto 文で簡潔に記述することが出来る。 -Gears OS と OpenMP で実装した Twice の実行結果の比較を\figref{fig:vsopenmp} に示す。 +Gears OS と OpenMP で実装した Twice の実行結果の比較を\figref{vsopenmp} に示す。 実行環境は \tabref{powerEdge}、 $2^{27}$ のデータに対して行い、Gears OS 側は配列を 64個のTaskに分割し、OpenMP は for 文を static スケジュールで並列実行した。 static スケジュールはループの回数をプロセッサーの数で分割し、並列実行を行う openMP のスケジュール方法である。 +\newpage + \begin{figure}[htbp] \begin{center} - \includegraphics[scale=0.5]{./fig/vsopenmp.pdf} + \includegraphics[scale=0.6]{./fig/vsopenmp.pdf} \end{center} \caption{vs OpenMP} \label{fig:vsopenmp} @@ -194,13 +196,15 @@ Go 言語での OpenMP と同様に Twice を実装しGears OS と比較を行う。 こちらも実行環境は \tabref{powerEdge}、 $2^{27}$ のデータに対して行い、Gears OS Go言語両方とも配列を64個のTask、 goroutineに分割して並列実行を行った。 +\newpage + \begin{figure}[htbp] \begin{center} - \includegraphics[scale=0.5]{./fig/vsgo.pdf} + \includegraphics[scale=0.6]{./fig/vsgo.pdf} \end{center} \caption{vs Go} \label{fig:vsgo} \end{figure} Go 言語は 1CPUと32CPU で約4.33 倍の速度向上が見られた。 -こちらも OpenMP と同じく、台数効果自体は Gears OS が高いが、 1CPU での実行時間が10倍程度速くなっている。 +こちらも OpenMP と同じく、台数効果自体は Gears OS が高いが、1CPU での実行時間はGo 言語が大幅に速くなっている。
--- a/paper/gearsOS.tex Wed Feb 07 19:23:18 2018 +0900 +++ b/paper/gearsOS.tex Wed Feb 07 20:03:24 2018 +0900 @@ -81,7 +81,7 @@ \begin{figure}[htbp] \begin{center} - \includegraphics[scale=0.7]{./fig/meta_cg_dg.pdf} + \includegraphics[scale=0.8]{./fig/meta_cg_dg.pdf} \end{center} \caption{Meta Code Gear の実行} \label{fig:mcg1}
--- a/paper/gpu.tex Wed Feb 07 19:23:18 2018 +0900 +++ b/paper/gpu.tex Wed Feb 07 20:03:24 2018 +0900 @@ -25,7 +25,7 @@ \begin{figure}[htbp] \begin{center} - \includegraphics[scale=0.5]{./fig/cudaArchitecture.pdf} + \includegraphics[scale=0.7]{./fig/cudaArchitecture.pdf} \end{center} \caption{blockサイズ(3,3)、 threadサイズ(3,3) に展開} \label{fig:cudaArchitecture} @@ -37,8 +37,6 @@ また、block 内の thread 数は blockDim という組み込み変数で取得でき、これも3次元のベクター型になっている。 CUDA では これらの組み込み変数から thread が対応するデータを割り出し、データ並列の処理を行う。 -\newpage - \section{CUDAWorker} CUDAWorker は TaskManager から送信される CUDA用の Task を取得し、実行を行う。 @@ -86,8 +84,6 @@ Gears OS ではデータ並列 Task の際は Iterator Interface を持っており、 そこで指定した長さ、次元数に応じて cuLaunchKernel の引数を決定する。 % 少ないけどコードはなるべく載せたくない(メタ部分 + 複雑) -\newpage %layout - \section{stub Code Gear による kernel の実行} Gears OS では stub Code Gear で CUDA による実行の切り替える。
--- a/paper/parallelism_gears.tex Wed Feb 07 19:23:18 2018 +0900 +++ b/paper/parallelism_gears.tex Wed Feb 07 20:03:24 2018 +0900 @@ -201,7 +201,7 @@ \begin{figure}[htbp] \begin{center} - \includegraphics[scale=0.6]{./fig/dependency.pdf} + \includegraphics[scale=0.7]{./fig/dependency.pdf} \end{center} \caption{依存関係の解決処理} \label{fig:dependency}