changeset 29:ebf75ff50c46

add html
author ikkun
date Mon, 15 May 2017 10:14:23 +0900
parents 5d927ae5167b
children 3050872e76df
files presen/slide.html
diffstat 1 files changed, 245 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/slide.html	Mon May 15 10:14:23 2017 +0900
@@ -0,0 +1,245 @@
+<!DOCTYPE html>
+<html>
+<head>
+   <meta http-equiv="content-type" content="text/html;charset=utf-8">
+   <title>Gears OS における並列処理</title>
+
+<meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 1.9.3 (2011-10-30) [x86_64-darwin10]">
+<meta name="author"    content="Takui Higashionna" >
+
+<!-- style sheet links -->
+<link rel="stylesheet" href="s6/themes/projection.css"   media="screen,projection">
+<link rel="stylesheet" href="s6/themes/screen.css"       media="screen">
+<link rel="stylesheet" href="s6/themes/print.css"        media="print">
+<link rel="stylesheet" href="s6/themes/blank.css"        media="screen,projection">
+
+<!-- JS -->
+<script src="s6/js/jquery-1.11.3.min.js"></script>
+<script src="s6/js/jquery.slideshow.js"></script>
+<script src="s6/js/jquery.slideshow.counter.js"></script>
+<script src="s6/js/jquery.slideshow.controls.js"></script>
+<script src="s6/js/jquery.slideshow.footer.js"></script>
+<script src="s6/js/jquery.slideshow.autoplay.js"></script>
+
+<!-- prettify -->
+<link rel="stylesheet" href="scripts/prettify.css">
+<script src="scripts/prettify.js"></script>
+
+<script>
+  $(document).ready( function() {
+    Slideshow.init();
+
+    $('code').each(function(_, el) {
+      if (!el.classList.contains('noprettyprint')) {
+        el.classList.add('prettyprint');
+        el.style.display = 'block';
+      }
+    });
+    prettyPrint();
+  } );
+
+  
+</script>
+
+<!-- Better Browser Banner for Microsoft Internet Explorer (IE) -->
+<!--[if IE]>
+<script src="s6/js/jquery.microsoft.js"></script>
+<![endif]-->
+
+
+
+</head>
+<body>
+
+<div class="layout">
+  <div id="header"></div>
+  <div id="footer">
+    <div align="right">
+      <img src="s6/images/logo.svg" width="200px">
+    </div>
+  </div>
+</div>
+
+<div class="presentation">
+
+  <div class='slide cover'>
+    <table width="90%" height="90%" border="0" align="center">
+      <tr>
+        <td>
+          <div align="center">
+            <h1><font color="#808db5">Gears OS における並列処理</font></h1>
+          </div>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <div align="left">
+            Takui Higashionna
+            
+            <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;">
+          </div>
+        </td>
+      </tr>
+    </table>
+  </div>
+
+<div class='slide '>
+<!-- === begin markdown block ===
+
+      generated by markdown/1.2.0 on Ruby 1.9.3 (2011-10-30) [x86_64-darwin10]
+                on 2017-05-15 10:13:30 +0900 with Markdown engine kramdown (1.9.0)
+                  using options {}
+  -->
+
+<!-- _S9SLIDE_ -->
+<h1 id="section">メタ計算を使った並列処理</h1>
+
+<ul>
+  <li>並列処理のプラグラミングは、処理のパイプライン</li>
+  <li>当研究室ではメタ計算をサポートする言語として Continuation based C (CbC) を開発している</li>
+  <li>CbC は Code Gear と Data Gear という処理とデータの単位を持っており、メタ計算を行うための Meta Code Gear、Meta Data Gear がある。</li>
+  <li>Gears OS は CbC を用いて記述されている。</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="code-gear-data-gear">Code Gear Data Gear</h1>
+
+<ul>
+  <li>Code Gear Data Gear とはプラグラムを分解し、処理の部分を Code Gear int や文字列などの部分を Data Gear という単位で分ける。</li>
+  <li>Code Gearの処理はその処理に必要な Data Gear が揃ってから行われる。</li>
+  <li>Code Gear の処理の移行は goto を使って行い、この移行の仕方を継続という。</li>
+  <li>goto による移行は戻り値を持たないため、スタックを積む必要のない、スタックに積まない継続を軽量継続と呼ぶ。</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="code-gear-data-gear-">Code Gear Data Gear を用いた計算</h1>
+
+<ul>
+  <li>Code Gear の処理の実行は、接続された Data Gear が揃ってから実行される。</li>
+  <li>Data Gear には Output Data Gear と Input Data Gear があり、Code Gear は接続された Data Gear 以外を変更することはない。</li>
+  <li>そのため通常の計算ではポインタを気にすることはなく、ポインタ演算はメタ計算部分で行われる。</li>
+  <li>Code Gear の処理は tail call のみで遷移を行う関数型プログラミングである。</li>
+  <li>agda に変換することができ、プログラムの正しさを証明できる。</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="section-1">メタ計算</h1>
+
+<ul>
+  <li>メタ計算は通常の計算のための計算である</li>
+  <li>並列処理の依存関係の解決、GPUなどのアーキテクチャ実行のための処理を行う。</li>
+  <li>Gears OSではメタ計算は Meta Code Gear、Meta Data Gear で表現される。</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="gears-os">Gears OS</h1>
+
+<ul>
+  <li>Gears OS は Code Gear、Data Gearの単位を用いて開発されており、CbCで記述される。</li>
+  <li>Meta Code Gear は 通常の Code Gear の直後に遷移され、メタ計算を実行する。</li>
+  <li>Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="gears-os-">Gears OS の並列性</h1>
+
+<ul>
+  <li>Code Gear が処理するのに必要なinput Data Gear と処理実行後に出力される Input Data Gear の組を Task と呼ぶ。</li>
+  <li>Code Gear は Task 以外とは依存関係がない</li>
+  <li>依存関係が明確化されている Code Gear Data Gear で記述することで、並列化し易い。</li>
+</ul>
+
+<div style="text-align: center;">
+    <img src="./images/codeGear_dataGear.svg" alt="message" width="800" />
+</div>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="gears-os--1">Gears OS の柔軟性</h1>
+
+<ul>
+  <li>Gears OS はメタ計算を使用することで
+– データ拡張や機能の追加
+– GPU 等の様々なアーキテクチャでも同じプログラムの動作</li>
+  <li>メタ計算は通常の処理と階層を分けて処理を行う。</li>
+</ul>
+
+<div style="text-align: center;">
+    <img src="./images/meta_gear.svg" alt="message" width="800" />
+</div>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="gears-os--2">Gears OS の構成</h1>
+
+<ul>
+  <li>Gears OS は以下の要素で構成される。</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="context">Context</h1>
+
+<ul>
+  <li>Gears OS は Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear を持つ。</li>
+  <li>Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。</li>
+  <li>Context は 接続に必要な Code/Data Gear のリスト、 Data Gear を確保するためのメモリ空間、実行する Code Gear、Code Gear の実行に必要な Input Data Gear のカウンタ等をもっている。</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="taskmanager">TaskManager</h1>
+
+<ul>
+  <li>TaskManager は Task、Worker の生成、Worker に生成した Task の送信、生成した Worker の終了処理等を行う。</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="worker">Worker</h1>
+
+<ul>
+  <li>Worker は thread と実行する Task が入っている Queue を持っている。</li>
+  <li>Worker は TaskManager から送信された Task を Queue から取り出し、Code Gear を実行する。</li>
+  <li>Task は Context なので、Code Gear の実行に必要な Input Data Gear はその Context から参照される。</li>
+  <li>Code Gear を実行した後は出力される Output Data Gear から依存関係を解決する。</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="section-2">依存関係の解決</h1>
+
+<!-- === end markdown block === -->
+</div>
+
+
+</div><!-- presentation -->
+</body>
+</html>