annotate presen/slide.md @ 16:86c8e88c6562

update slide
author mir3636
date Mon, 15 May 2017 08:07:49 +0900
parents 8ed35c355bde
children 538a2bff1ffb 5d927ae5167b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13
f128810373f3 add presen and update mindmap
mir3636
parents:
diff changeset
1 title: Gears OS における並列処理
f128810373f3 add presen and update mindmap
mir3636
parents:
diff changeset
2 author: Takui Higashionna
f128810373f3 add presen and update mindmap
mir3636
parents:
diff changeset
3 profile:
f128810373f3 add presen and update mindmap
mir3636
parents:
diff changeset
4 lang: Japanese
f128810373f3 add presen and update mindmap
mir3636
parents:
diff changeset
5 code-engine: coderay
f128810373f3 add presen and update mindmap
mir3636
parents:
diff changeset
6
16
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
7 # メタ計算を使った並列処理
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
8
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
9 - 並列処理のプログラミングはチューニングや信頼性の確保が困難である。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
10 - これらのチューニングや信頼性の確保を、アルゴリズムから分離しメタ計算で行う
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
11 - 並列処理のプラグラミングは、処理のパイプライン
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
12 - 当研究室ではメタ計算をサポートする言語として Continuation based C (CbC) を開発している
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
13 - CbC は Code Gear と Data Gear という処理とデータの単位を持っており、メタ計算を行うための Meta Code Gear、Meta Data Gear がある。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
14 - Gears OS は CbC を用いて記述されている。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
15
14
ikkun
parents: 13
diff changeset
16 # Code Gear Data Gear
ikkun
parents: 13
diff changeset
17
16
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
18 - Code Gear、Data Gear とはプラグラムを分解し、処理の部分を Code Gear、int や文字列などの部分を Data Gear という単位で分割したものである。
14
ikkun
parents: 13
diff changeset
19 - Code Gear の処理の移行は goto を使って行い、この移行の仕方を継続という。
ikkun
parents: 13
diff changeset
20 - goto による移行は戻り値を持たないため、スタックを積む必要のない、スタックに積まない継続を軽量継続と呼ぶ。
ikkun
parents: 13
diff changeset
21
16
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
22 # Code Gear Data Gear を用いた計算
14
ikkun
parents: 13
diff changeset
23
ikkun
parents: 13
diff changeset
24 - Code Gear の処理の実行は、接続された Data Gear が揃ってから実行される。
ikkun
parents: 13
diff changeset
25 - Data Gear には Output Data Gear と Input Data Gear があり、Code Gear は接続された Data Gear 以外を変更することはない。
16
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
26 - そのため通常の計算ではポインタを気にすることはなく、ポインタ演算はメタ計算部分で行われる。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
27 - Code Gear の処理は tail call のみで遷移を行う関数型プログラミングである。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
28 - agda に変換することができ、プログラムの正しさを証明できる。
14
ikkun
parents: 13
diff changeset
29
ikkun
parents: 13
diff changeset
30 # メタ計算
ikkun
parents: 13
diff changeset
31
ikkun
parents: 13
diff changeset
32 - メタ計算は通常の計算のための計算である
ikkun
parents: 13
diff changeset
33 - 並列処理の依存関係の解決、GPUなどのアーキテクチャ実行のための処理を行う。
ikkun
parents: 13
diff changeset
34 - Gears OSではメタ計算は Meta Code Gear、Meta Data Gear で表現される。
ikkun
parents: 13
diff changeset
35
ikkun
parents: 13
diff changeset
36 # Gears OS
ikkun
parents: 13
diff changeset
37
16
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
38 - Gears OS は Code Gear、Data Gearの単位を用いて開発されており、CbCで記述される。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
39 - Meta Code Gear は 通常の Code Gear の直後に遷移され、メタ計算を実行する。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
40 - Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。
14
ikkun
parents: 13
diff changeset
41
16
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
42 # Gears OS の並列性
14
ikkun
parents: 13
diff changeset
43
ikkun
parents: 13
diff changeset
44 - Code Gear が処理するのに必要なinput Data Gear と処理実行後に出力される Input Data Gear の組を Task と呼ぶ。
ikkun
parents: 13
diff changeset
45 - Code Gear は Task 以外とは依存関係がない
ikkun
parents: 13
diff changeset
46 - 依存関係が明確化されている Code Gear Data Gear で記述することで、並列化し易い。
ikkun
parents: 13
diff changeset
47
ikkun
parents: 13
diff changeset
48 <div style="text-align: center;">
ikkun
parents: 13
diff changeset
49 <img src="./images/codeGear_dataGear.svg" alt="message" width="800">
ikkun
parents: 13
diff changeset
50 </div>
ikkun
parents: 13
diff changeset
51
15
ikkun
parents: 14
diff changeset
52 # Gears OS の柔軟性
ikkun
parents: 14
diff changeset
53
ikkun
parents: 14
diff changeset
54 - Gears OS はメタ計算を使用することで
ikkun
parents: 14
diff changeset
55 -- データ拡張や機能の追加
ikkun
parents: 14
diff changeset
56 -- GPU 等の様々なアーキテクチャでも同じプログラムの動作
ikkun
parents: 14
diff changeset
57 - メタ計算は通常の処理と階層を分けて処理を行う。
ikkun
parents: 14
diff changeset
58
ikkun
parents: 14
diff changeset
59 <div style="text-align: center;">
ikkun
parents: 14
diff changeset
60 <img src="./images/meta_gear.svg" alt="message" width="800">
ikkun
parents: 14
diff changeset
61 </div>
ikkun
parents: 14
diff changeset
62
16
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
63 # Gears OS の構成
15
ikkun
parents: 14
diff changeset
64
16
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
65 - Gears OS は以下の要素で構成される。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
66
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
67 # Context
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
68
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
69 - Gears OS は Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear を持つ。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
70 - Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
71 - Context は 接続に必要な Code/Data Gear のリスト、 Data Gear を確保するためのメモリ空間、実行する Code Gear、Code Gear の実行に必要な Input Data Gear のカウンタ等をもっている。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
72
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
73 # TaskManager
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
74
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
75 - TaskManager は Task、Worker の生成、Worker に生成した Task の送信、生成した Worker の終了処理等を行う。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
76
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
77 # Worker
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
78
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
79 - Worker は thread と実行する Task が入っている Queue を持っている。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
80 - Worker は TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
81 - Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
82 - Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する。
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
83
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
84 # 依存関係の解決
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
85
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
86
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
87
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
88
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
89
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
90
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
91
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
92
86c8e88c6562 update slide
mir3636
parents: 15
diff changeset
93