Mercurial > hg > Papers > 2017 > ikkun-sigos
changeset 23:1e7bc71c1abe
fix
author | ikkun |
---|---|
date | Tue, 16 May 2017 09:35:48 +0900 |
parents | 896596d841c9 |
children | 86184ba4927b |
files | presen/slide.html presen/slide.md |
diffstat | 2 files changed, 132 insertions(+), 57 deletions(-) [+] |
line wrap: on
line diff
--- a/presen/slide.html Mon May 15 20:47:53 2017 +0900 +++ b/presen/slide.html Tue May 16 09:35:48 2017 +0900 @@ -5,7 +5,7 @@ <title>Gears OS における並列処理</title> <meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin16]"> -<meta name="author" content="Takui Higashionna" > +<meta name="author" content="東恩納 琢偉" > <!-- style sheet links --> <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection"> @@ -73,8 +73,8 @@ <tr> <td> <div align="left"> - Takui Higashionna - + 東恩納 琢偉 + 琉球大学工学部 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;"> </div> </td> @@ -86,7 +86,7 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin16] - on 2017-05-15 19:40:52 +0900 with Markdown engine kramdown (1.13.2) + on 2017-05-16 09:27:57 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -94,11 +94,10 @@ <h1 id="section">研究目的</h1> <ul> <li>当研究室では 処理の単位を Code Gear、 データの単位を Data Gear を用いて 信頼性が高い並列処理を行う Gears OS を開発している</li> - <li>Gears OS では Task を Code Gear と実行するときに必要な Input Data Gear と出力するための Output Data Gear の組で表現される。 Input Data Gear/Output Data Gear によって依存関係が決定し、それにそって並列実行を行う.</li> + <li>Gears OS では Task を Code Gear が実行するときに必要な Input Data Gear と出力の Output Data Gear の組で表現される。 Input Data Gear/Output Data Gear によって依存関係が決定し、それにそって並列実行を行う.</li> <li>信頼性の確保はモデルチェック、検証等を使用して行う。この信頼性のための計算は通常の計算とは別の階層のメタ計算として記述する。</li> <li>また、 メタ計算は信頼性の他に CPU, GPU などの実行環境の切り替え, データ拡張等の柔軟性を提供する。</li> - <li>本研究では、 Gears OS の並列処理機構の実装を行う。また、並列処理の実行を検証をメタ計算として記述することで、 並列処理の精度を保 -証する。</li> + <li>本研究では、 Gears OS の並列処理機構の実装を行う。また、並列処理の実行の検証をメタ計算として記述することで、 並列処理の精度を保証する。</li> </ul> @@ -125,7 +124,7 @@ <li>Code Gear、Data Gear とはプログラムを分解し、処理の部分を Code Gear、int や文字列などの部分を Data Gear という単位で分割したものである。</li> <li>Code Gear の処理はその処理に必要な Data Gear が揃ってから行われる。</li> <li>Code Gear の処理の移行は goto を使って行い、この移行の仕方を継続という。</li> - <li>goto による移行は戻り値を持たないため、スタックを積む必要のない、スタックに積まない継続を軽量継続と呼ぶ。</li> + <li>goto による移行は戻り値を持たないためスタックを積む必要がない、スタックに積まない継続を軽量継続と呼ぶ。</li> </ul> @@ -207,42 +206,19 @@ </ul> <div style="text-align: center;"> - <img src="./fig/codeGear_dataGear.svg" alt="message" width="800" /> + <img src="./fig/codeGear_dataGear.svg" alt="message" width="600" /> </div> </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="gears-os--1">Gears OS の柔軟性</h1> - -<ul> - <li>Gears OS はメタ計算を使用することで - <ul> - <li>データ拡張や機能の追加</li> - <li>GPU 等の様々なアーキテクチャでも同じプログラムの動作</li> - </ul> - </li> - <li>メタ計算は通常の処理と階層を分けて処理を行う。</li> -</ul> - -<div style="text-align: center;"> - <img src="./fig/meta_gear.svg" alt="message" width="800" /> -</div> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="gears-os--2">Gears OS の構成</h1> +<h1 id="gears-os--1">Gears OS の構成</h1> <ul> <li>Gears OS は以下の要素で構成される。 <ul> - <li>Context</li> - <li>TaskQueue</li> - <li>TaskManager</li> - <li>Worker</li> + <li>Context - TaskQueue - TaskManager - Worker</li> </ul> </li> </ul> @@ -264,6 +240,10 @@ <!-- context のこーど? --></li> </ul> +<div style="text-align: center;"> + <img src="./fig/gears_structure.svg" alt="message" width="800" /> +</div> + </div> <div class='slide '> @@ -275,6 +255,10 @@ <li>生成した Worker の終了処理等を行う</li> </ul> +<div style="text-align: center;"> + <img src="./fig/gears_structure.svg" alt="message" width="800" /> +</div> + </div> <div class='slide '> @@ -286,6 +270,9 @@ <li>Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される。</li> <li>Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する。</li> </ul> +<div style="text-align: center;"> + <img src="./fig/gears_structure.svg" alt="message" width="800" /> +</div> </div> @@ -415,6 +402,98 @@ - ここに論文で使っていたcode2をいれる</li> </ul> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="section-4">従来のシステムとの比較</h1> +<ul> + <li>Microware OS/9 モジュール単位で実装されたりreal-time OS</li> + <li>compiler directve を使用する HPC</li> + <li>CUDA</li> + <li>golang</li> + <li>Unix</li> + <li>Aspect J</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="microware-os9">Microware OS/9</h1> +<ul> + <li>モジュール単位で記述された real-time OS</li> + <li>モジュール内部では普通のシステムコールを行う</li> + <li>ユーザーレベルとシステムレベルの区別がある</li> + <li>Gears OS はメタ計算のサポートがある</li> + <li>データモジュールの待ち合わせなどの機能はOS/9にはない</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="compiler-directve">compiler directve</h1> +<ul> + <li>C や Fortran のコードに並列用の指示を埋め込む手法</li> + <li>専用のコンパイラが用意される</li> + <li>チューニングはコンパイラが用意された機能の範囲内で行う</li> + <li>Gears OS ではメタ計算を使った個別のチューニングが可能</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="cuda">CUDA</h1> +<ul> + <li>NVIDIA GPGPU 用の並列計算ライブラリ</li> + <li>並列計算を行うカーネルとデータ転送を記述する部分からなる</li> + <li>細かい最適化を行う場合はDriver APIを用いる</li> + <li>Gears OS ではCUDAのカーネルをそのまま Code Gear として使うことができる</li> + <li>データ転送部分はメタレベルで記述する</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="golang">golang</h1> +<ul> + <li>シンプルな構文を持つ並列言語</li> + <li>go routine 単位で並列処理を行う</li> + <li>データの単位としてunion が入っている</li> + <li>go routine 間の通信はchannel を用いて行う</li> + <li>Gears OSでは並列処理の実装はmeta Code Gear で行う</li> + <li>通信は Data Gear の待ち合わせで行う</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="aspect-j">Aspect J</h1> +<ul> + <li>Java用のメタ計算記述</li> + <li>ポイントカットと呼ばれる方法でメタ計算を挟む位置を指定する</li> + <li>計算のログを取るのに使われている</li> + <li>Code Gear ではCode segment 間の任意の位置にメタ計算を挿入することができる</li> + <li>Aspect J よりも下位のメタ計算を記述することが可能</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="section-5">まとめ</h1> +<ul> + <li>Gears OS のメタ計算を用いた並列処理の実装について考察した</li> + <li>CPUWoker とGPUWoker が稼働している</li> + <li>ノーマルレベルでの記述からstub とContext そしてメタ計算部分を生成するスクリプトを作成した</li> + <li>他のシステムとの比較を行った</li> + <li>今後は実装の詳細化、raspberry pi への実装</li> + <li>メタ計算を用いたプログラム検証などを行っていく</li> +</ul> <!-- === end markdown block === --> </div>
--- a/presen/slide.md Mon May 15 20:47:53 2017 +0900 +++ b/presen/slide.md Tue May 16 09:35:48 2017 +0900 @@ -1,16 +1,15 @@ title: Gears OS における並列処理 -author: Takui Higashionna -profile: +author: 東恩納 琢偉 +profile:琉球大学工学部 lang: Japanese code-engine: coderay # 研究目的 - 当研究室では 処理の単位を Code Gear、 データの単位を Data Gear を用いて 信頼性が高い並列処理を行う Gears OS を開発している -- Gears OS では Task を Code Gear と実行するときに必要な Input Data Gear と出力するための Output Data Gear の組で表現される。 Input Data Gear/Output Data Gear によって依存関係が決定し、それにそって並列実行を行う. +- Gears OS では Task を Code Gear が実行するときに必要な Input Data Gear と出力の Output Data Gear の組で表現される。 Input Data Gear/Output Data Gear によって依存関係が決定し、それにそって並列実行を行う. - 信頼性の確保はモデルチェック、検証等を使用して行う。この信頼性のための計算は通常の計算とは別の階層のメタ計算として記述する。 - また、 メタ計算は信頼性の他に CPU, GPU などの実行環境の切り替え, データ拡張等の柔軟性を提供する。 -- 本研究では、 Gears OS の並列処理機構の実装を行う。また、並列処理の実行を検証をメタ計算として記述することで、 並列処理の精度を保 -証する。 +- 本研究では、 Gears OS の並列処理機構の実装を行う。また、並列処理の実行の検証をメタ計算として記述することで、 並列処理の精度を保証する。 # メタ計算を使った並列処理 @@ -25,7 +24,7 @@ - Code Gear、Data Gear とはプログラムを分解し、処理の部分を Code Gear、int や文字列などの部分を Data Gear という単位で分割したものである。 - Code Gear の処理はその処理に必要な Data Gear が揃ってから行われる。 - Code Gear の処理の移行は goto を使って行い、この移行の仕方を継続という。 -- goto による移行は戻り値を持たないため、スタックを積む必要のない、スタックに積まない継続を軽量継続と呼ぶ。 +- goto による移行は戻り値を持たないためスタックを積む必要がない、スタックに積まない継続を軽量継続と呼ぶ。 # Code Gear と Data Gear を用いた計算 @@ -69,7 +68,7 @@ - Gears OS は Code Gear、Data Gearの単位を用いて開発されており、CbCで記述される。 - Meta Code Gear は 通常の Code Gear の直後に遷移され、メタ計算を実行する。 - Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。 - +- stub # Gears OS の並列性 - Code Gear が処理するのに必要な Input Data Gear と処理実行後に出力される Input Data Gear の組を Task と呼ぶ。 @@ -77,27 +76,14 @@ - 依存関係が明確化されている Code Gear Data Gear で記述することで、並列化し易い。 <div style="text-align: center;"> - <img src="./fig/codeGear_dataGear.svg" alt="message" width="800"> + <img src="./fig/codeGear_dataGear.svg" alt="message" width="600"> </div> -# Gears OS の柔軟性 - -- Gears OS はメタ計算を使用することで - - データ拡張や機能の追加 - - GPU 等の様々なアーキテクチャでも同じプログラムの動作 -- メタ計算は通常の処理と階層を分けて処理を行う。 - -<div style="text-align: center;"> - <img src="./fig/meta_gear.svg" alt="message" width="800"> -</div> # Gears OS の構成 - Gears OS は以下の要素で構成される。 - - Context - - TaskQueue - - TaskManager - - Worker + - Context - TaskQueue - TaskManager - Worker <div style="text-align: center;"> <img src="./fig/gears_structure.svg" alt="message" width="800"> @@ -110,17 +96,27 @@ - Context は 接続に必要な Code/Data Gear のリスト、 Data Gear を確保するためのメモリ空間、実行する Code Gear、Code Gear の実行に必要な Input Data Gear のカウンタ等をもっている。 <!-- context のこーど? --> +<div style="text-align: center;"> + <img src="./fig/gears_structure.svg" alt="message" width="800"> +</div> # TaskManager - TaskManager は Task、Worker の生成 - Worker に生成した Task の送信 - 生成した Worker の終了処理等を行う +<div style="text-align: center;"> + <img src="./fig/gears_structure.svg" alt="message" width="800"> +</div> + # Worker - Worker は thread と実行する Task が入っている Queue を持っている。 - Worker は TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する。 - Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される。 - Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する。 +<div style="text-align: center;"> + <img src="./fig/gears_structure.svg" alt="message" width="800"> +</div> # GPGPU - もともとは画像出力や画像編集などの画像処理に用いられるGPUを画像処理以外に利用する技術のこと。 @@ -204,7 +200,7 @@ # Task の設定におけるメタ計算の問題 - 現在のGears OS では並列実行するTask の設定を以下の用に行っている。 - 実行するCode Gear 揃っていない Input Data Gear の数、Input Data Gear/Output Data Gear への参照等をノーマルレベルで記述している。 -- ここに論文で使っていたcode1を入れる + # Task の設定におけるメタ計算の問題 - この記述方法では Meta Data Gearである Task を直接参照しているためノーマルレベルでの記述は好ましくなく、メタレベルでの記述を行いたい。