Mercurial > hg > Papers > 2018 > tobaru-sigos
comparison Slide/prosym.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 |
---|---|
84 | 84 |
85 <div class='slide '> | 85 <div class='slide '> |
86 <!-- === begin markdown block === | 86 <!-- === begin markdown block === |
87 | 87 |
88 generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin15] | 88 generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin15] |
89 on 2018-05-22 10:11:16 +0900 with Markdown engine kramdown (1.13.2) | 89 on 2018-05-22 10:58:28 +0900 with Markdown engine kramdown (1.13.2) |
90 using options {} | 90 using options {} |
91 --> | 91 --> |
92 | 92 |
93 <!-- _S9SLIDE_ --> | 93 <!-- _S9SLIDE_ --> |
94 <h2 id="gears-os">Gears OS</h2> | 94 <h2 id="gears-os">Gears OS</h2> |
107 <div class='slide '> | 107 <div class='slide '> |
108 <!-- _S9SLIDE_ --> | 108 <!-- _S9SLIDE_ --> |
109 <h2 id="section">スライドの流れ</h2> | 109 <h2 id="section">スライドの流れ</h2> |
110 <ul> | 110 <ul> |
111 <li> | 111 <li> |
112 <font color="red">Interface</font> | 112 <font color="red">Gears OS での形式化とInterfaceの導入</font> |
113 </li> | 113 </li> |
114 <li>並列API</li> | 114 <li>並列API</li> |
115 <li>CbC</li> | 115 <li>CbC</li> |
116 <li>Gears OS における並列実行</li> | 116 <li>Gears OS における並列実行</li> |
117 <li>比較</li> | 117 <li>比較</li> |
120 | 120 |
121 | 121 |
122 </div> | 122 </div> |
123 <div class='slide '> | 123 <div class='slide '> |
124 <!-- _S9SLIDE_ --> | 124 <!-- _S9SLIDE_ --> |
125 <h2 id="gears-os-interface">Gears OS での形式化とInterfaceの導入</h2> | 125 <h2 id="gears-os-">Gears OS での形式化</h2> |
126 <ul> | 126 <ul> |
127 <li>形式化とは仕様、実装、実行を Logic で記述する事である。</li> | 127 <li>形式化とは仕様、実装、実行を Logic で記述する事である。</li> |
128 <li>Gears OS では、継続を使った関数型プログラムとして実装を記述する</li> | 128 <li>Gears OS では、継続を使った関数型プログラムとして実装を記述する</li> |
129 <li>Logic としては、依存型関数言語である Agda を使う(外間の発表)</li> | 129 <li>Logic としては、依存型関数言語である Agda を使う(外間の発表)</li> |
130 <li>証明とモデル検査を使って、信頼性を確保する</li> | 130 <li>証明とモデル検査を使って、信頼性を確保する</li> |
134 </div> | 134 </div> |
135 <div class='slide '> | 135 <div class='slide '> |
136 <!-- _S9SLIDE_ --> | 136 <!-- _S9SLIDE_ --> |
137 <h2 id="gears-os--interface">Gears OS の Interface</h2> | 137 <h2 id="gears-os--interface">Gears OS の Interface</h2> |
138 <ul> | 138 <ul> |
139 <li>Code Gear と Deta Gear は Interface と呼ばれるまとまり(モジュール)で記述される。 | 139 <li>Code Gear と Deta Gear は Interface と呼ばれるまとまりで記述される。 |
140 <ul> | 140 <ul> |
141 <li>Gears OS のモジュール化</li> | 141 <li>Gears OS のモジュール化</li> |
142 </ul> | 142 </ul> |
143 </li> | 143 </li> |
144 <li>Interface 作成時に Code Gear の集合を指定することにより複数の実装(並列処理)を持つことができる。</li> | 144 <li>Interface 作成時に Code Gear の集合を指定することにより複数の実装(並列処理)を持つことができる。</li> |
151 </div> | 151 </div> |
152 <div class='slide '> | 152 <div class='slide '> |
153 <!-- _S9SLIDE_ --> | 153 <!-- _S9SLIDE_ --> |
154 <h2 id="section-1">スライドの流れ</h2> | 154 <h2 id="section-1">スライドの流れ</h2> |
155 <ul> | 155 <ul> |
156 <li>Interface</li> | 156 <li>Gears OS での形式化とInterfaceの導入</li> |
157 <li> | 157 <li> |
158 <font color="red">並列API</font> | 158 <font color="red">並列API</font> |
159 </li> | 159 </li> |
160 <li>CbC</li> | 160 <li>CbC</li> |
161 <li>Gears OS における並列実行</li> | 161 <li>Gears OS における並列実行</li> |
183 </div> | 183 </div> |
184 <div class='slide '> | 184 <div class='slide '> |
185 <!-- _S9SLIDE_ --> | 185 <!-- _S9SLIDE_ --> |
186 <h2 id="section-2">スライドの流れ</h2> | 186 <h2 id="section-2">スライドの流れ</h2> |
187 <ul> | 187 <ul> |
188 <li>Interface</li> | 188 <li>Gears OS での形式化とInterfaceの導入</li> |
189 <li>並列API</li> | 189 <li>並列API</li> |
190 <li> | 190 <li> |
191 <font color="red">CbC</font> | 191 <font color="red">CbC</font> |
192 </li> | 192 </li> |
193 <li>Gears OS における並列実行</li> | 193 <li>Gears OS における並列実行</li> |
203 <ul> | 203 <ul> |
204 <li>ノーマルレベルとメタレベルの計算をまとめて表現できる言語として、本研究室で設計した CbC を用いる。 | 204 <li>ノーマルレベルとメタレベルの計算をまとめて表現できる言語として、本研究室で設計した CbC を用いる。 |
205 <ul> | 205 <ul> |
206 <li>ノーマルレベルの計算 | 206 <li>ノーマルレベルの計算 |
207 <ul> | 207 <ul> |
208 <li>コンピュータの計算はプログラミング言語で行われる。</li> | 208 <li>コンピュータの計算はプログラミング言語で記述される。</li> |
209 <li>その部分をノーマルレベルの計算と呼ぶ。</li> | 209 <li>その部分をノーマルレベルの計算と呼ぶ。</li> |
210 </ul> | 210 </ul> |
211 </li> | 211 </li> |
212 <li>メタレベルの計算 | 212 <li>メタレベルの計算 |
213 <ul> | 213 <ul> |
267 </div> | 267 </div> |
268 <div class='slide '> | 268 <div class='slide '> |
269 <!-- _S9SLIDE_ --> | 269 <!-- _S9SLIDE_ --> |
270 <h2 id="section-3">スライドの流れ</h2> | 270 <h2 id="section-3">スライドの流れ</h2> |
271 <ul> | 271 <ul> |
272 <li>Interface</li> | 272 <li>Gears OS での形式化とInterfaceの導入</li> |
273 <li>並列API</li> | 273 <li>並列API</li> |
274 <li>CbC</li> | 274 <li>CbC</li> |
275 <li> | 275 <li> |
276 <font color="red">Gears OS における並列実行</font> | 276 <font color="red">Gears OS における並列実行</font> |
277 </li> | 277 </li> |
295 | 295 |
296 | 296 |
297 </div> | 297 </div> |
298 <div class='slide '> | 298 <div class='slide '> |
299 <!-- _S9SLIDE_ --> | 299 <!-- _S9SLIDE_ --> |
300 <h2 id="gears-os-">Gears OS の構造</h2> | 300 <h2 id="gears-os--1">Gears OS の構造</h2> |
301 <ul> | 301 <ul> |
302 <li>Gears OS は以下の要素で構成されている | 302 <li>Gears OS は以下の要素で構成されている |
303 <ul> | 303 <ul> |
304 <li>Context</li> | 304 <li>Context</li> |
305 <li>TaskQueue</li> | 305 <li>TaskQueue</li> |
319 <!-- _S9SLIDE_ --> | 319 <!-- _S9SLIDE_ --> |
320 <h2 id="context">Context</h2> | 320 <h2 id="context">Context</h2> |
321 <ul> | 321 <ul> |
322 <li>1つのスレッド内で使われる Interface の Code Gear と Data Gear は Meta Data Gear に格納される。</li> | 322 <li>1つのスレッド内で使われる Interface の Code Gear と Data Gear は Meta Data Gear に格納される。</li> |
323 <li>この Meta Data Gear を Context と呼ぶ。</li> | 323 <li>この Meta Data Gear を Context と呼ぶ。</li> |
324 <li>Context を複製して複数の CPU に割り当てることにより並列実行が可能になる。</li> | 324 <li><strong>Context を複製して複数の CPU に割り当てることにより並列実行が可能になる。</strong></li> |
325 <li>ノーマルレベルでは見る事ができない。</li> | 325 <li>ノーマルレベルでは見る事ができない。</li> |
326 </ul> | |
327 <div style="text-align: center;"> | |
328 <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> | |
329 </div> | |
330 | |
331 | |
332 </div> | |
333 <div class='slide '> | |
334 <!-- _S9SLIDE_ --> | |
335 <h2 id="task">Task</h2> | |
336 <ul> | |
326 <li>Context は Task でもある。</li> | 337 <li>Context は Task でもある。</li> |
327 <li>Task は実行する Code Gear と Data Gear を全て持っている。</li> | 338 <li>Task は実行する Code Gear と Data Gear を全て持っている。 |
339 <ul> | |
340 <li>Interface の Code Gear と Data Gear は Meta Data Gear に格納</li> | |
341 </ul> | |
342 </li> | |
328 </ul> | 343 </ul> |
329 <div style="text-align: center;"> | 344 <div style="text-align: center;"> |
330 <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> | 345 <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> |
331 </div> | 346 </div> |
332 | 347 |
362 </div> | 377 </div> |
363 <div class='slide '> | 378 <div class='slide '> |
364 <!-- _S9SLIDE_ --> | 379 <!-- _S9SLIDE_ --> |
365 <h2 id="code-gear--code-gear-">1つの Code Gear の実行は他の Code Gear に割り込まれない</h2> | 380 <h2 id="code-gear--code-gear-">1つの Code Gear の実行は他の Code Gear に割り込まれない</h2> |
366 <ul> | 381 <ul> |
367 <li>共有された Data Gear があった時に、それに対する変更はただ1つの Code Gear だけが許される</li> | 382 <li>共有された Data Gear があった時に、それに対する変更はただ1つの Code Gear だけが許される |
368 <li>読み込みは複数であってもいい</li> | 383 <ul> |
384 <li>読み込みは複数であってもいい</li> | |
385 </ul> | |
386 </li> | |
369 <li>Agda 側で、並列実行を Code Gear の順次実行としてシミュレーションするため</li> | 387 <li>Agda 側で、並列実行を Code Gear の順次実行としてシミュレーションするため</li> |
370 <li>このような実行になるように Gears OS の実装を行う</li> | 388 <li>このような実行になるように Gears OS の実装を行う</li> |
371 </ul> | 389 </ul> |
372 | 390 |
373 <div style="text-align: center;"> | 391 <div style="text-align: center;"> |
374 <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> | 392 <img src="./image/gears_structure.png" alt="Gears OS の構造" width="400" /> |
375 </div> | 393 </div> |
376 | 394 |
377 <h1 id="par-goto">par goto</h1> | 395 |
396 </div> | |
397 <div class='slide '> | |
398 <!-- _S9SLIDE_ --> | |
399 <h2 id="par-goto">par goto</h2> | |
378 <ul> | 400 <ul> |
379 <li>Context(Task) の複製には par goto を用いる。</li> | 401 <li>Context(Task) の複製には par goto を用いる。</li> |
380 <li>他に、入力の同期、タスクスケジューラへの Context の登録が行われる。</li> | |
381 <li>複数実行した時に、共有 Data Gear に書き込みを成功したかを確認(commit)するために __exit を使用する。</li> | 402 <li>複数実行した時に、共有 Data Gear に書き込みを成功したかを確認(commit)するために __exit を使用する。</li> |
382 <li>par goto で生成された Task は __exit に継続することで終了する</li> | 403 <li>par goto で生成された Task は Output Data Gear を生成した時点で終了する |
383 <li>GearsOS の Task は Output Data Gear を生成した時点で終了する</li> | 404 <ul> |
384 <li>そのため、par goto では直接 __exit に継続せず、Output Data Gear への書き出し処理に継続される。</li> | 405 <li>そのため、par goto では直接 __exit に継続せず、Output Data Gear への書き出し処理に継続される。</li> |
406 <li>割り込みを防ぐため</li> | |
407 </ul> | |
408 </li> | |
385 </ul> | 409 </ul> |
386 | 410 |
387 <pre lang="c"><code>__code code1(Integer *integer1, Integer * integer2, Integer *output) { | 411 <pre lang="c"><code>__code code1(Integer *integer1, Integer * integer2, Integer *output) { |
388 par goto add(integer1, integer2, output, __exit); | 412 par goto add(integer1, integer2, output, __exit); |
389 goto code2(); | 413 goto code2(); |
420 </div> | 444 </div> |
421 <div class='slide '> | 445 <div class='slide '> |
422 <!-- _S9SLIDE_ --> | 446 <!-- _S9SLIDE_ --> |
423 <h2 id="section-4">スライドの流れ</h2> | 447 <h2 id="section-4">スライドの流れ</h2> |
424 <ul> | 448 <ul> |
425 <li>Interface</li> | 449 <li>Gears OS での形式化とInterfaceの導入</li> |
426 <li>並列API</li> | 450 <li>並列API</li> |
427 <li>CbC</li> | 451 <li>CbC</li> |
428 <li>Gears OS における並列実行</li> | 452 <li>Gears OS における並列実行</li> |
429 <li> | 453 <li> |
430 <font color="red">比較</font> | 454 <font color="red">比較</font> |
434 | 458 |
435 | 459 |
436 </div> | 460 </div> |
437 <div class='slide '> | 461 <div class='slide '> |
438 <!-- _S9SLIDE_ --> | 462 <!-- _S9SLIDE_ --> |
439 <h2 id="gears-os--1">Gears OS の評価(目的)</h2> | 463 <h2 id="gears-os--2">Gears OS の評価(目的)</h2> |
440 <ul> | 464 <ul> |
441 <li>並列構文とそれを実現する Meta Compitation が十分に揃っているかを確認したい</li> | 465 <li>並列構文とそれを実現する Meta Compitation が十分に揃っているかを確認したい</li> |
442 <li>並列処理の台数効果を確認する</li> | 466 <li>並列処理の台数効果を確認する</li> |
443 <li>既存の並列言語と比較して不要なオーバーヘッドがあるか調べたい</li> | 467 <li>既存の並列言語と比較して不要なオーバーヘッドがあるか調べたい</li> |
444 </ul> | 468 </ul> |
445 | 469 |
446 | 470 |
447 </div> | 471 </div> |
448 <div class='slide '> | 472 <div class='slide '> |
449 <!-- _S9SLIDE_ --> | 473 <!-- _S9SLIDE_ --> |
450 <h2 id="gears-os--2">Gears OS の評価(環境)</h2> | 474 <h2 id="gears-os--3">Gears OS の評価(環境)</h2> |
451 <ul> | 475 <ul> |
452 <li>CPU、GPU環境で Gears OS の測定を行う。</li> | 476 <li>CPU、GPU環境で Gears OS の測定を行う。</li> |
453 <li>使用した環境は次のようになる。 | 477 <li>使用した環境は次のようになる。 |
454 <ul> | 478 <ul> |
455 <li>CPU 環境 | 479 <li>CPU 環境 |
606 </div> | 630 </div> |
607 <div class='slide '> | 631 <div class='slide '> |
608 <!-- _S9SLIDE_ --> | 632 <!-- _S9SLIDE_ --> |
609 <h2 id="section-6">スライドの流れ</h2> | 633 <h2 id="section-6">スライドの流れ</h2> |
610 <ul> | 634 <ul> |
611 <li>Interface</li> | 635 <li>Gears OS での形式化とInterfaceの導入</li> |
612 <li>並列API</li> | 636 <li>並列API</li> |
613 <li>CbC</li> | 637 <li>CbC</li> |
614 <li>Gears OS における並列実行</li> | 638 <li>Gears OS における並列実行</li> |
615 <li>比較</li> | 639 <li>比較</li> |
616 <li> | 640 <li> |
620 | 644 |
621 | 645 |
622 </div> | 646 </div> |
623 <div class='slide '> | 647 <div class='slide '> |
624 <!-- _S9SLIDE_ --> | 648 <!-- _S9SLIDE_ --> |
625 <h2 id="section-7">スライドの流れ</h2> | 649 <h2 id="section-7">今後の課題</h2> |
626 <ul> | |
627 <li>CbC</li> | |
628 <li>Gears OS における並列実行</li> | |
629 <li>比較</li> | |
630 <li> | |
631 <font color="red">今後の課題</font> | |
632 </li> | |
633 </ul> | |
634 | |
635 | |
636 </div> | |
637 <div class='slide '> | |
638 <!-- _S9SLIDE_ --> | |
639 <h2 id="section-8">今後の課題</h2> | |
640 <ul> | 650 <ul> |
641 <li>Go 言語との比較から 1CPU での動作が遅いことがわかった。</li> | 651 <li>Go 言語との比較から 1CPU での動作が遅いことがわかった。</li> |
642 <li>par goto 文を使用することで、Contextを生成し、並列処理を行う。</li> | 652 <li>par goto 文を使用することで、Contextを生成し、並列処理を行う。</li> |
643 <li>しかし、Context はメモリ空間の確保や使用する全ての Code Gear Data Gear の設定をする必要があり、生成に時間がかかってしまう事が原因。</li> | 653 <li>しかし、Context はメモリ空間の確保や使用する全ての Code Gear Data Gear の設定をする必要があり、生成に時間がかかってしまう事が原因。</li> |
644 <li>処理が軽い場合は Context を生成しないようなチューニングが必要である。</li> | 654 <li>処理が軽い場合は Context を生成しないようなチューニングが必要である。</li> |