Mercurial > hg > Papers > 2018 > tobaru-sigos
changeset 11:6fdcb5241bda default tip
before Society
author | tobaru |
---|---|
date | Tue, 22 May 2018 11:56:32 +0900 |
parents | d4e58a38aae7 |
children | |
files | Slide/prosym.html Slide/prosym.md Slide/prosym.pdf.html |
diffstat | 3 files changed, 119 insertions(+), 101 deletions(-) [+] |
line wrap: on
line diff
--- a/Slide/prosym.html Tue May 22 10:13:39 2018 +0900 +++ b/Slide/prosym.html Tue May 22 11:56:32 2018 +0900 @@ -86,7 +86,7 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin15] - on 2018-05-22 10:11:16 +0900 with Markdown engine kramdown (1.13.2) + on 2018-05-22 10:58:28 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -109,7 +109,7 @@ <h2 id="section">スライドの流れ</h2> <ul> <li> - <font color="red">Interface</font> + <font color="red">Gears OS での形式化とInterfaceの導入</font> </li> <li>並列API</li> <li>CbC</li> @@ -122,7 +122,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="gears-os-interface">Gears OS での形式化とInterfaceの導入</h2> +<h2 id="gears-os-">Gears OS での形式化</h2> <ul> <li>形式化とは仕様、実装、実行を Logic で記述する事である。</li> <li>Gears OS では、継続を使った関数型プログラムとして実装を記述する</li> @@ -136,7 +136,7 @@ <!-- _S9SLIDE_ --> <h2 id="gears-os--interface">Gears OS の Interface</h2> <ul> - <li>Code Gear と Deta Gear は Interface と呼ばれるまとまり(モジュール)で記述される。 + <li>Code Gear と Deta Gear は Interface と呼ばれるまとまりで記述される。 <ul> <li>Gears OS のモジュール化</li> </ul> @@ -153,7 +153,7 @@ <!-- _S9SLIDE_ --> <h2 id="section-1">スライドの流れ</h2> <ul> - <li>Interface</li> + <li>Gears OS での形式化とInterfaceの導入</li> <li> <font color="red">並列API</font> </li> @@ -185,7 +185,7 @@ <!-- _S9SLIDE_ --> <h2 id="section-2">スライドの流れ</h2> <ul> - <li>Interface</li> + <li>Gears OS での形式化とInterfaceの導入</li> <li>並列API</li> <li> <font color="red">CbC</font> @@ -205,7 +205,7 @@ <ul> <li>ノーマルレベルの計算 <ul> - <li>コンピュータの計算はプログラミング言語で行われる。</li> + <li>コンピュータの計算はプログラミング言語で記述される。</li> <li>その部分をノーマルレベルの計算と呼ぶ。</li> </ul> </li> @@ -269,7 +269,7 @@ <!-- _S9SLIDE_ --> <h2 id="section-3">スライドの流れ</h2> <ul> - <li>Interface</li> + <li>Gears OS での形式化とInterfaceの導入</li> <li>並列API</li> <li>CbC</li> <li> @@ -297,7 +297,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="gears-os-">Gears OS の構造</h2> +<h2 id="gears-os--1">Gears OS の構造</h2> <ul> <li>Gears OS は以下の要素で構成されている <ul> @@ -321,10 +321,25 @@ <ul> <li>1つのスレッド内で使われる Interface の Code Gear と Data Gear は Meta Data Gear に格納される。</li> <li>この Meta Data Gear を Context と呼ぶ。</li> - <li>Context を複製して複数の CPU に割り当てることにより並列実行が可能になる。</li> + <li><strong>Context を複製して複数の CPU に割り当てることにより並列実行が可能になる。</strong></li> <li>ノーマルレベルでは見る事ができない。</li> +</ul> +<div style="text-align: center;"> + <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> +</div> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h2 id="task">Task</h2> +<ul> <li>Context は Task でもある。</li> - <li>Task は実行する Code Gear と Data Gear を全て持っている。</li> + <li>Task は実行する Code Gear と Data Gear を全て持っている。 + <ul> + <li>Interface の Code Gear と Data Gear は Meta Data Gear に格納</li> + </ul> + </li> </ul> <div style="text-align: center;"> <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> @@ -364,8 +379,11 @@ <!-- _S9SLIDE_ --> <h2 id="code-gear--code-gear-">1つの Code Gear の実行は他の Code Gear に割り込まれない</h2> <ul> - <li>共有された Data Gear があった時に、それに対する変更はただ1つの Code Gear だけが許される</li> - <li>読み込みは複数であってもいい</li> + <li>共有された Data Gear があった時に、それに対する変更はただ1つの Code Gear だけが許される + <ul> + <li>読み込みは複数であってもいい</li> + </ul> + </li> <li>Agda 側で、並列実行を Code Gear の順次実行としてシミュレーションするため</li> <li>このような実行になるように Gears OS の実装を行う</li> </ul> @@ -374,14 +392,20 @@ <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> </div> -<h1 id="par-goto">par goto</h1> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h2 id="par-goto">par goto</h2> <ul> <li>Context(Task) の複製には par goto を用いる。</li> - <li>他に、入力の同期、タスクスケジューラへの Context の登録が行われる。</li> <li>複数実行した時に、共有 Data Gear に書き込みを成功したかを確認(commit)するために __exit を使用する。</li> - <li>par goto で生成された Task は __exit に継続することで終了する</li> - <li>GearsOS の Task は Output Data Gear を生成した時点で終了する</li> - <li>そのため、par goto では直接 __exit に継続せず、Output Data Gear への書き出し処理に継続される。</li> + <li>par goto で生成された Task は Output Data Gear を生成した時点で終了する + <ul> + <li>そのため、par goto では直接 __exit に継続せず、Output Data Gear への書き出し処理に継続される。</li> + <li>割り込みを防ぐため</li> + </ul> + </li> </ul> <pre lang="c"><code>__code code1(Integer *integer1, Integer * integer2, Integer *output) { @@ -422,7 +446,7 @@ <!-- _S9SLIDE_ --> <h2 id="section-4">スライドの流れ</h2> <ul> - <li>Interface</li> + <li>Gears OS での形式化とInterfaceの導入</li> <li>並列API</li> <li>CbC</li> <li>Gears OS における並列実行</li> @@ -436,7 +460,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="gears-os--1">Gears OS の評価(目的)</h2> +<h2 id="gears-os--2">Gears OS の評価(目的)</h2> <ul> <li>並列構文とそれを実現する Meta Compitation が十分に揃っているかを確認したい</li> <li>並列処理の台数効果を確認する</li> @@ -447,7 +471,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="gears-os--2">Gears OS の評価(環境)</h2> +<h2 id="gears-os--3">Gears OS の評価(環境)</h2> <ul> <li>CPU、GPU環境で Gears OS の測定を行う。</li> <li>使用した環境は次のようになる。 @@ -608,7 +632,7 @@ <!-- _S9SLIDE_ --> <h2 id="section-6">スライドの流れ</h2> <ul> - <li>Interface</li> + <li>Gears OS での形式化とInterfaceの導入</li> <li>並列API</li> <li>CbC</li> <li>Gears OS における並列実行</li> @@ -622,21 +646,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="section-7">スライドの流れ</h2> -<ul> - <li>CbC</li> - <li>Gears OS における並列実行</li> - <li>比較</li> - <li> - <font color="red">今後の課題</font> - </li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h2 id="section-8">今後の課題</h2> +<h2 id="section-7">今後の課題</h2> <ul> <li>Go 言語との比較から 1CPU での動作が遅いことがわかった。</li> <li>par goto 文を使用することで、Contextを生成し、並列処理を行う。</li>
--- 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を生成し、並列処理を行う。
--- a/Slide/prosym.pdf.html Tue May 22 10:13:39 2018 +0900 +++ b/Slide/prosym.pdf.html Tue May 22 11:56:32 2018 +0900 @@ -70,7 +70,7 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin15] - on 2018-05-22 10:11:16 +0900 with Markdown engine kramdown (1.13.2) + on 2018-05-22 10:58:28 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -93,7 +93,7 @@ <h2 id="section">スライドの流れ</h2> <ul> <li> - <font color="red">Interface</font> + <font color="red">Gears OS での形式化とInterfaceの導入</font> </li> <li>並列API</li> <li>CbC</li> @@ -106,7 +106,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="gears-os-interface">Gears OS での形式化とInterfaceの導入</h2> +<h2 id="gears-os-">Gears OS での形式化</h2> <ul> <li>形式化とは仕様、実装、実行を Logic で記述する事である。</li> <li>Gears OS では、継続を使った関数型プログラムとして実装を記述する</li> @@ -120,7 +120,7 @@ <!-- _S9SLIDE_ --> <h2 id="gears-os--interface">Gears OS の Interface</h2> <ul> - <li>Code Gear と Deta Gear は Interface と呼ばれるまとまり(モジュール)で記述される。 + <li>Code Gear と Deta Gear は Interface と呼ばれるまとまりで記述される。 <ul> <li>Gears OS のモジュール化</li> </ul> @@ -137,7 +137,7 @@ <!-- _S9SLIDE_ --> <h2 id="section-1">スライドの流れ</h2> <ul> - <li>Interface</li> + <li>Gears OS での形式化とInterfaceの導入</li> <li> <font color="red">並列API</font> </li> @@ -169,7 +169,7 @@ <!-- _S9SLIDE_ --> <h2 id="section-2">スライドの流れ</h2> <ul> - <li>Interface</li> + <li>Gears OS での形式化とInterfaceの導入</li> <li>並列API</li> <li> <font color="red">CbC</font> @@ -189,7 +189,7 @@ <ul> <li>ノーマルレベルの計算 <ul> - <li>コンピュータの計算はプログラミング言語で行われる。</li> + <li>コンピュータの計算はプログラミング言語で記述される。</li> <li>その部分をノーマルレベルの計算と呼ぶ。</li> </ul> </li> @@ -253,7 +253,7 @@ <!-- _S9SLIDE_ --> <h2 id="section-3">スライドの流れ</h2> <ul> - <li>Interface</li> + <li>Gears OS での形式化とInterfaceの導入</li> <li>並列API</li> <li>CbC</li> <li> @@ -281,7 +281,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="gears-os-">Gears OS の構造</h2> +<h2 id="gears-os--1">Gears OS の構造</h2> <ul> <li>Gears OS は以下の要素で構成されている <ul> @@ -305,10 +305,25 @@ <ul> <li>1つのスレッド内で使われる Interface の Code Gear と Data Gear は Meta Data Gear に格納される。</li> <li>この Meta Data Gear を Context と呼ぶ。</li> - <li>Context を複製して複数の CPU に割り当てることにより並列実行が可能になる。</li> + <li><strong>Context を複製して複数の CPU に割り当てることにより並列実行が可能になる。</strong></li> <li>ノーマルレベルでは見る事ができない。</li> +</ul> +<div style="text-align: center;"> + <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> +</div> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h2 id="task">Task</h2> +<ul> <li>Context は Task でもある。</li> - <li>Task は実行する Code Gear と Data Gear を全て持っている。</li> + <li>Task は実行する Code Gear と Data Gear を全て持っている。 + <ul> + <li>Interface の Code Gear と Data Gear は Meta Data Gear に格納</li> + </ul> + </li> </ul> <div style="text-align: center;"> <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> @@ -348,8 +363,11 @@ <!-- _S9SLIDE_ --> <h2 id="code-gear--code-gear-">1つの Code Gear の実行は他の Code Gear に割り込まれない</h2> <ul> - <li>共有された Data Gear があった時に、それに対する変更はただ1つの Code Gear だけが許される</li> - <li>読み込みは複数であってもいい</li> + <li>共有された Data Gear があった時に、それに対する変更はただ1つの Code Gear だけが許される + <ul> + <li>読み込みは複数であってもいい</li> + </ul> + </li> <li>Agda 側で、並列実行を Code Gear の順次実行としてシミュレーションするため</li> <li>このような実行になるように Gears OS の実装を行う</li> </ul> @@ -358,14 +376,20 @@ <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> </div> -<h1 id="par-goto">par goto</h1> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h2 id="par-goto">par goto</h2> <ul> <li>Context(Task) の複製には par goto を用いる。</li> - <li>他に、入力の同期、タスクスケジューラへの Context の登録が行われる。</li> <li>複数実行した時に、共有 Data Gear に書き込みを成功したかを確認(commit)するために __exit を使用する。</li> - <li>par goto で生成された Task は __exit に継続することで終了する</li> - <li>GearsOS の Task は Output Data Gear を生成した時点で終了する</li> - <li>そのため、par goto では直接 __exit に継続せず、Output Data Gear への書き出し処理に継続される。</li> + <li>par goto で生成された Task は Output Data Gear を生成した時点で終了する + <ul> + <li>そのため、par goto では直接 __exit に継続せず、Output Data Gear への書き出し処理に継続される。</li> + <li>割り込みを防ぐため</li> + </ul> + </li> </ul> <pre lang="c"><code>__code code1(Integer *integer1, Integer * integer2, Integer *output) { @@ -406,7 +430,7 @@ <!-- _S9SLIDE_ --> <h2 id="section-4">スライドの流れ</h2> <ul> - <li>Interface</li> + <li>Gears OS での形式化とInterfaceの導入</li> <li>並列API</li> <li>CbC</li> <li>Gears OS における並列実行</li> @@ -420,7 +444,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="gears-os--1">Gears OS の評価(目的)</h2> +<h2 id="gears-os--2">Gears OS の評価(目的)</h2> <ul> <li>並列構文とそれを実現する Meta Compitation が十分に揃っているかを確認したい</li> <li>並列処理の台数効果を確認する</li> @@ -431,7 +455,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="gears-os--2">Gears OS の評価(環境)</h2> +<h2 id="gears-os--3">Gears OS の評価(環境)</h2> <ul> <li>CPU、GPU環境で Gears OS の測定を行う。</li> <li>使用した環境は次のようになる。 @@ -592,7 +616,7 @@ <!-- _S9SLIDE_ --> <h2 id="section-6">スライドの流れ</h2> <ul> - <li>Interface</li> + <li>Gears OS での形式化とInterfaceの導入</li> <li>並列API</li> <li>CbC</li> <li>Gears OS における並列実行</li> @@ -606,21 +630,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="section-7">スライドの流れ</h2> -<ul> - <li>CbC</li> - <li>Gears OS における並列実行</li> - <li>比較</li> - <li> - <font color="red">今後の課題</font> - </li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h2 id="section-8">今後の課題</h2> +<h2 id="section-7">今後の課題</h2> <ul> <li>Go 言語との比較から 1CPU での動作が遅いことがわかった。</li> <li>par goto 文を使用することで、Contextを生成し、並列処理を行う。</li>