Mercurial > hg > Papers > 2015 > nozomi-sigos
view presen/sigOS/sample.html @ 13:c0fe42a8808d
add slides
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 23 May 2015 16:11:04 +0900 |
parents | |
children | 99e5104997b7 |
line wrap: on
line source
<!DOCTYPE HTML> <html lang="en-US"> <head> <title>分散フレームワークAliceの圧縮機能</title> <meta charset="UTF-8"> <meta name="viewport" content="width=1274, user-scalable=no"> <meta name="generator" content="Slide Show (S9)"> <meta name="author" content="照屋のぞみ"> <link rel="stylesheet" href="themes/ribbon/styles/style.css"> </head> <body class="list"> <header class="caption"> <h1>分散フレームワークAliceの圧縮機能</h1> <p>照屋のぞみ</p> </header> <div class="slide cover" id="Cover"><div> <section> <header> <h2>分散フレームワークAliceの圧縮機能</h2> <h3 id="author">照屋のぞみ</h3> <h3 id="profile">琉球大学 工学部 情報工学科 4年</h3> </header> </section> </div></div> <!-- todo: add slide.classes to div --> <!-- todo: create slide id from header? like a slug in blogs? --> <div class="slide" id="2"><div> <section> <header> <h1 id="section">研究背景(1/2)</h1> </header> <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.1.0 (2013-12-25) [x86_64-darwin13.0] on 2015-05-23 16:10:37 +0900 with Markdown engine kramdown (1.5.0) using options {} --> <!-- _S9SLIDE_ --> <ul> <li>信頼性とスケーラビリティに優れた分散プログラムをプログラマが一から記述することは容易ではない。</li> <li>本研究室ではデータを <em>Data Segment</em> 、タスクを <em>Code Segment</em> という単位で分割して記述する<strong>並列分散フレームワークAlice</strong>の開発を行っている。</li> <li>Aliceは分散環境の構築のためのAPIが提供されており、スケーラブルな分散プログラムを信頼性高く記述できる環境を実現する。 </li> </ul> </section> </div></div> <div class="slide" id="3"><div> <section> <header> <h1 id="section-1">研究背景(1/2)</h1> </header> <!-- _S9SLIDE_ --> <ul> <li>水族館の例題等において、Aliceが分散プログラムを記述する能力を有することは確認された。</li> <li>実用的な分散プログラムを作成するためには、圧縮形式のデータで通信する機能等が必要だとわかった。</li> </ul> </section> </div></div> <div class="slide" id="4"><div> <section> <header> <h1 id="section-2">研究目的</h1> </header> <!-- _S9SLIDE_ --> <ul> <li>Aliceに圧縮機能等を追加することにより、Data Segmentの多態性を実現しノード間通信における自由度の向上を図る。 </li> </ul> </section> </div></div> <div class="slide" id="5"><div> <section> <header> <h1 id="alice1---data-segment">Aliceの概要(1) - Data Segment</h1> </header> <!-- _S9SLIDE_ --> <ul> <li>複数の関係のない要素を1つのデータオブジェクトで表現した場合、全ての操作でlockが必要になり、スケラビリティーを低下させる。</li> <li>Alice はデータを細かく分割して記述する。その分割されたデータを <em>Data Segment(DS)</em> と呼ぶ。</li> </ul> </section> </div></div> <div class="slide" id="6"><div> <section> <header> <h1 id="alice2---data-segment-manager">Aliceの概要(2) - Data Segment Manager</h1> </header> <!-- _S9SLIDE_ --> <ul> <li>DS は queue に保存される。queue には対 になる key し、 key を指定して DS の保存、取得を行う。</li> <li>queue の集合体であるデータベースデータベースを Alice では DS Manager(DSM) と呼ぶ。<br /> <img src="./pictures/dsm.svg" alt="opt" /></li> </ul> </section> </div></div> <div class="slide" id="7"><div> <section> <header> <h1 id="alice2---data-segment-manager-1">Aliceの概要(2) - Data Segment Manager</h1> </header> <!-- _S9SLIDE_ --> <ul> <li>Local DSM … 各ノード固有のデータベース。</li> <li>Remote DSM … 他のノードの Local DSM の proxy。接続しているノードの数だけ存在。<br /> <img src="./images/remote_datasegment.svg" alt="opt" width="450px" /></li> </ul> </section> </div></div> <div class="slide" id="8"><div> <section> <header> <h1 id="alice3---data-segment-api">Aliceの概要(3) - Data Segment API</h1> </header> <!-- _S9SLIDE_ --> <p>DSMに対して以下のコマンドを送り操作できる </p> <table style="border-collapse: collapse;border:1px solid #000000;"> <tr> <td style="border:1px solid #000000;"> put</td> <td style="border:1px solid #000000;">データを追加する</td> </tr> <tr> <td style="border:1px solid #000000;"> update </td> <td style="border:1px solid #000000;">データを更新する</td> </tr> <tr> <td style="border:1px solid #000000;"> peek</td> <td style="border:1px solid #000000;">データを取得する</td> </tr> <tr> <td style="border:1px solid #000000;"> take</td> <td style="border:1px solid #000000;">データを取得する。取得したデータはDSMから削除される。</td> </tr> </table> </section> </div></div> <div class="slide" id="9"><div> <section> <header> <h1 id="alice4---code-segment">Aliceの概要(4) - Code Segment</h1> </header> <!-- _S9SLIDE_ --> <ul> <li>Alice上で実行されるタスクの単位を Code Segment(CS) と呼ぶ。</li> <li>複数のDSが入力され、その結果をDSとして出力するfunctionと捉えられる。</li> <li>入力されるDSをInput DS、出力されるDSをOutput DSと呼ぶ。</li> <li>keyで指定されたDSが揃うと実行されるという性質を持つ。 <img src="./images/dsandcs.svg" alt="opt" /></li> </ul> </section> </div></div> <div class="slide" id="10"><div> <section> <header> <h1 id="alice5---codesegment">Aliceの概要(5) - CodeSegmentの依存関係</h1> </header> <!-- _S9SLIDE_ --> <ul> <li>データの依存関係にないCSは並列実行される</li> <li>データの依存関係がある場合は依存を解決した順に実行される</li> <li>並列度あげるために、処理を細かく記述し、依存するDSを少なくする <img src="./images/dsandcs2.svg" alt="opt" /></li> </ul> </section> </div></div> <div class="slide" id="11"><div> <section> <header> <h1 id="alicemeta-computation">AliceのMeta Computation</h1> </header> <!-- _S9SLIDE_ --> <ul> <li>並列指向プログラミング言語 Erlang では、分散環境の構築等の処理は全てプログラマが記述しなければいけない。</li> <li>Aliceではプログラマが記述する部分を <em>Computation</em>、Aliceが提供するComputationを支える部分を <em>Meta Computation</em> として分けて捉えている。</li> </ul> </section> </div></div> <div class="slide" id="12"><div> <section> <header> <h1 id="alicemeta-computation-1">AliceのMeta Computation</h1> </header> <!-- _S9SLIDE_ --> <ul> <li>AliceのComputation <ul> <li>keyによりData Segmentを待ち合わせてCode Segmentを実行する</li> </ul> </li> <li>AliceのMeta Computation <ul> <li>Javaで記述したAliceの実装システム</li> </ul> </li> <li>Aliceの機能を追加するということはMeta Computationを追加すると言い換えられる</li> <li>Meta ComputationもCSとDSにより表現されており、それぞれMeta CSとMeta DSと呼ぶ。</li> </ul> </section> </div></div> <div class="slide" id="13"><div> <section> <header> <h1 id="alice-">Alice の新機能</h1> </header> <!-- _S9SLIDE_ --> <p>実用的なアプリケーションであるTreeVNCの実装で必要となった以下の機能をMeta Computation として実装した。<br /> * flip機能 … Input DS を Output DSとして転送する * 圧縮機能 … DS Managerの指定によってDSの表現を切り替える</p> </section> </div></div> <div class="slide" id="14"><div> <section> <header> <h1 id="flip">flip機能</h1> </header> <!-- _S9SLIDE_ --> </section> </div></div> <div class="slide" id="15"><div> <section> <header> <h1 id="section-3">圧縮機能</h1> </header> <!-- _S9SLIDE_ --> </section> </div></div> <div class="slide" id="16"><div> <section> <header> <h1 id="api">API設計</h1> </header> <!-- _S9SLIDE_ --> <ul> <li>put(String “compressed” + managerKey, String key, Object val) </li> <li>take(String “compressed” + managerKey, String key)</li> </ul> <!-- === end markdown block === --> </section> </div></div> <script src="scripts/script.js"></script> <!-- Copyright © 2010–2011 Vadim Makeev, http://pepelsbey.net/ --> </body> </html>