changeset 51:f48e8b45c534

Add conclusion
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Tue, 06 Feb 2018 18:03:23 +0900
parents d916e1313305
children 7d72512ac2e8
files paper/conclusion.tex paper/introduction.tex paper/master_paper.pdf paper/parallelism_gears.tex
diffstat 4 files changed, 23 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/paper/conclusion.tex	Tue Feb 06 16:10:40 2018 +0900
+++ b/paper/conclusion.tex	Tue Feb 06 18:03:23 2018 +0900
@@ -1,4 +1,23 @@
-\chapter{まとめ}
+\chapter{結論}
+本研究では Gears OS の並列実行機構の実装を行った。
+Gears OS は処理を Code Gear、データを Data Gear を用いて処理を実行する。
+Code Gear と Input/Output Data Gear の組を Task とし、並列実行を行う。
+
+Gears OS のプログラミングは Interface という 一部の Code Gear と Data Gear の集合を表現する Meta Data Gear を用いて行われる。
+この Interface は stub Code Gear という全ての Code Gear に対応する Meta Code Gear で Data Gear を参照する。
+
+Gears OS の Task は Context という全ての Code/Data Gear を参照できる Meta Data Gear が対応する。
+並列処理を行う際は Context を生成し、 Code Gear と Input/Output Data Gear を Context に設定して TaskManager 経由で各 Worker の SynchronizedQueue に送信される。
+Context の設定はメタレベルの記述になるため、ノーマルレベルでは par goto 文というCbC の goto 文に近い記述で並列処理を行える。
+この par goto は通常のプログラミングの関数呼び出しのように扱える。
+
+Gears OS の GPU 対応はアーキテクチャ用の Worker と Executor、 Buffer を用意することでアーキテクチャ毎に合わせた実行を行える。
+本研究では CUDA 実装として CUDAWorker、 CUDAExecutor、 CUDABufferの実装を行い、実行確認を行った。
+また、 CPU、 GPUの実行の切り替えは並列実行される Code Gear の stub Code Gear で継続先を切り替えることでメタレベルで記述することが可能となった。
+
+Twice と BitonicSort の例題の測定結果では 1CPU と 32CPU で Twice では約 27.1 倍、BitonicSort では 約22.12 倍の速度向上が見られた。
+また、GPU 実行の測定も行い、 kernel のみの実行時間では 32 CPU より Twice では約7.2倍、BitonicSort では約11.48倍の速度向上がみられ、GPU の性能を活かすことができた。
+
 \section{今後の課題}
 今後の課題として、Gears OS の並列処理の信頼性の保証、 チューニングを行う。
 
--- a/paper/introduction.tex	Tue Feb 06 16:10:40 2018 +0900
+++ b/paper/introduction.tex	Tue Feb 06 18:03:23 2018 +0900
@@ -22,7 +22,7 @@
 生成された Context には実行される Code Gear と対応する Input/Output Data Gear が登録され、割り振られた先で Context に設定された Code Gear を実行する。
 このContext を用いた並列処理は新規に実行環境を作り、引数を設定するなどの煩雑なメタレベルの処理であり、ノーマルレベルでは Go 言語の goroutine のような簡潔な並列構文があることが望ましい。
 
-本研究では Gears OS の並列実行機構、 並列構文を実装し、 例題を用いて Gears OS の並列処理の評価を行う。
+本研究では Gears OS のマルチコアCPU と CUDA による GPUでの実行機構、 並列構文を実装し、 例題を用いて Gears OS の並列処理の評価を行う。
 
 % これはryokka 向きかなぁ
 
Binary file paper/master_paper.pdf has changed
--- a/paper/parallelism_gears.tex	Tue Feb 06 16:10:40 2018 +0900
+++ b/paper/parallelism_gears.tex	Tue Feb 06 18:03:23 2018 +0900
@@ -70,7 +70,7 @@
 \coderef{createCPUWorker} に Task を CPU で実行する CPUWorker の初期化部分を示す。
 CPUWorker は初期化の際に スレッドを生成する(\coderef{createCPUWorker} 10行目)。
 生成されたスレッドはまず startWorker 関数(\coderef{createCPUWorker} 14-21行目)を呼び出し、このスレッド用の Context を生成する。
-Context をスレッド毎に生成することで、メモリ空間をスレッドごとに持てるため Gearef マクロ で interface の引数を取得する際の競合、メモリ確保の処理での他のスレッドの停止を防ぐ事ができる。
+Context をスレッド毎に生成することで、メモリ空間をスレッドごとに持てるため Gearef マクロ で Interface の引数を取得する際の競合、メモリ確保の処理での他のスレッドの停止を防ぐ事ができる。
 
 \lstinputlisting[caption=CPUWorker の初期化, label=code:createCPUWorker]{./src/createCPUWorker.cbc}
 
@@ -222,6 +222,7 @@
 par goto で生成された Task は \_\_exit に継続することで終了する。
 Gears OS の Task は Output Data Gear を生成した時点で終了するので、par goto では直接 \_\_exit に継続するのではなく、Output Data Gear への書き出し処理に継続される。
 これにより Code Gear と Data Gear の依存関係をノーマルレベルで記述できるようになる。
+この par goto 文は 通常のプログラミングの関数呼び出しのように扱える。
 
 \section{Task(Context) 間の同期処理}
 Gears OS では複数の Task(Context) から同じ Output Data Gear を修正する場合がある。