Mercurial > hg > Papers > 2018 > tobaru-sigos
comparison Slide/prosym.pdf.html @ 11:6fdcb5241bda default tip
before Society
author | tobaru |
---|---|
date | Tue, 22 May 2018 11:56:32 +0900 |
parents | d4e58a38aae7 |
children |
comparison
equal
deleted
inserted
replaced
10:d4e58a38aae7 | 11:6fdcb5241bda |
---|---|
68 | 68 |
69 <div class='slide '> | 69 <div class='slide '> |
70 <!-- === begin markdown block === | 70 <!-- === begin markdown block === |
71 | 71 |
72 generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin15] | 72 generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin15] |
73 on 2018-05-22 10:11:16 +0900 with Markdown engine kramdown (1.13.2) | 73 on 2018-05-22 10:58:28 +0900 with Markdown engine kramdown (1.13.2) |
74 using options {} | 74 using options {} |
75 --> | 75 --> |
76 | 76 |
77 <!-- _S9SLIDE_ --> | 77 <!-- _S9SLIDE_ --> |
78 <h2 id="gears-os">Gears OS</h2> | 78 <h2 id="gears-os">Gears OS</h2> |
91 <div class='slide '> | 91 <div class='slide '> |
92 <!-- _S9SLIDE_ --> | 92 <!-- _S9SLIDE_ --> |
93 <h2 id="section">スライドの流れ</h2> | 93 <h2 id="section">スライドの流れ</h2> |
94 <ul> | 94 <ul> |
95 <li> | 95 <li> |
96 <font color="red">Interface</font> | 96 <font color="red">Gears OS での形式化とInterfaceの導入</font> |
97 </li> | 97 </li> |
98 <li>並列API</li> | 98 <li>並列API</li> |
99 <li>CbC</li> | 99 <li>CbC</li> |
100 <li>Gears OS における並列実行</li> | 100 <li>Gears OS における並列実行</li> |
101 <li>比較</li> | 101 <li>比較</li> |
104 | 104 |
105 | 105 |
106 </div> | 106 </div> |
107 <div class='slide '> | 107 <div class='slide '> |
108 <!-- _S9SLIDE_ --> | 108 <!-- _S9SLIDE_ --> |
109 <h2 id="gears-os-interface">Gears OS での形式化とInterfaceの導入</h2> | 109 <h2 id="gears-os-">Gears OS での形式化</h2> |
110 <ul> | 110 <ul> |
111 <li>形式化とは仕様、実装、実行を Logic で記述する事である。</li> | 111 <li>形式化とは仕様、実装、実行を Logic で記述する事である。</li> |
112 <li>Gears OS では、継続を使った関数型プログラムとして実装を記述する</li> | 112 <li>Gears OS では、継続を使った関数型プログラムとして実装を記述する</li> |
113 <li>Logic としては、依存型関数言語である Agda を使う(外間の発表)</li> | 113 <li>Logic としては、依存型関数言語である Agda を使う(外間の発表)</li> |
114 <li>証明とモデル検査を使って、信頼性を確保する</li> | 114 <li>証明とモデル検査を使って、信頼性を確保する</li> |
118 </div> | 118 </div> |
119 <div class='slide '> | 119 <div class='slide '> |
120 <!-- _S9SLIDE_ --> | 120 <!-- _S9SLIDE_ --> |
121 <h2 id="gears-os--interface">Gears OS の Interface</h2> | 121 <h2 id="gears-os--interface">Gears OS の Interface</h2> |
122 <ul> | 122 <ul> |
123 <li>Code Gear と Deta Gear は Interface と呼ばれるまとまり(モジュール)で記述される。 | 123 <li>Code Gear と Deta Gear は Interface と呼ばれるまとまりで記述される。 |
124 <ul> | 124 <ul> |
125 <li>Gears OS のモジュール化</li> | 125 <li>Gears OS のモジュール化</li> |
126 </ul> | 126 </ul> |
127 </li> | 127 </li> |
128 <li>Interface 作成時に Code Gear の集合を指定することにより複数の実装(並列処理)を持つことができる。</li> | 128 <li>Interface 作成時に Code Gear の集合を指定することにより複数の実装(並列処理)を持つことができる。</li> |
135 </div> | 135 </div> |
136 <div class='slide '> | 136 <div class='slide '> |
137 <!-- _S9SLIDE_ --> | 137 <!-- _S9SLIDE_ --> |
138 <h2 id="section-1">スライドの流れ</h2> | 138 <h2 id="section-1">スライドの流れ</h2> |
139 <ul> | 139 <ul> |
140 <li>Interface</li> | 140 <li>Gears OS での形式化とInterfaceの導入</li> |
141 <li> | 141 <li> |
142 <font color="red">並列API</font> | 142 <font color="red">並列API</font> |
143 </li> | 143 </li> |
144 <li>CbC</li> | 144 <li>CbC</li> |
145 <li>Gears OS における並列実行</li> | 145 <li>Gears OS における並列実行</li> |
167 </div> | 167 </div> |
168 <div class='slide '> | 168 <div class='slide '> |
169 <!-- _S9SLIDE_ --> | 169 <!-- _S9SLIDE_ --> |
170 <h2 id="section-2">スライドの流れ</h2> | 170 <h2 id="section-2">スライドの流れ</h2> |
171 <ul> | 171 <ul> |
172 <li>Interface</li> | 172 <li>Gears OS での形式化とInterfaceの導入</li> |
173 <li>並列API</li> | 173 <li>並列API</li> |
174 <li> | 174 <li> |
175 <font color="red">CbC</font> | 175 <font color="red">CbC</font> |
176 </li> | 176 </li> |
177 <li>Gears OS における並列実行</li> | 177 <li>Gears OS における並列実行</li> |
187 <ul> | 187 <ul> |
188 <li>ノーマルレベルとメタレベルの計算をまとめて表現できる言語として、本研究室で設計した CbC を用いる。 | 188 <li>ノーマルレベルとメタレベルの計算をまとめて表現できる言語として、本研究室で設計した CbC を用いる。 |
189 <ul> | 189 <ul> |
190 <li>ノーマルレベルの計算 | 190 <li>ノーマルレベルの計算 |
191 <ul> | 191 <ul> |
192 <li>コンピュータの計算はプログラミング言語で行われる。</li> | 192 <li>コンピュータの計算はプログラミング言語で記述される。</li> |
193 <li>その部分をノーマルレベルの計算と呼ぶ。</li> | 193 <li>その部分をノーマルレベルの計算と呼ぶ。</li> |
194 </ul> | 194 </ul> |
195 </li> | 195 </li> |
196 <li>メタレベルの計算 | 196 <li>メタレベルの計算 |
197 <ul> | 197 <ul> |
251 </div> | 251 </div> |
252 <div class='slide '> | 252 <div class='slide '> |
253 <!-- _S9SLIDE_ --> | 253 <!-- _S9SLIDE_ --> |
254 <h2 id="section-3">スライドの流れ</h2> | 254 <h2 id="section-3">スライドの流れ</h2> |
255 <ul> | 255 <ul> |
256 <li>Interface</li> | 256 <li>Gears OS での形式化とInterfaceの導入</li> |
257 <li>並列API</li> | 257 <li>並列API</li> |
258 <li>CbC</li> | 258 <li>CbC</li> |
259 <li> | 259 <li> |
260 <font color="red">Gears OS における並列実行</font> | 260 <font color="red">Gears OS における並列実行</font> |
261 </li> | 261 </li> |
279 | 279 |
280 | 280 |
281 </div> | 281 </div> |
282 <div class='slide '> | 282 <div class='slide '> |
283 <!-- _S9SLIDE_ --> | 283 <!-- _S9SLIDE_ --> |
284 <h2 id="gears-os-">Gears OS の構造</h2> | 284 <h2 id="gears-os--1">Gears OS の構造</h2> |
285 <ul> | 285 <ul> |
286 <li>Gears OS は以下の要素で構成されている | 286 <li>Gears OS は以下の要素で構成されている |
287 <ul> | 287 <ul> |
288 <li>Context</li> | 288 <li>Context</li> |
289 <li>TaskQueue</li> | 289 <li>TaskQueue</li> |
303 <!-- _S9SLIDE_ --> | 303 <!-- _S9SLIDE_ --> |
304 <h2 id="context">Context</h2> | 304 <h2 id="context">Context</h2> |
305 <ul> | 305 <ul> |
306 <li>1つのスレッド内で使われる Interface の Code Gear と Data Gear は Meta Data Gear に格納される。</li> | 306 <li>1つのスレッド内で使われる Interface の Code Gear と Data Gear は Meta Data Gear に格納される。</li> |
307 <li>この Meta Data Gear を Context と呼ぶ。</li> | 307 <li>この Meta Data Gear を Context と呼ぶ。</li> |
308 <li>Context を複製して複数の CPU に割り当てることにより並列実行が可能になる。</li> | 308 <li><strong>Context を複製して複数の CPU に割り当てることにより並列実行が可能になる。</strong></li> |
309 <li>ノーマルレベルでは見る事ができない。</li> | 309 <li>ノーマルレベルでは見る事ができない。</li> |
310 </ul> | |
311 <div style="text-align: center;"> | |
312 <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> | |
313 </div> | |
314 | |
315 | |
316 </div> | |
317 <div class='slide '> | |
318 <!-- _S9SLIDE_ --> | |
319 <h2 id="task">Task</h2> | |
320 <ul> | |
310 <li>Context は Task でもある。</li> | 321 <li>Context は Task でもある。</li> |
311 <li>Task は実行する Code Gear と Data Gear を全て持っている。</li> | 322 <li>Task は実行する Code Gear と Data Gear を全て持っている。 |
323 <ul> | |
324 <li>Interface の Code Gear と Data Gear は Meta Data Gear に格納</li> | |
325 </ul> | |
326 </li> | |
312 </ul> | 327 </ul> |
313 <div style="text-align: center;"> | 328 <div style="text-align: center;"> |
314 <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> | 329 <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> |
315 </div> | 330 </div> |
316 | 331 |
346 </div> | 361 </div> |
347 <div class='slide '> | 362 <div class='slide '> |
348 <!-- _S9SLIDE_ --> | 363 <!-- _S9SLIDE_ --> |
349 <h2 id="code-gear--code-gear-">1つの Code Gear の実行は他の Code Gear に割り込まれない</h2> | 364 <h2 id="code-gear--code-gear-">1つの Code Gear の実行は他の Code Gear に割り込まれない</h2> |
350 <ul> | 365 <ul> |
351 <li>共有された Data Gear があった時に、それに対する変更はただ1つの Code Gear だけが許される</li> | 366 <li>共有された Data Gear があった時に、それに対する変更はただ1つの Code Gear だけが許される |
352 <li>読み込みは複数であってもいい</li> | 367 <ul> |
368 <li>読み込みは複数であってもいい</li> | |
369 </ul> | |
370 </li> | |
353 <li>Agda 側で、並列実行を Code Gear の順次実行としてシミュレーションするため</li> | 371 <li>Agda 側で、並列実行を Code Gear の順次実行としてシミュレーションするため</li> |
354 <li>このような実行になるように Gears OS の実装を行う</li> | 372 <li>このような実行になるように Gears OS の実装を行う</li> |
355 </ul> | 373 </ul> |
356 | 374 |
357 <div style="text-align: center;"> | 375 <div style="text-align: center;"> |
358 <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> | 376 <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> |
359 </div> | 377 </div> |
360 | 378 |
361 <h1 id="par-goto">par goto</h1> | 379 |
380 </div> | |
381 <div class='slide '> | |
382 <!-- _S9SLIDE_ --> | |
383 <h2 id="par-goto">par goto</h2> | |
362 <ul> | 384 <ul> |
363 <li>Context(Task) の複製には par goto を用いる。</li> | 385 <li>Context(Task) の複製には par goto を用いる。</li> |
364 <li>他に、入力の同期、タスクスケジューラへの Context の登録が行われる。</li> | |
365 <li>複数実行した時に、共有 Data Gear に書き込みを成功したかを確認(commit)するために __exit を使用する。</li> | 386 <li>複数実行した時に、共有 Data Gear に書き込みを成功したかを確認(commit)するために __exit を使用する。</li> |
366 <li>par goto で生成された Task は __exit に継続することで終了する</li> | 387 <li>par goto で生成された Task は Output Data Gear を生成した時点で終了する |
367 <li>GearsOS の Task は Output Data Gear を生成した時点で終了する</li> | 388 <ul> |
368 <li>そのため、par goto では直接 __exit に継続せず、Output Data Gear への書き出し処理に継続される。</li> | 389 <li>そのため、par goto では直接 __exit に継続せず、Output Data Gear への書き出し処理に継続される。</li> |
390 <li>割り込みを防ぐため</li> | |
391 </ul> | |
392 </li> | |
369 </ul> | 393 </ul> |
370 | 394 |
371 <pre lang="c"><code>__code code1(Integer *integer1, Integer * integer2, Integer *output) { | 395 <pre lang="c"><code>__code code1(Integer *integer1, Integer * integer2, Integer *output) { |
372 par goto add(integer1, integer2, output, __exit); | 396 par goto add(integer1, integer2, output, __exit); |
373 goto code2(); | 397 goto code2(); |
404 </div> | 428 </div> |
405 <div class='slide '> | 429 <div class='slide '> |
406 <!-- _S9SLIDE_ --> | 430 <!-- _S9SLIDE_ --> |
407 <h2 id="section-4">スライドの流れ</h2> | 431 <h2 id="section-4">スライドの流れ</h2> |
408 <ul> | 432 <ul> |
409 <li>Interface</li> | 433 <li>Gears OS での形式化とInterfaceの導入</li> |
410 <li>並列API</li> | 434 <li>並列API</li> |
411 <li>CbC</li> | 435 <li>CbC</li> |
412 <li>Gears OS における並列実行</li> | 436 <li>Gears OS における並列実行</li> |
413 <li> | 437 <li> |
414 <font color="red">比較</font> | 438 <font color="red">比較</font> |
418 | 442 |
419 | 443 |
420 </div> | 444 </div> |
421 <div class='slide '> | 445 <div class='slide '> |
422 <!-- _S9SLIDE_ --> | 446 <!-- _S9SLIDE_ --> |
423 <h2 id="gears-os--1">Gears OS の評価(目的)</h2> | 447 <h2 id="gears-os--2">Gears OS の評価(目的)</h2> |
424 <ul> | 448 <ul> |
425 <li>並列構文とそれを実現する Meta Compitation が十分に揃っているかを確認したい</li> | 449 <li>並列構文とそれを実現する Meta Compitation が十分に揃っているかを確認したい</li> |
426 <li>並列処理の台数効果を確認する</li> | 450 <li>並列処理の台数効果を確認する</li> |
427 <li>既存の並列言語と比較して不要なオーバーヘッドがあるか調べたい</li> | 451 <li>既存の並列言語と比較して不要なオーバーヘッドがあるか調べたい</li> |
428 </ul> | 452 </ul> |
429 | 453 |
430 | 454 |
431 </div> | 455 </div> |
432 <div class='slide '> | 456 <div class='slide '> |
433 <!-- _S9SLIDE_ --> | 457 <!-- _S9SLIDE_ --> |
434 <h2 id="gears-os--2">Gears OS の評価(環境)</h2> | 458 <h2 id="gears-os--3">Gears OS の評価(環境)</h2> |
435 <ul> | 459 <ul> |
436 <li>CPU、GPU環境で Gears OS の測定を行う。</li> | 460 <li>CPU、GPU環境で Gears OS の測定を行う。</li> |
437 <li>使用した環境は次のようになる。 | 461 <li>使用した環境は次のようになる。 |
438 <ul> | 462 <ul> |
439 <li>CPU 環境 | 463 <li>CPU 環境 |
590 </div> | 614 </div> |
591 <div class='slide '> | 615 <div class='slide '> |
592 <!-- _S9SLIDE_ --> | 616 <!-- _S9SLIDE_ --> |
593 <h2 id="section-6">スライドの流れ</h2> | 617 <h2 id="section-6">スライドの流れ</h2> |
594 <ul> | 618 <ul> |
595 <li>Interface</li> | 619 <li>Gears OS での形式化とInterfaceの導入</li> |
596 <li>並列API</li> | 620 <li>並列API</li> |
597 <li>CbC</li> | 621 <li>CbC</li> |
598 <li>Gears OS における並列実行</li> | 622 <li>Gears OS における並列実行</li> |
599 <li>比較</li> | 623 <li>比較</li> |
600 <li> | 624 <li> |
604 | 628 |
605 | 629 |
606 </div> | 630 </div> |
607 <div class='slide '> | 631 <div class='slide '> |
608 <!-- _S9SLIDE_ --> | 632 <!-- _S9SLIDE_ --> |
609 <h2 id="section-7">スライドの流れ</h2> | 633 <h2 id="section-7">今後の課題</h2> |
610 <ul> | |
611 <li>CbC</li> | |
612 <li>Gears OS における並列実行</li> | |
613 <li>比較</li> | |
614 <li> | |
615 <font color="red">今後の課題</font> | |
616 </li> | |
617 </ul> | |
618 | |
619 | |
620 </div> | |
621 <div class='slide '> | |
622 <!-- _S9SLIDE_ --> | |
623 <h2 id="section-8">今後の課題</h2> | |
624 <ul> | 634 <ul> |
625 <li>Go 言語との比較から 1CPU での動作が遅いことがわかった。</li> | 635 <li>Go 言語との比較から 1CPU での動作が遅いことがわかった。</li> |
626 <li>par goto 文を使用することで、Contextを生成し、並列処理を行う。</li> | 636 <li>par goto 文を使用することで、Contextを生成し、並列処理を行う。</li> |
627 <li>しかし、Context はメモリ空間の確保や使用する全ての Code Gear Data Gear の設定をする必要があり、生成に時間がかかってしまう事が原因。</li> | 637 <li>しかし、Context はメモリ空間の確保や使用する全ての Code Gear Data Gear の設定をする必要があり、生成に時間がかかってしまう事が原因。</li> |
628 <li>処理が軽い場合は Context を生成しないようなチューニングが必要である。</li> | 638 <li>処理が軽い場合は Context を生成しないようなチューニングが必要である。</li> |