# HG changeset patch
# User ikkun
# Date 1494906760 -32400
# Node ID 6f5ce3e82fbf15c3988901750157cbe8da979b19
# Parent e7780283d3eef3c258e25bb61b7676e53ae11e29
fix
diff -r e7780283d3ee -r 6f5ce3e82fbf presen/s6/themes/blank.css
--- a/presen/s6/themes/blank.css Tue May 16 09:53:12 2017 +0900
+++ b/presen/s6/themes/blank.css Tue May 16 12:52:40 2017 +0900
@@ -72,7 +72,6 @@
font-size: 160%;
}
li {
- margin-top: 15px;
margin-bottom: 15px;
}
p,
diff -r e7780283d3ee -r 6f5ce3e82fbf presen/scripts/prettify.css
--- a/presen/scripts/prettify.css Tue May 16 09:53:12 2017 +0900
+++ b/presen/scripts/prettify.css Tue May 16 12:52:40 2017 +0900
@@ -1,18 +1,14 @@
/* CSS from google html5slides(https://code.google.com/p/html5slides/) */
-code {
- display: inline-block;
-}
-
pre > code {
- display: block;
-
font-family: 'Droid Sans Mono', 'Courier New', monospace;
font-size: 20px;
line-height: 28px;
padding: 5px 10px;
+ letter-spacing: -1px;
+
margin-top: 40px;
margin-bottom: 40px;
diff -r e7780283d3ee -r 6f5ce3e82fbf presen/slide.html
--- a/presen/slide.html Tue May 16 09:53:12 2017 +0900
+++ b/presen/slide.html Tue May 16 12:52:40 2017 +0900
@@ -4,7 +4,7 @@
Gears OS における並列処理
-
+
@@ -32,6 +32,7 @@
$('code').each(function(_, el) {
if (!el.classList.contains('noprettyprint')) {
el.classList.add('prettyprint');
+ el.style.display = 'block';
}
});
prettyPrint();
@@ -85,8 +86,8 @@
@@ -191,35 +192,44 @@
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 と呼ぶ。
+
stub
+
+
+
+
+
+
+
Gears OS の並列性
+
+
+ - Code Gear が処理するのに必要な Input Data Gear と処理実行後に出力される Output Data Gear の組を Task と呼ぶ。
- Code Gear は Task 以外とは依存関係がない
- 依存関係が明確化されている Code Gear Data Gear で記述することで、並列化し易い。
-
+
-
Gears OS の構成
+
Gears OS の構成
- Gears OS は以下の要素で構成される。
- - Context - TaskQueue - TaskManager - Worker
+ - Context
+ - TaskQueue
+ - TaskManager
+ - Worker
-
+
@@ -229,14 +239,14 @@
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 のカウンタ等をもっている。
+
- Context は接続可能な Code Gear、Data Gear のリスト等を持っている Meta Data Gear である
+ - Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある
+ - Context は 接続に必要な Code/Data Gear のリスト、 Data Gear を確保するためのメモリ空間、実行する Code Gear、実行に必要な Input Data Gear のカウンタ等をもっている
-
+
@@ -251,7 +261,7 @@
-
+
@@ -260,13 +270,13 @@
Worker
- - Worker は thread と実行する Task が入っている Queue を持っている。
- - Worker は TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する。
- - Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される。
- - Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する。
+ - Worker は thread と実行する Task が入っている Queue を持っている
+ - TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する
+ - Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される
+ - Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する
-
+
@@ -275,8 +285,8 @@
GPGPU
- - もともとは画像出力や画像編集などの画像処理に用いられるGPUを画像処理以外に利用する技術のこと。
- - GPUにはCPUに比べ多数のコアがあり、並列に処理することによってCPUよりも高速に処理を行うことができる。
+ - もともとは画像出力や画像編集などの画像処理に用いられるGPUを画像処理以外に利用する技術のこと
+ - GPUにはCPUに比べ多数のコアがあり、並列に処理することによってCPUよりも高速に処理を行うことができる
- CPUに比べ複雑な計算ができない、GPU単体に直接命令を書き込むこともできないなど、問題点も存在する。
@@ -303,18 +313,18 @@
GPU へのデータ転送及びGPU側でのTaskの実行はTaskのMeta Code Gear で行われる。
-
-
-
Task の設定におけるメタ計算の問題
+
Gears OSにおけるTask生成構文
- - 現在のGears OS では並列実行するTask の設定を以下の用に行っている。
- - 実行するCode Gear 揃っていない Input Data Gear の数、Input Data Gear/Output Data Gear への参照等をノーマルレベルで記述している。
+ - この記述方法では Meta Data Gearである Task を直接参照しているためノーマルレベルでの記述は好ましくなく、メタレベルでの記述を行いたい。
+ - そこで以下のような記述を新たに考案した。
+ - par goto は先に上げたCode1 に変換される記述であり、これによりノーマルレベルでは直接 Taskを参照せずに par goto の引数で Task の設定を行うことができる。
+ - この記述を拡張することでCPU GPUでの切り替えを行うことも可能であると考える。
+
+
+
par goto add(integer1, integer2, output, __exit);
+
+
+
+
+
+
+
Task生成のメタレベルでの実装
+
+ - Task生成では新しくContextを生成し引数となるData Segmentの設定を行う
+ - Context をactive Task Queue に挿入する
__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->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->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
+ goto meta(context, taskManager->taskManager->TaskManager.spawn); // spawn task
}
-// code gear
+// code gear
__code add(Integer *integer1, Integer *integer2, Integer *output) {
....
}
@@ -408,31 +432,13 @@
-
Task の設定におけるメタ計算の問題
-
- - この記述方法では Meta Data Gearである Task を直接参照しているためノーマルレベルでの記述は好ましくなく、メタレベルでの記述を行いたい。
- - そこで以下のような記述を新たに考案した。
- - par goto は先に上げたCode1 に変換される記述であり、これによりノーマルレベルでは直接 Taskを参照せずに par goto の引数で Task の設定を行うことができる。
- - この記述を拡張することでCPU GPUでの切り替えを行うことも可能であると考える。
-- ここに論文で使っていたcode2をいれる
-
-
__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
- compiler directve を使用する HPC
- CUDA
- golang
- - Unix
- Aspect J
diff -r e7780283d3ee -r 6f5ce3e82fbf presen/slide.md
--- a/presen/slide.md Tue May 16 09:53:12 2017 +0900
+++ b/presen/slide.md Tue May 16 12:52:40 2017 +0900
@@ -1,4 +1,4 @@
-title: Gears OS における並列処理
+title: Gears OS における並列処理
author: 東恩納 琢偉
profile:琉球大学工学部
lang: Japanese
@@ -68,22 +68,26 @@
- Gears OS は Code Gear、Data Gearの単位を用いて開発されており、CbCで記述される。
- Meta Code Gear は 通常の Code Gear の直後に遷移され、メタ計算を実行する。
- Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。
-- stub
+- stub によってMeta Code Gear から
+
# Gears OS の並列性
-- Code Gear が処理するのに必要な Input Data Gear と処理実行後に出力される Input Data Gear の組を Task と呼ぶ。
+- Code Gear が処理するのに必要な Input Data Gear と処理実行後に出力される Output Data Gear の組を Task と呼ぶ。
- Code Gear は Task 以外とは依存関係がない
- 依存関係が明確化されている Code Gear Data Gear で記述することで、並列化し易い。
-
+
# Gears OS の構成
- Gears OS は以下の要素で構成される。
- - Context - TaskQueue - TaskManager - Worker
+ - Context
+ - TaskQueue
+ - TaskManager
+ - Worker
@@ -91,9 +95,9 @@
# 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 のカウンタ等をもっている。
+- Context は接続可能な Code Gear、Data Gear のリスト等を持っている Meta Data Gear である
+- Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある
+- Context は 接続に必要な Code/Data Gear のリスト、 Data Gear を確保するためのメモリ空間、実行する Code Gear、実行に必要な Input Data Gear のカウンタ等をもっている
@@ -110,17 +114,17 @@
# Worker
-- Worker は thread と実行する Task が入っている Queue を持っている。
-- Worker は TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する。
-- Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される。
-- Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する。
+- Worker は thread と実行する Task が入っている Queue を持っている
+- TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する
+- Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される
+- Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する
-
+
# GPGPU
-- もともとは画像出力や画像編集などの画像処理に用いられるGPUを画像処理以外に利用する技術のこと。
-- GPUにはCPUに比べ多数のコアがあり、並列に処理することによってCPUよりも高速に処理を行うことができる。
+- もともとは画像出力や画像編集などの画像処理に用いられるGPUを画像処理以外に利用する技術のこと
+- GPUにはCPUに比べ多数のコアがあり、並列に処理することによってCPUよりも高速に処理を行うことができる
- CPUに比べ複雑な計算ができない、GPU単体に直接命令を書き込むこともできないなど、問題点も存在する。
# CPUWoker
@@ -134,18 +138,18 @@
- CUDA ライブラリの初期化を行う以外の動作はCPUWoker と全く同じとなる。
- GPU へのデータ転送及びGPU側でのTaskの実行はTaskのMeta Code Gear で行われる。
-
-