Mercurial > hg > Papers > 2015 > kkb-sigos
view presen/index.html @ 12:ff895b2c6792
add presen
author | Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 24 May 2015 18:12:03 +0900 |
parents | |
children | dfd4f1eb8882 |
line wrap: on
line source
<!DOCTYPE HTML> <html lang="en-US"> <head> <title>Monad に基づくメタ計算を基本とする Gears OS の設計</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>Monad に基づくメタ計算を基本とする Gears OS の設計</h1> <p>小久保翔平</p> </header> <div class="slide cover" id="Cover"><div> <section> <header> <h2>Monad に基づくメタ計算を基本とする Gears OS の設計</h2> <h3 id="author">小久保翔平</h3> <h3 id="profile"></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="cerium--alice">Cerium と Alice</h1> </header> <!-- === begin markdown block === generated by markdown 1.1.1 on Ruby 2.0.0 (2013-02-24) [x86_64-darwin12.3.0] on 2015-05-24 16:59:22 +0900 with Markdown engine kramdown (1.4.0) using options {} --> <!-- _S9SLIDE_ --> <p>本研究室では並列プログラミングフレームワーク Cerium と分散ネットフレームワーク Alice の開発を行なってきた</p> <p>Cerium では Task と呼ばれる分割されたプログラムを依存関係に沿って実行することで並列処理を実現する。 依存関係はプログラム自身が記述する必要があり、Task の種類が増えるほど記述が繁雑になる。 また、Task 間の依存関係のみに注目しており、データの依存関係を正しく保証することができない</p> <p>Task が取り扱うデータに型情報がない 汎用ポインタを型変換して利用するしかなく、型検査を行うことができない</p> </section> </div></div> <div class="slide" id="3"><div> <section> <header> <h1 id="cerium--alice-1">Cerium と Alice</h1> </header> <!-- _S9SLIDE_ --> <p>Alice では処理とデータの単位としてそれぞれ Code Segment, Data Segment と呼ばれる単位を用いてプログラムを記述する。 Code Segment が取り扱う Input/Output Data Segment を指定することで処理とデータの関係を決定する</p> <p>Data Segment にアクセスする API が設計上の問題で複雑化している。 また、Java で実装されており、実行速度が遅いという問題がある</p> </section> </div></div> <div class="slide" id="4"><div> <section> <header> <h1 id="gears-os">Gears OS</h1> </header> <!-- _S9SLIDE_ --> <p>本研究では Cerium と Alice を開発して得られた知見から並列分散フレームワーク Gears OS の設計・開発を行う</p> <p>Gears OS では Alice の Code/Data Segment に相当する Code/Data Gear という単位を用いてプログラムを細かく分割する。 Code Gear は Input Data Gear から Output Data Gear を生成する。 Input/Output Data Gear の関係から Code Gear 間の依存関係を決定し、並列・分散処理を行う</p> </section> </div></div> <div class="slide" id="5"><div> <section> <header> <h1 id="gears-os-1">Gears OS</h1> </header> <!-- _S9SLIDE_ --> <p>従来の OS が行う排他制御、メモリ管理、並列実行などは Meta Computation に相当する。 関数型言語では Meta Computation に Monad を用いる手法があり、Gears OS では Code/Data Gear を Monad として定義して Meta Computation を実現する</p> <p>並列実行の信頼性を確保するため Gears OS では作成されたプログラムに対して Model Checking を行う。 並列プログラムに Model Checking を行うことでそのプログラムが取り得る状態を列挙する。 これにより、デッドロック等を検出することで信頼性を確保する</p> </section> </div></div> <div class="slide" id="6"><div> <section> <header> <h1 id="features">Features</h1> </header> <!-- _S9SLIDE_ --> <p>Inherent Parallel</p> <p>Distributed Open Computation</p> <p>Reliablity </p> <p> Separated Data Segment </p> <p> Model Checking</p> </section> </div></div> <div class="slide" id="7"><div> <section> <header> <h1 id="codedata-gear">Code/Data Gear</h1> </header> <!-- _S9SLIDE_ --> <p>Gears OS ではプログラム実行単位として Gear を用いる。 Gear は変更実行の単位、データの分割、Gear 間の接続などになる</p> <p>Code Gear は実行コードそのものであり、OpenCL/CUDA の kernel に相当する。 接続された複数の Input Data Gear を参照し、単一または複数の Output Data Gear に書き込む。 Code Gear では接続された Data Gear のみに干渉することができる</p> </section> </div></div> <div class="slide" id="8"><div> <section> <header> <h1 id="code-data-gear">Code Data Gear</h1> </header> <!-- _S9SLIDE_ --> <p>Code/Data Gear ではポインタを直接には扱わず、Code と Data の分離性を上げることで、ポインタ関連のセキュリティフローを防止する</p> <p>Gear の特徴の一つとしてその処理が Code/Data Gear に閉じていることがある。 これにより、Code Gear の実行時間、メモリ使用量を予測可能なものにする。</p> </section> </div></div> <div class="slide" id="9"><div> <section> <header> <h1 id="list">list</h1> </header> <!-- _S9SLIDE_ --> <p><img src="pictures/List.jpg" alt="List" title="List" style="width: 80%;" /></p> </section> </div></div> <div class="slide" id="10"><div> <section> <header> <h1 id="singly-linked-list-">singly linked list の実装</h1> </header> <!-- _S9SLIDE_ --> <ul> <li>Context <ul> <li>list の先頭を示す head</li> </ul> </li> <li>DataSegment <ul> <li>任意</li> </ul> </li> <li>MetaDataSegment <ul> <li>次の mds を示す next</li> </ul> </li> </ul> </section> </div></div> <div class="slide" id="11"><div> <section> <header> <h1 id="section">操作</h1> </header> <!-- _S9SLIDE_ --> <ul> <li>append <ul> <li>head から探索して末尾に新たな DS を追加</li> </ul> </li> <li>delete <ul> <li>head を next に変更</li> </ul> </li> <li>traverse <ul> <li>list を先頭から表示</li> </ul> </li> </ul> <!-- === end markdown block === --> </section> </div></div> <script src="scripts/script.js"></script> <!-- Copyright © 2010–2011 Vadim Makeev, http://pepelsbey.net/ --> </body> </html>