Mercurial > hg > Papers > 2018 > tobaru-sigos
diff Slide/prosym.md @ 11:6fdcb5241bda default tip
before Society
author | tobaru |
---|---|
date | Tue, 22 May 2018 11:56:32 +0900 |
parents | d4e58a38aae7 |
children |
line wrap: on
line diff
--- a/Slide/prosym.md Tue May 22 10:13:39 2018 +0900 +++ b/Slide/prosym.md Tue May 22 11:56:32 2018 +0900 @@ -50,7 +50,7 @@ ## スライドの流れ -- <font color="red">Interface</font> +- <font color="red">Gears OS での形式化とInterfaceの導入</font> - 並列API - CbC - Gears OS における並列実行 @@ -58,14 +58,14 @@ - 今後の課題 -## Gears OS での形式化とInterfaceの導入 +## Gears OS での形式化 - 形式化とは仕様、実装、実行を Logic で記述する事である。 - Gears OS では、継続を使った関数型プログラムとして実装を記述する - Logic としては、依存型関数言語である Agda を使う(外間の発表) - 証明とモデル検査を使って、信頼性を確保する ## Gears OS の Interface -- Code Gear と Deta Gear は Interface と呼ばれるまとまり(モジュール)で記述される。 +- Code Gear と Deta Gear は Interface と呼ばれるまとまりで記述される。 - Gears OS のモジュール化 - Interface 作成時に Code Gear の集合を指定することにより複数の実装(並列処理)を持つことができる。 - Interface は Data Gear で記述されて、Meta Deta Gear と呼ばれる。 @@ -81,7 +81,7 @@ % Contextも集合 ## スライドの流れ -- Interface +- Gears OS での形式化とInterfaceの導入 - <font color="red">並列API</font> - CbC - Gears OS における並列実行 @@ -97,7 +97,7 @@ - 応用として par goto を使って 並列API を実装 ## スライドの流れ -- Interface +- Gears OS での形式化とInterfaceの導入 - 並列API - <font color="red">CbC</font> - Gears OS における並列実行 @@ -111,7 +111,7 @@ ## CbC - ノーマルレベルとメタレベルの計算をまとめて表現できる言語として、本研究室で設計した CbC を用いる。 - ノーマルレベルの計算 - - コンピュータの計算はプログラミング言語で行われる。 + - コンピュータの計算はプログラミング言語で記述される。 - その部分をノーマルレベルの計算と呼ぶ。 - メタレベルの計算 - コードが実行される際の以下の部分が、メタレベルの計算という。 @@ -173,7 +173,7 @@ ## スライドの流れ -- Interface +- Gears OS での形式化とInterfaceの導入 - 並列API - CbC - <font color="red">Gears OS における並列実行</font> @@ -209,14 +209,21 @@ ## Context - 1つのスレッド内で使われる Interface の Code Gear と Data Gear は Meta Data Gear に格納される。 - この Meta Data Gear を Context と呼ぶ。 -- Context を複製して複数の CPU に割り当てることにより並列実行が可能になる。 +- **Context を複製して複数の CPU に割り当てることにより並列実行が可能になる。** - ノーマルレベルでは見る事ができない。 -- Context は Task でもある。 -- Task は実行する Code Gear と Data Gear を全て持っている。 <div style="text-align: center;"> <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400"> </div> +## Task +- Context は Task でもある。 +- Task は実行する Code Gear と Data Gear を全て持っている。 + - Interface の Code Gear と Data Gear は Meta Data Gear に格納 +<div style="text-align: center;"> + <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400"> +</div> + + ## TaskManager @@ -245,7 +252,7 @@ ## 1つの Code Gear の実行は他の Code Gear に割り込まれない - 共有された Data Gear があった時に、それに対する変更はただ1つの Code Gear だけが許される -- 読み込みは複数であってもいい + - 読み込みは複数であってもいい - Agda 側で、並列実行を Code Gear の順次実行としてシミュレーションするため - このような実行になるように Gears OS の実装を行う @@ -256,16 +263,13 @@ </div> - - - -# par goto +## par goto - Context(Task) の複製には par goto を用いる。 -- 他に、入力の同期、タスクスケジューラへの Context の登録が行われる。 - 複数実行した時に、共有 Data Gear に書き込みを成功したかを確認(commit)するために __exit を使用する。 -- par goto で生成された Task は __exit に継続することで終了する -- GearsOS の Task は Output Data Gear を生成した時点で終了する -- そのため、par goto では直接 __exit に継続せず、Output Data Gear への書き出し処理に継続される。 +- par goto で生成された Task は Output Data Gear を生成した時点で終了する + - そのため、par goto では直接 __exit に継続せず、Output Data Gear への書き出し処理に継続される。 + - 割り込みを防ぐため +% - 他に、入力の同期、タスクスケジューラへの Context の登録が行われる。 % - Code Gear と Data Gear の依存関係をノーマルレベルで記述できるようになる。 ```c __code code1(Integer *integer1, Integer * integer2, Integer *output) { @@ -327,7 +331,7 @@ % ## 並列構文 ## スライドの流れ -- Interface +- Gears OS での形式化とInterfaceの導入 - 並列API - CbC - Gears OS における並列実行 @@ -460,7 +464,7 @@ ## スライドの流れ -- Interface +- Gears OS での形式化とInterfaceの導入 - 並列API - CbC - Gears OS における並列実行 @@ -468,12 +472,6 @@ - <font color="red">今後の課題</font> -## スライドの流れ -- CbC -- Gears OS における並列実行 -- 比較 -- <font color="red">今後の課題</font> - ## 今後の課題 - Go 言語との比較から 1CPU での動作が遅いことがわかった。 - par goto 文を使用することで、Contextを生成し、並列処理を行う。