Mercurial > hg > Papers > 2017 > ikkun-sigos
changeset 24:86184ba4927b
fix
author | ikkun |
---|---|
date | Tue, 16 May 2017 09:46:11 +0900 |
parents | 1e7bc71c1abe |
children | 306ba488bb12 |
files | presen/slide.html presen/slide.md |
diffstat | 2 files changed, 61 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/presen/slide.html Tue May 16 09:35:48 2017 +0900 +++ b/presen/slide.html Tue May 16 09:46:11 2017 +0900 @@ -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-16 09:27:57 +0900 with Markdown engine kramdown (1.13.2) + on 2017-05-16 09:45:10 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -191,15 +191,10 @@ <li>Gears OS は Code Gear、Data Gearの単位を用いて開発されており、CbCで記述される。</li> <li>Meta Code Gear は 通常の Code Gear の直後に遷移され、メタ計算を実行する。</li> <li>Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。</li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="gears-os-">Gears OS の並列性</h1> - -<ul> + <li> + <p>stub +# Gears OS の並列性</p> + </li> <li>Code Gear が処理するのに必要な Input Data Gear と処理実行後に出力される Input Data Gear の組を Task と呼ぶ。</li> <li>Code Gear は Task 以外とは依存関係がない</li> <li>依存関係が明確化されている Code Gear Data Gear で記述することで、並列化し易い。</li> @@ -213,7 +208,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="gears-os--1">Gears OS の構成</h1> +<h1 id="gears-os-">Gears OS の構成</h1> <ul> <li>Gears OS は以下の要素で構成される。 @@ -385,22 +380,47 @@ <h1 id="task-">Task の設定におけるメタ計算の問題</h1> <ul> <li>現在のGears OS では並列実行するTask の設定を以下の用に行っている。</li> - <li>実行するCode Gear 揃っていない Input Data Gear の数、Input Data Gear/Output Data Gear への参照等をノーマルレベルで記述している。 -- ここに論文で使っていたcode1を入れる</li> + <li>実行するCode Gear 揃っていない Input Data Gear の数、Input Data Gear/Output Data Gear への参照等をノーマルレベルで記述している。</li> </ul> +<pre lang="c"><code>__code createTask(TaskManager* taskManager, Context* task, Integer *integer1, Integer *integer2, Integer *output) { + task->next = C_add; // set Code Gear + task->idgCount = 2; // set Input Data Gear Counter + task->data[task->idg] = (union Data*)integer1; // set Input Data Gear reference + task->data[task->idg+1] = (union Data*)integer2; + task->maxIdg = task->idg + 2; + task->odg = task->maxIdg; // Output Data Gear index + task->data[task->odg] = (union Data*)output; // set Output Data Gear reference + task->maxOdg = task->odg + 1; + taskManager->next = C_createTask1; + goto meta(context, taskManager->taskManager->TaskManager.spawn); // spawn task +} + +// code gear +__code add(Integer *integer1, Integer *integer2, Integer *output) { + .... +} + + +</code></pre> + </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="task--1">Task の設定におけるメタ計算の問題</h1> -<ul> +<ul lang="c"> <li>この記述方法では Meta Data Gearである Task を直接参照しているためノーマルレベルでの記述は好ましくなく、メタレベルでの記述を行いたい。</li> <li>そこで以下のような記述を新たに考案した。</li> <li>par goto は先に上げたCode1 に変換される記述であり、これによりノーマルレベルでは直接 Taskを参照せずに par goto の引数で Task の設定を行うことができる。</li> <li>この記述を拡張することでCPU GPUでの切り替えを行うことも可能であると考える。 - ここに論文で使っていたcode2をいれる</li> </ul> +<pre><code>__code createTask(Integer *integer1, Integer *integer2, Integer *output, __code next(...)) { + par goto add(integer1, integer2, output, __exit); + goto next(...); +} +</code></pre> </div>
--- a/presen/slide.md Tue May 16 09:35:48 2017 +0900 +++ b/presen/slide.md Tue May 16 09:46:11 2017 +0900 @@ -201,6 +201,27 @@ - 現在のGears OS では並列実行するTask の設定を以下の用に行っている。 - 実行するCode Gear 揃っていない Input Data Gear の数、Input Data Gear/Output Data Gear への参照等をノーマルレベルで記述している。 +```c +__code createTask(TaskManager* taskManager, Context* task, Integer *integer1, Integer *integer2, Integer *output) { + task->next = C_add; // set Code Gear + task->idgCount = 2; // set Input Data Gear Counter + task->data[task->idg] = (union Data*)integer1; // set Input Data Gear reference + task->data[task->idg+1] = (union Data*)integer2; + task->maxIdg = task->idg + 2; + task->odg = task->maxIdg; // Output Data Gear index + task->data[task->odg] = (union Data*)output; // set Output Data Gear reference + task->maxOdg = task->odg + 1; + taskManager->next = C_createTask1; + goto meta(context, taskManager->taskManager->TaskManager.spawn); // spawn task +} + +// code gear +__code add(Integer *integer1, Integer *integer2, Integer *output) { + .... +} + + +``` # Task の設定におけるメタ計算の問題 - この記述方法では Meta Data Gearである Task を直接参照しているためノーマルレベルでの記述は好ましくなく、メタレベルでの記述を行いたい。 @@ -208,6 +229,12 @@ - par goto は先に上げたCode1 に変換される記述であり、これによりノーマルレベルでは直接 Taskを参照せずに par goto の引数で Task の設定を行うことができる。 - この記述を拡張することでCPU GPUでの切り替えを行うことも可能であると考える。 - ここに論文で使っていたcode2をいれる +```c +__code createTask(Integer *integer1, Integer *integer2, Integer *output, __code next(...)) { + par goto add(integer1, integer2, output, __exit); + goto next(...); +} +``` # 従来のシステムとの比較 - Microware OS/9 モジュール単位で実装されたりreal-time OS