annotate presen/index.html @ 20:bb2bf03f09b4 default tip

add graffle files
author Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
date Thu, 04 Feb 2016 17:28:04 +0900
parents 40686d8028c5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 <!DOCTYPE HTML>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 <html lang="en-US">
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 <head>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 <title>Monad に基づくメタ計算を基本とする Gears OS の設計</title>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 <meta charset="UTF-8">
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 <meta name="viewport" content="width=1274, user-scalable=no">
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 <meta name="generator" content="Slide Show (S9)">
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 <meta name="author" content="小久保翔平">
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 <link rel="stylesheet" href="themes/ribbon/styles/style.css">
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 </head>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 <body class="list">
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 <header class="caption">
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 <h1>Monad に基づくメタ計算を基本とする Gears OS の設計</h1>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 <p>小久保翔平</p>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 </header>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 <div class="slide cover" id="Cover"><div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 <section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 <header>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 <h2>Monad に基づくメタ計算を基本とする Gears OS の設計</h2>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 <h3 id="author">小久保翔平</h3>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
22 <h3 id="profile">琉球大学大学院修士2年</h3>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 </header>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 </section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 </div></div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 <!-- todo: add slide.classes to div -->
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 <!-- todo: create slide id from header? like a slug in blogs? -->
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 <div class="slide" id="2"><div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 <section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
33 <h1 id="gears-os-">Gears OS の並列性</h1>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 </header>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 <!-- === begin markdown block ===
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 generated by markdown 1.1.1 on Ruby 2.0.0 (2013-02-24) [x86_64-darwin12.3.0]
20
bb2bf03f09b4 add graffle files
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
38 on 2015-05-26 17:03:53 +0900 with Markdown engine kramdown (1.4.0)
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 using options {}
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 -->
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 <!-- _S9SLIDE_ -->
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
44 <p>処理とデータの単位として Code Gear, Data Gear を用いる</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
45
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
46 <p> 並列実行の単位となる</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
47
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
48 <p> 処理とデータの関係から依存関係を決定</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
49
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
50 <p>Many Core CPU, GPU, Xeon Phi などを有効に利用するためにはそれぞれのアーキテクチャに合わせた記述が必要</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
51
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
52 <p>Gears OS では Gear を用いて並列実行環境に合わせた設計・実装を行う</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
53
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
54
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
55
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
56 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
57 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
58
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
59 <div class="slide" id="3"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
60 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
61 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
62 <h1 id="gears-os--1">Gears OS の柔軟性</h1>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
63 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
64 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
65
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
66 <p>Gear を追加することでデータ拡張や機能の追加が可能</p>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
68 <p>バージョンが異なる Gears OS でもの Gear 共通部分を用いて通信を行う</p>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 </section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 </div></div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
75 <div class="slide" id="4"><div>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 <section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
78 <h1 id="gears-os--2">Gears OS の信頼性</h1>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 </header>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 <!-- _S9SLIDE_ -->
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
82 <p>Code/Data Gear にはメタ計算に必要な情報として Meta Code/Data Gear が付属されている</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
83
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
84 <p> 関数型言語における Monad に相当</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
85
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
86 <p>プログラムに対してメタレベルで Model Checking する</p>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
88 <p> 元のプログラムに影響を与えない</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
89
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
90 <p> 並列実行時のデッドロック検出</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
91
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
92 <p> Code Gear 間での型検査</p>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 </section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 </div></div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 <div class="slide" id="5"><div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 <section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
102 <h1 id="cerium">Cerium</h1>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 </header>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 <!-- _S9SLIDE_ -->
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
106 <p>Cerium では Task という分割された処理を依存関係に沿って並列実行する</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
107
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
108 <p>Task 同士の依存関係はプログラマ自身が記述する</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
109
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
110 <p> Task の種類が増えるほど記述が複雑になる</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
111
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
112 <p>Task 間の依存関係にのみ着目</p>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
114 <p> データの依存関係を正しく保証しない</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
115
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
116 <p>Task が取り扱うデータに型情報がない</p>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
118 <p> 汎用ポインタを型変換して利用</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
119
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
120 <p> 型検査できない</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
121
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
122
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
123
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
124 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
125 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
126
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
127 <div class="slide" id="6"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
128 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
129 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
130 <h1 id="alice">Alice</h1>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
131 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
132 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
133
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
134 <p>Alice では処理とデータの単位として Code Segment, Data Segment を用いる</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
135
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
136 <p>処理とデータの関係から Code Segment 間の依存関係が決定</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
137
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
138 <p>Data Segment を待ち合わせて Code Segment を実行することを Computaion と定義</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
139
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
140 <p>Computaion を実現する Computaion を Meta Computaion と定義</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
141
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
142 <p> 切断や再接続時の処理、データの圧縮の機能などが相当</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
143
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
144 <p> 通常の Computaion に影響しない</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
145
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
146 <p> Meta Computaion 自体は Alice で記述されていない</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
147
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
148 <p>Data Segment にアクセスする API が設計上の問題で複雑化している</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
149
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
150
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
151
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
152 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
153 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
154
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
155 <div class="slide" id="7"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
156 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
157 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
158 <h1 id="codedata-gear">Code/Data Gear</h1>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
159 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
160 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
161
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
162 <p>通常レベルとして Code/Data Gear を用いる</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
163
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
164 <p> ポインタを扱わない</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
165
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
166 <p>Code Gear は処理そのもの</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
167
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
168 <p> OpenCL/CUDA の kernel に相当</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
169
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
170 <p> 接続された複数の Input Data Gear を参照</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
171
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
172 <p> 単一または複数の Output Data Gear に書き出す</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
173
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
174 <p> 自分が知らない Code/Data Gear は名前で指し示す</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
175
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
176 <p>Data Gear はデータそのもの</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
177
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
178 <p> C の構造体で表現</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
179
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
180 <p> Primitive Data Type を格納</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
181
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 </section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 </div></div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 <div class="slide" id="8"><div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 <section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
190 <h1 id="meta-codedata-gear">Meta Code/Data Gear</h1>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 </header>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 <!-- _S9SLIDE_ -->
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
194 <p>メタレベルとして Meta Code/Data Gear を用いる</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
195
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
196 <p> ポインタを扱う</p>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
198 <p>各 Gear の関連付け</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
199
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
200 <p>Model Checking</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
201
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
202 <p>平行制御</p>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 </section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 </div></div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 <div class="slide" id="9"><div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 <section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
212 <h1 id="gear--list-">Gear を用いた List の表現</h1>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 </header>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 <!-- _S9SLIDE_ -->
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
216 <p>通常 List は要素と次へのポインタを持つ構造体で表現する</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
217
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
218 <p>Gears OS では任意の要素を持つ Data Gear と次へのポインタを持つ Meta Data Gear の組によって List を表現する</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
219
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
220 <p><img src="pictures/List.svg" alt="List" style="width: 70%" /></p>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 </section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
225 </div></div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 <div class="slide" id="10"><div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
228 <section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
230 <h1 id="codedata-gear-">Code/Data Gear の性質</h1>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
231 </header>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 <!-- _S9SLIDE_ -->
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
233
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
234 <p>ポインタの使用を通常レベルとメタレベルで分離</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
235
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
236 <p> ポインタ関連のセキュリティフローを防止</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
237
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
238 <p>処理が Code/Data Gear に閉じている</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
239
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
240 <p> 接続された Gear のみに干渉できる</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
241
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
242 <p> 処理の実行時間、メモリ使用量が予測可能</p>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
243
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
244
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
245
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
246 </section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
247 </div></div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
248
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
249 <div class="slide" id="11"><div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
250 <section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
251 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
252 <h1 id="gears-os--meta-computation">Gears OS における Meta Computation</h1>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
253 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
254 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
255
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
256 <p>関数型言語における Monad に基づいて Meta Computation を行う</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
257
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
258 <p> Monad を用いる手法は Moggi らが提案</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
259
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
260 <p>Gears OS の Meta Computation は Meta Code/Data Gear を用いる</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
261
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
262
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
263
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
264 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
265 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
266
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
267 <div class="slide" id="12"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
268 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
269 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
270 <h1 id="section">実装言語</h1>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
271 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
272 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
273
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
274 <p>本研究室で開発している Continuation based C(CbC) で実装</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
275
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
276 <p> LLVM をバックエンドした CbC コンパイラを用いる</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
277
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
278 <p>CbC ではプログラムを Code Segment, Data Segment という単位で記述</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
279
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
280 <p>Code Segment 間の処理の移動は goto を用いた軽量継続</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
281
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
282 <p> 末尾最適化を強制</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
283
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
284
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
285
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
286 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
287 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
288
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
289 <div class="slide" id="13"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
290 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
291 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
292 <h1 id="context">Context</h1>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
293 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
294 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
295
20
bb2bf03f09b4 add graffle files
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
296 <img src="pictures/GearsOS_arch.svg" alt="arch" width="50%" align="right"/>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
297 <p>実行に必要な情報をまとめた Context を生成</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
298
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
299 <p> OS の Process, Thread に相当</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
300
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
301 <p> メタレベル</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
302
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
303 <p>Code Gear の名前とポインタの対応</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
304
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
305 <p>Data Gear を Allocate するための情報</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
306
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
307 <p>Code Gear が参照する Data Gear へのポインタ</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
308
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
309 <p>Data Gear に格納される Data Type の情報</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
310
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
311
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
312
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
313
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
314 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
315 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
316
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
317 <div class="slide" id="14"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
318 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
319 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
320 <h1 id="context-1">Context</h1>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
321 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
322 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
323
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
324 <pre><code>/* Context definition */
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
325 enum Code {
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
326 Code1,
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
327 Code2,
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
328 Allocator,
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
329 };
18
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
330 </code></pre>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
331
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
332 <p>実行可能な Code Gear の名前を enum Code で宣言</p>
18
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
333
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
334 <p>初期化時に名前と関数ポインタを対応付ける</p>
18
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
335
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
336
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
337
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
338 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
339 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
340
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
341 <div class="slide" id="15"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
342 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
343 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
344 <h1 id="context-2">Context</h1>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
345 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
346 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
347
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
348 <pre><code>enum UniqueData {
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
349 Allocate,
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
350 Tree,
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
351 };
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
352 </code></pre>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
353
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
354 <p>初期化時に確保する Data Gear を enum UniqueData で宣言</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
355
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
356
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
357
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
358 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
359 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
360
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
361 <div class="slide" id="16"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
362 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
363 <header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
364 <h1 id="context-3">Context</h1>
18
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
365 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
366 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
367
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
368 <pre><code>struct Context {
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
369 int codeNum;
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
370 __code (**code) (struct Context *);
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
371 void* heap_start;
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
372 void* heap;
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
373 long dataSize;
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
374 int dataNum;
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
375 union Data **data;
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
376 };
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
377 </code></pre>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
378
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
379 <p>実行可能な Code Gear の数を示す codeNum</p>
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
380
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
381 <p>実行可能な Code Gear へのポインタ code</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
382
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
383 <p>Data Gear の Allocate 用のポインタ heap_start, heap, dataSize</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
384
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
385 <p>Data Gear の数を示す dataNum</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
386
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
387 <p>Data Gear へのポインタ data</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
388
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
389
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
390
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
391 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
392 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
393
18
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
394 <div class="slide" id="17"><div>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
395 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
396 <header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
397 <h1 id="data-gear">Data Gear</h1>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
398 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
399 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
400
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
401 <pre><code>union Data {
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
402 struct Tree {
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
403 // Tree member definition
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
404 } tree;
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
405 struct Node {
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
406 // Node member definition
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
407 } node;
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
408 struct Allocate {
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
409 long size;
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
410 enum Code next;
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
411 } allocate;
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
412 };
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
413 </code></pre>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
414
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
415 <p>Data Gear は C の共用体と構造体を用いた表現する</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
416
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
417
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
418
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
419 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
420 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
421
18
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
422 <div class="slide" id="18"><div>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
423 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
424 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
425 <h1 id="persistent-data-gear">Persistent Data Gear</h1>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
426 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
427 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
428
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
429 <p>Data Gear の管理には木構造を用いる</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
430
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
431 <p>非破壊で構成する</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
432
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
433 <p> 平行して読み書き・参照を行うことが可能</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
434
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
435 <p> 変更前の木構造をすべて保持しているので過去のデータにアクセス可能</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
436
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
437 <p><img src="pictures/GearsOS_arch.svg" alt="arch" style="width: 50%" /></p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
438
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
439
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
440
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
441 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
442 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
443
18
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
444 <div class="slide" id="19"><div>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
445 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
446 <header>
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
447 <h1 id="worker">Worker</h1>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
448 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
449 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
450
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
451 <p>Worker は Synchronized Queue から実行する Code Gear を取得</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
452
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
453 <p>実行に必要な Data Gear は Persistent Data Gear から読み込む</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
454
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
455 <p>処理が完了したら Persistent Data Gear に書き込む</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
456
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
457 <p><img src="pictures/GearsOS_arch.svg" alt="arch" style="width: 50%" /></p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
458
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
459
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
460
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
461 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
462 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
463
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
464 <div class="slide" id="20"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
465 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
466 <header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
467 <h1 id="synchronized-queue">Synchronized Queue</h1>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
468 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
469 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
470
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
471 <p>List を表現する Code/Data Gear に CAS(Compare and Swap) を行う Meta Code/Data Gear を接続することで Synchronized Queue を実現する</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
472
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
473 <p>Gears OS の機能は状態遷移図とクラスダイアグラムを組み合わせた GearBox という図で表現する</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
474
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
475 <p>M:receiver/sender が CAS を行う Meta Code Gear となる</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
476
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
477 <p><img src="pictures/synchronizedQueue.svg" alt="sync" style="width: 80%" /></p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
478
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
479
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
480
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
481 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
482 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
483
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
484 <div class="slide" id="21"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
485 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
486 <header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
487 <h1 id="code-gear-">Code Gear の例</h1>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
488 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
489 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
490
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
491 <pre><code>// Code Gear
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
492 __code code1(struct Context* context) {
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
493 context-&gt;data[Allocate]-&gt;allocate.size = sizeof(struct Node);
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
494 context-&gt;data[Allocate]-&gt;allocate.next = Code2;
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
495 goto meta(context, Allocate);
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
496 }
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
497 </code></pre>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
498
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
499 <p>必要な情報を Data Gear に書き込み Allocate を行う Code Gear に接続する Code Gear</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
500
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
501 <p>ポインタを扱っており設計思想と異なる</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
502
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
503
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
504
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
505 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
506 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
507
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
508 <div class="slide" id="22"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
509 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
510 <header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
511 <h1 id="code-gear--1">Code Gear の例</h1>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
512 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
513 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
514
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
515 <pre><code>// Code Gear
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
516 __code code1(Allocate allocate) {
20
bb2bf03f09b4 add graffle files
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
517 allocate.size = sizeof(struct Node);
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
518 allocate.next = Code2;
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
519 goto Allocate(allocate); // goes through meta
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
520 }
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
521 </code></pre>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
522
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
523 <p>前の Code Gear として解釈するように CbC コンパイラを改良する</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
524
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
525
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
526
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
527 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
528 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
529
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
530 <div class="slide" id="23"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
531 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
532 <header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
533 <h1 id="section-1">比較</h1>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
534 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
535 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
536
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
537 <p>Code Gear</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
538
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
539 <p> Cerium の Task</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
540
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
541 <p> Alice の Code Segment</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
542
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
543 <p> OpenCL/CUDA の kernel</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
544
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
545 <p>Data Gear</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
546
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
547 <p> Alice の Data Segment</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
548
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
549 <p> Ceirum, OpenCL/CUDA には同等のものはない</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
550
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
551 <p>Gears OS は Alice と同様に処理とデータの関係から依存関係を決定</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
552
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
553 <p>Cerium, OpenCL/CUDA では処理同士の依存関係を記述する</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
554
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
555 <p> データの依存関係を保証できない</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
556
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
557
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
558
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
559 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
560 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
561
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
562 <div class="slide" id="24"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
563 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
564 <header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
565 <h1 id="section-2">今後の課題</h1>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
566 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
567 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
568
20
bb2bf03f09b4 add graffle files
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
569 <p>必要な機能の実装</p>
bb2bf03f09b4 add graffle files
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
570
bb2bf03f09b4 add graffle files
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
571 <p> Synchronized Queue</p>
bb2bf03f09b4 add graffle files
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
572
bb2bf03f09b4 add graffle files
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
573
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
574 <p>Cerium と同様の例題を動かし比較・評価</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
575
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
576 <p> Sort</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
577
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
578 <p> Word Count</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
579
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
580 <p> FFT</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
581
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
582 <p>GPGPU のサポート</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
583
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
584
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
585
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
586 </section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
587 </div></div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
588
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
589 <div class="slide" id="25"><div>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
590 <section>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
591 <header>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
592 <h1 id="section-3">まとめ</h1>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
593 </header>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
594 <!-- _S9SLIDE_ -->
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
595
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
596 <p>処理とデータの関係から処理同士の依存関係を解決し、並列実行するように設計を行なった</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
597
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
598 <p>Gear という単位を用いて記述することでプログラムを柔軟に変更することを可能とした</p>
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
599
19
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
600 <p>Meta Code/Data Gear を用いて Meta Computation を実現する</p>
17
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
601
12
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
602 <!-- === end markdown block === -->
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
603
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
604 </section>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
605 </div></div>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
606
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
607
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
608 <script src="scripts/script.js"></script>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
609 <!-- Copyright © 2010–2011 Vadim Makeev, http://pepelsbey.net/ -->
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
610 </body>
ff895b2c6792 add presen
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
611 </html>