comparison presen/sample.html @ 184:62595752c948

honban
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Wed, 07 Feb 2018 11:58:26 +0900
parents b62fc3a499f9
children
comparison
equal deleted inserted replaced
183:b62fc3a499f9 184:62595752c948
85 85
86 <div class='slide '> 86 <div class='slide '>
87 <!-- === begin markdown block === 87 <!-- === begin markdown block ===
88 88
89 generated by markdown/1.2.0 on Ruby 2.1.0 (2013-12-25) [x86_64-darwin13.0] 89 generated by markdown/1.2.0 on Ruby 2.1.0 (2013-12-25) [x86_64-darwin13.0]
90 on 2018-02-07 10:05:26 +0900 with Markdown engine kramdown (1.5.0) 90 on 2018-02-07 11:58:16 +0900 with Markdown engine kramdown (1.5.0)
91 using options {} 91 using options {}
92 --> 92 -->
93 93
94 <!-- _S9SLIDE_ --> 94 <!-- _S9SLIDE_ -->
95 <h1 id="section">研究目的(1/2)</h1> 95 <h1 id="section">研究目的(1/2)</h1>
311 311
312 312
313 </div> 313 </div>
314 <div class='slide '> 314 <div class='slide '>
315 <!-- _S9SLIDE_ --> 315 <!-- _S9SLIDE_ -->
316 <h1 id="topology-manager">複数のTopology Managerへの対応</h1>
317 <ul>
318 <li>この機能を実現するにはノードに割り当てられたnodeNameの衝突を避けなければならない</li>
319 <li>通常のLocal DSMとは別にTopology ManagerごとのLocal DSMを作成しnodeNameを管理</li>
320 <li>Tpology Manager/Nodeの働きはそのままに、指定するLocal DSMを変えるだけでTopology Managerの複数対応が可能<br />
321 <img src="./pictures/somehostname2.svg" alt="opt" width="50%" /></li>
322 </ul>
323
324
325 </div>
326 <div class='slide '>
327 <!-- _S9SLIDE_ -->
328 <h1 id="alice---localdsm">Aliceの問題点 - LocalDSMを複数立ち上げられない</h1> 316 <h1 id="alice---localdsm">Aliceの問題点 - LocalDSMを複数立ち上げられない</h1>
329 <ul> 317 <ul>
318 <li>TopologyManagerはLocalDSMに対応して接続される</li>
319 <li>TopologyManagerに複数接続するには複数のLocalDSMを立ち上げる必要がある</li>
330 <li>AliceではDSMを管理するクラスがstaticで書かれていたためLocal DSMを複数立ち上げることができない</li> 320 <li>AliceではDSMを管理するクラスがstaticで書かれていたためLocal DSMを複数立ち上げることができない</li>
331 <li>このstaticを抜くにはAliceのコード全体を大きく変更しなければならない</li> 321 <li>このstaticを抜くにはAliceのコード全体を大きく変更しなければならない</li>
332 <li>現状ではNAT越えのMeta Computationの追加が困難</li> 322 <li>よって現状ではNAT越えのMeta Computationの追加が困難</li>
333 <li>複数インスタンスを立ち上げての分散プログラムのテストが書けない</li> 323 <li>また、複数インスタンスを立ち上げての分散プログラムのテストが書けない</li>
334 <li>再設計の必要がある</li> 324 <li>Singltonやstaticをなくした再設計の必要がある</li>
335 </ul> 325 </ul>
336 326
337 327
338 </div> 328 </div>
339 <div class='slide '> 329 <div class='slide '>
340 <!-- _S9SLIDE_ --> 330 <!-- _S9SLIDE_ -->
341 <h1 id="alice---api">Aliceの問題点 - APIシンタックスの分離</h1> 331 <h1 id="alice---api">Aliceの問題点 - APIシンタックスの分離</h1>
342 <ul> 332 <ul lang="java">
343 <li>setKeyは記述場所が決まっておらず、待ち合わせを行っているCSの外からも呼べる 333 <li>setKeyは記述場所が決まっておらず、待ち合わせを行っているCSの外からも呼べる
344 <ul> 334 <ul>
345 <li>どのkeyを待っているのか不明なCSが生まれてしまう</li> 335 <li>createしたときにどのkeyを待つのかが不明</li>
346 </ul> 336 <li>setKeyしたときにtakeかpeekかがわからない</li>
347 </li> 337 </ul>
348 <li>setKeyではkeyを動的に指定することができる 338 </li>
349 <ul> 339 </ul>
350 <li>どんな処理を行っているかわかりづらい</li> 340 <pre><code>class TestCG extends CodeSegment{
351 <li>対応するput箇所も修正しなければならない</li> 341 private Receiver input1 = ids.create(CommandType.TAKE);
352 </ul> 342
353 </li> 343 void run() {
354 </ul> 344 CodeSegment cg = new TestCG();
345 cg.input1.setKey("hoge");
346 }
347 }
348 </code></pre>
355 349
356 350
357 </div> 351 </div>
358 <div class='slide '> 352 <div class='slide '>
359 <!-- _S9SLIDE_ --> 353 <!-- _S9SLIDE_ -->
360 <h1 id="alice---api-1">Aliceの問題点 - APIシンタックスの分離</h1> 354 <h1 id="alice---api-1">Aliceの問題点 - APIシンタックスの分離</h1>
361 <ul lang="java"> 355 <ul lang="java">
362 <li>setKeyは全てのcreateが終わった最後に呼ばなければならない</li> 356 <li>setKeyは全てのcreateが終わった最後に呼ばなければならない</li>
363 <li>このように交互に書くと実行時データを取り出すときにNullPointerExeptionになる</li> 357 <li>このように交互に書くと実行時データを取り出すときにinput2が指定される前にinput1だけで入力が揃ったと判定され、実行されてしまうことがある</li>
358 <li>この状態でinput2にアクセスするとエラーとなる</li>
364 </ul> 359 </ul>
365 <pre><code>class TestCG extends CodeSegment{ 360 <pre><code>class TestCG extends CodeSegment{
366 private Receiver input1; 361 private Receiver input1;
367 private Receiver input2; 362 private Receiver input2;
368 363
377 372
378 373
379 </div> 374 </div>
380 <div class='slide '> 375 <div class='slide '>
381 <!-- _S9SLIDE_ --> 376 <!-- _S9SLIDE_ -->
382 <h1 id="alice---api-2">Aliceの問題点 - APIシンタックスの分離</h1>
383 <p><img src="./pictures/nullpo.svg" alt="opt" width="60%" /></p>
384
385
386 </div>
387 <div class='slide '>
388 <!-- _S9SLIDE_ -->
389 <h1 id="alice---">Aliceの問題点 - 型が推測できない</h1> 377 <h1 id="alice---">Aliceの問題点 - 型が推測できない</h1>
390 <ul> 378 <ul>
391 <li>Input DSをReceiver型でcreateするため、どの型のデータを待っているのかわからない</li> 379 <li>Input DSをReceiver型でcreateするため、任意の型を格納できる</li>
392 <li>しかしReceiverからデータを取り出すにはasClass()で型を指定する必要がある</li> 380 <li>Receiverからデータを取り出すにはasClass()で型を指定する必要がある</li>
393 <li>型をDSをputした箇所までコードをたどる必要がある</li> 381 <li>格納した型と取り出した型の不一致は実行時に検出される</li>
394 </ul> 382 </ul>
395 383
396 384
397 </div> 385 </div>
398 <div class='slide '> 386 <div class='slide '>
401 <ul> 389 <ul>
402 <li>以下の問題がAliceの信頼性・拡張性を下げている 390 <li>以下の問題がAliceの信頼性・拡張性を下げている
403 <ul> 391 <ul>
404 <li>Local DSMを複数立ち上げられないため、Topology Managerの拡張やテストが困難</li> 392 <li>Local DSMを複数立ち上げられないため、Topology Managerの拡張やテストが困難</li>
405 <li>インプットAPIが分離しているためCSでどんな処理が行われているかわかりづらい</li> 393 <li>インプットAPIが分離しているためCSでどんな処理が行われているかわかりづらい</li>
406 <li>setKeyの記述順序や型を気にしてプログラミングをしなくてはならない</li> 394 <li>setKeyの記述順序によって挙動が変わる</li>
395 <li>型を気にしてプログラミングをしなくてはならない</li>
407 </ul> 396 </ul>
408 </li> 397 </li>
409 <li>これらを踏まえフレームワークChristieを設計する</li> 398 <li>これらを踏まえフレームワークChristieを設計する</li>
410 </ul> 399 </ul>
411 400
547 536
548 537
549 </div> 538 </div>
550 <div class='slide '> 539 <div class='slide '>
551 <!-- _S9SLIDE_ --> 540 <!-- _S9SLIDE_ -->
552 <h1 id="christie----4">Christie - アノテーションを用いたインプット記述</h1> 541 <h1 id="christie----4">Christie - アノテーションによるシンタックスの分離阻止</h1>
553 <p><img src="./pictures/setup.svg" alt="opt" width="70%" /></p>
554
555
556 </div>
557 <div class='slide '>
558 <!-- _S9SLIDE_ -->
559 <h1 id="christie----5">Christie - アノテーションによるシンタックスの分離阻止</h1>
560 <ul> 542 <ul>
561 <li>アノテーションは必ずフィールドに付けなければならない 543 <li>アノテーションは必ずフィールドに付けなければならない
562 <ul> 544 <ul>
563 <li>InputDGの生成とkeyの指定を一箇所に書ける</li> 545 <li>InputDGの生成とkeyの指定を一箇所に書ける</li>
564 </ul> 546 </ul>
572 554
573 555
574 </div> 556 </div>
575 <div class='slide '> 557 <div class='slide '>
576 <!-- _S9SLIDE_ --> 558 <!-- _S9SLIDE_ -->
577 <h1 id="christie----6">Christie - 型を指定しないデータ取り出し</h1> 559 <h1 id="christie----5">Christie - 型を指定しないデータ取り出し</h1>
578 <ul lang="java"> 560 <ul lang="java">
579 <li>InputDGを宣言する際には必ず型の指定が必要となるため、CG内で型を把握できる</li> 561 <li>InputDGを宣言する際には必ず型の指定が必要となるため、CG内で型を把握できる</li>
580 <li>DataGearはJavaの総称型を用いて&lt;&gt;内に指定した型を受け取る</li> 562 <li>DataGearはJavaの総称型を用いて&lt;&gt;内に指定した型を受け取る</li>
581 </ul> 563 </ul>
582 <pre><code>@Take(”count”) 564 <pre><code>@Take(”count”)
585 567
586 568
587 </div> 569 </div>
588 <div class='slide '> 570 <div class='slide '>
589 <!-- _S9SLIDE_ --> 571 <!-- _S9SLIDE_ -->
590 <h1 id="christie----7">Christie - 型を指定しないデータ取り出し</h1> 572 <h1 id="christie----6">Christie - 型を指定しないデータ取り出し</h1>
591 <ul lang="java"> 573 <ul lang="java">
592 <li>reflectionAPIを使えばアノテーションのついているフィールドの情報もとれる</li> 574 <li>reflectionAPIを使えばアノテーションのついているフィールドの情報もとれる</li>
593 <li>型を判断できる</li> 575 <li>型を判断できる</li>
594 <li>宣言された型は内部で保存され、ノード間通信でも保たれる</li> 576 <li>宣言された型は内部で保存され、ノード間通信でも保たれる</li>
595 <li>AliceのasClass()と違い、getData()で型を指定せずにデータを取り出すことができる</li> 577 <li>AliceのasClass()と違い、getData()で型を指定せずにデータを取り出すことができる</li>
607 589
608 590
609 </div> 591 </div>
610 <div class='slide '> 592 <div class='slide '>
611 <!-- _S9SLIDE_ --> 593 <!-- _S9SLIDE_ -->
612 <h1 id="christie----8">Christie - まとめ</h1> 594 <h1 id="christie----7">Christie - まとめ</h1>
613 <ul> 595 <ul>
614 <li>CodeGearManagerというDGMの管理機構を作ったことでLocalDGM複数立ち上げが可能になり、NAT越えなどの機能拡張やテストをしやすくなった</li> 596 <li>CodeGearManagerというDGMの管理機構を作ったことでLocalDGM複数立ち上げが可能になり、NAT越えなどの機能拡張やテストをしやすくなった</li>
615 <li>アノテーションを用いたことでDG生成とkey指定の分離問題を解決し、処理の見通しを良くした</li> 597 <li>アノテーションを用いたことでDG生成とkey指定の分離問題を解決し、処理の見通しを良くした</li>
616 <li>型の整合性を保証することで信頼性が向上した</li> 598 <li>型の整合性を保証することで信頼性が向上した</li>
617 </ul> 599 </ul>
674 656
675 657
676 </div> 658 </div>
677 <div class='slide '> 659 <div class='slide '>
678 <!-- _S9SLIDE_ --> 660 <!-- _S9SLIDE_ -->
679 <h1 id="christie----9">Christieと他フレームワークの比較 - 設計思想</h1> 661 <h1 id="christie----8">Christieと他フレームワークの比較 - 設計思想</h1>
680 <ul> 662 <ul>
681 <li>AkkaやHazelcastはロケーション透過性が高く、分散プログラムの煩雑な処理を抽象度を高めることで隠している</li> 663 <li>AkkaやHazelcastはロケーション透過性が高く、分散プログラムの煩雑な処理を抽象度を高めることで隠している</li>
682 <li>Christieでは分散性を明示的に意識しながら記述できるためチューニングしやすい</li> 664 <li>Christieでは分散性を明示的に意識しながら記述できるためチューニングしやすい</li>
683 <li>通常計算とメタ計算に分けているため複雑さを下げている</li> 665 <li>通常計算とメタ計算に分けているため複雑さを下げている</li>
684 </ul> 666 </ul>
685 667
686 668
687 </div> 669 </div>
688 <div class='slide '> 670 <div class='slide '>
689 <!-- _S9SLIDE_ --> 671 <!-- _S9SLIDE_ -->
690 <h1 id="christie----10">Christieと他フレームワークの比較 - 記述性</h1> 672 <h1 id="christie----9">Christieと他フレームワークの比較 - 記述性</h1>
691 <ul> 673 <ul>
692 <li>アノテーションを使ったインプットの指定はAkkaやHazelcastにはない</li> 674 <li>アノテーションを使ったインプットの指定はAkkaやHazelcastにはない</li>
693 <li>複数のインプットを待ち合わせして処理を行いたい場合 675 <li>複数のインプットを待ち合わせして処理を行いたい場合
694 <ul> 676 <ul>
695 <li>Akkaは待ち合わせ処理をプログラマが書かなければならない</li> 677 <li>Akkaは待ち合わせ処理をプログラマが書かなければならない</li>
762 <li>将来GearsOSの分散部分にChristieを移植できると良い</li> 744 <li>将来GearsOSの分散部分にChristieを移植できると良い</li>
763 </ul> 745 </ul>
764 </li> 746 </li>
765 </ul> 747 </ul>
766 748
749
750 </div>
751 <div class='slide '>
752 <!-- _S9SLIDE_ -->
753 <h1 id="topology-manager">複数のTopology Managerへの対応</h1>
754 <ul>
755 <li>この機能を実現するにはノードに割り当てられたnodeNameの衝突を避けなければならない</li>
756 <li>通常のLocal DSMとは別にTopology ManagerごとのLocal DSMを作成しnodeNameを管理</li>
757 <li>Tpology Manager/Nodeの働きはそのままに、指定するLocal DSMを変えるだけでTopology Managerの複数対応が可能<br />
758 <img src="./pictures/somehostname2.svg" alt="opt" width="50%" /></li>
759 </ul>
760
761
762 </div>
763 <div class='slide '>
764 <!-- _S9SLIDE_ -->
765 <h1 id="alice---api-2">Aliceの問題点 - APIシンタックスの分離</h1>
766 <p><img src="./pictures/nullpo.svg" alt="opt" width="60%" /></p>
767
768
769 </div>
770 <div class='slide '>
771 <!-- _S9SLIDE_ -->
772 <h1 id="christie----10">Christie - アノテーションを用いたインプット記述</h1>
773 <p><img src="./pictures/setup.svg" alt="opt" width="70%" /></p>
774
767 <style type="text/css"> 775 <style type="text/css">
768 <!-- 776 <!--
769 *{ 777 *{
770 font:nomal 100% 'PT Sans'; 778 font:nomal 100% 'PT Sans';
771 } 779 }