# HG changeset patch
# User ikkun
# Date 1494810863 -32400
# Node ID ebf75ff50c4682c5e0c281a602645a2e6646358d
# Parent 5d927ae5167bda7ecf20e8e977ebb3da32a6fdbf
add html
diff -r 5d927ae5167b -r ebf75ff50c46 presen/slide.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/slide.html Mon May 15 10:14:23 2017 +0900
@@ -0,0 +1,245 @@
+
+
+
+
+ Gears OS における並列処理
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gears OS における並列処理
+
+ |
+
+
+
+
+ Takui Higashionna
+
+
+
+ |
+
+
+
+
+
+
+
+
+
メタ計算を使った並列処理
+
+
+ - 並列処理のプラグラミングは、処理のパイプライン
+ - 当研究室ではメタ計算をサポートする言語として Continuation based C (CbC) を開発している
+ - CbC は Code Gear と Data Gear という処理とデータの単位を持っており、メタ計算を行うための Meta Code Gear、Meta Data Gear がある。
+ - Gears OS は CbC を用いて記述されている。
+
+
+
+
+
+
+
Code Gear Data Gear
+
+
+ - Code Gear Data Gear とはプラグラムを分解し、処理の部分を Code Gear int や文字列などの部分を Data Gear という単位で分ける。
+ - Code Gearの処理はその処理に必要な Data Gear が揃ってから行われる。
+ - Code Gear の処理の移行は goto を使って行い、この移行の仕方を継続という。
+ - goto による移行は戻り値を持たないため、スタックを積む必要のない、スタックに積まない継続を軽量継続と呼ぶ。
+
+
+
+
+
+
+
Code Gear Data Gear を用いた計算
+
+
+ - Code Gear の処理の実行は、接続された Data Gear が揃ってから実行される。
+ - Data Gear には Output Data Gear と Input Data Gear があり、Code Gear は接続された Data Gear 以外を変更することはない。
+ - そのため通常の計算ではポインタを気にすることはなく、ポインタ演算はメタ計算部分で行われる。
+ - Code Gear の処理は tail call のみで遷移を行う関数型プログラミングである。
+ - agda に変換することができ、プログラムの正しさを証明できる。
+
+
+
+
+
+
+
メタ計算
+
+
+ - メタ計算は通常の計算のための計算である
+ - 並列処理の依存関係の解決、GPUなどのアーキテクチャ実行のための処理を行う。
+ - Gears OSではメタ計算は Meta Code Gear、Meta Data Gear で表現される。
+
+
+
+
+
+
+
Gears OS
+
+
+ - Gears OS は Code Gear、Data Gearの単位を用いて開発されており、CbCで記述される。
+ - Meta Code Gear は 通常の Code Gear の直後に遷移され、メタ計算を実行する。
+ - Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。
+
+
+
+
+
+
+
Gears OS の並列性
+
+
+ - Code Gear が処理するのに必要なinput Data Gear と処理実行後に出力される Input Data Gear の組を Task と呼ぶ。
+ - Code Gear は Task 以外とは依存関係がない
+ - 依存関係が明確化されている Code Gear Data Gear で記述することで、並列化し易い。
+
+
+
+
+
+
+
+
+
+
+
Gears OS の柔軟性
+
+
+ - Gears OS はメタ計算を使用することで
+– データ拡張や機能の追加
+– GPU 等の様々なアーキテクチャでも同じプログラムの動作
+ - メタ計算は通常の処理と階層を分けて処理を行う。
+
+
+
+
+
+
+
+
+
+
+
Gears OS の構成
+
+
+ - Gears OS は以下の要素で構成される。
+
+
+
+
+
+
+
Context
+
+
+ - Gears OS は Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear を持つ。
+ - Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。
+ - Context は 接続に必要な Code/Data Gear のリスト、 Data Gear を確保するためのメモリ空間、実行する Code Gear、Code Gear の実行に必要な Input Data Gear のカウンタ等をもっている。
+
+
+
+
+
+
+
TaskManager
+
+
+ - TaskManager は Task、Worker の生成、Worker に生成した Task の送信、生成した Worker の終了処理等を行う。
+
+
+
+
+
+
+
Worker
+
+
+ - Worker は thread と実行する Task が入っている Queue を持っている。
+ - Worker は TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する。
+ - Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される。
+ - Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する。
+
+
+
+
+
+
+
依存関係の解決
+
+
+
+
+
+
+
+