changeset 5:220243d8ef68

cs/ds
author Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
date Sat, 18 Oct 2014 11:51:53 +0900
parents f23d647ae3fa
children 8b6d326c1402
files s6/blank.css.less s6/blank.html
diffstat 2 files changed, 120 insertions(+), 88 deletions(-) [+]
line wrap: on
line diff
--- a/s6/blank.css.less	Tue Aug 12 17:11:48 2014 +0900
+++ b/s6/blank.css.less	Sat Oct 18 11:51:53 2014 +0900
@@ -24,6 +24,7 @@
 @font-size-h2:     200%;    // 28pt / 37px
 @font-size-h3:     150%;    // 24pt / 32px
 @font-size-text:   130%;    // 18pt / 24px
+@font-size-list:   120%;
 @font-size-code:   150%;    // 16pt / 22px
 @font-small-size:   100%;
 
@@ -70,7 +71,8 @@
 ul { list-style-type: square; }
 
 
-p, li, dt, dd, td{ font-size: @font-size-text; }
+p { font-size: @font-size-text; }
+li, dt, dd, td{ font-size: @font-size-list; }
 th { font-size: @font-small-size; font-weight:normal; align:left}
 
 
--- a/s6/blank.html	Tue Aug 12 17:11:48 2014 +0900
+++ b/s6/blank.html	Sat Oct 18 11:51:53 2014 +0900
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+\<!DOCTYPE html>
 <html>
   <head>
     <meta charset='utf-8'>
@@ -88,7 +88,7 @@
         <table width="90%" height="90%" border="0" align="center">
           <tr>
             <td><div align="center">
-                <h1><font color="#808db5">CeriumにおけるGPGPUの最適化</font></h1>
+                <h1><font color="#808db5">Ceriumの再設計</font></h1>
             </div></td>
           </tr>
           <tr>
@@ -114,107 +114,137 @@
       
       <div class='slide'>
         <h2>研究目的</h2>
-        <p>
-          当研究室ではCellおよびLinux、
-          Mac OSX上で動く並列プログラミングフレームワーク、
-          Ceriumの開発・改良を行っている。
-        </p>
-        <p>本研究では新たにGPU上での並列実行に対応し、
-          ヘテロジニアス(異種混合)環境下でのプログラミングをサポートする
-        </p>
-        <p>
-          GPGPUでは通常のマルチコア<font color="red">CPUとは異なる並列プログラミング</font>
-          と<font color="red">特別なチューニング</font>が必要となる。
-          そこでCeriumを用いてその差を吸収し、自動的なチューニングを可能にする。
-        </p>
-      </div>
-
-      <div class='slide'>
-        <h2>進捗</h2>
         <ul>
-          <li><dt>CPU固定でthreadを生成するAPI</dt></li>
-          <li><dt>glibcの環境構築</dt>
-            <dd>実はまだgcc...</dd></li>
-        </ul>
-      </div>
-
-      <div class='slide'>
-        <h2>CPU固定でthreadを生成するAPI(Linux)</h2>
-        <pre class="code">
-int sched_setaffinity(pid_t pid,
-    size_t cpusetsize, const cpu_set_t *mask);
-        </pre>
-        
-        <ul>
-          <li><dt>affinity(親和度、cpu_set_t)は、そのスレッドが実行を許可されているCPUの集合を決定する
-              <dd>maskにCPUをsetするときは、CPU_SETを使用する(例:CPU_SET(cpu_id,&mask)</dd></dt></li>
-          <li><dt>スレッドのaffinityマスクを一つのCPUに設定し、スレッドをCPUに括りつけることができる(Man page)</dt></li>
+          <li>当研究室ではCS/DSを使用したプログラミングを行っている</li>
+          <dd>CS/DSについて</dd>
+          <li>CS/DSベースのフレームワーク(?)の開発</li>
+          <dd>もっと大きい何かなのでは……?</dd>
+          <li>独自のMemory Managementの機構を持つ</li>
+          <li>Cerium・Alice・jungleで得られた知見を……</li>
+          <li>なぜ新しく設計し直す必要がある?</li>
+          <li>名前も考える必要がある?</li>
         </ul>
       </div>
 
       <div class='slide'>
-        <h2>sched_setaffinity Sample</h2>
-        <pre class="code">
-void
-bind_cpu()
-{
-    cpu_set_t mask;
-    __CPU_ZERO(&mask);
-
-    char *p = getenv("BIND_CPU_ID");
-    int cpu_id = atoi(p);
-    __CPU_SET(cpu_id, &mask);
-    sched_setaffinity(0, sizeof(mask), &mask)
-}</pre>
-        <p>sarコマンドで確認できるらしい……</p>
-        こんな感じ
-        <pre>
-% sar -P ALL 1 1000
-
-17:51:28          CPU     %user     %nice   %system   %iowait    %steal     %idle
-17:51:29          all     50.00      0.00      0.00      0.00      0.00     50.00
-17:51:29            0      0.00      0.00      0.00      0.00      0.00    100.00
-17:51:29            1    100.00      0.00      0.00      0.00      0.00      0.00
-
-17:51:29          CPU     %user     %nice   %system   %iowait    %steal     %idle
-17:51:30          all     50.25      0.00      0.00      0.00      0.00     49.75
-17:51:30            0      0.00      0.00      0.00      0.00      0.00    100.00
-17:51:30            1    100.00      0.00      0.00      0.00      0.00      0.00
-          </pre>
+        <h2>Code/Data Segment Systemの構造</h2>
+        <img src="images/new_cerium.png" width="800">
+        <p>全てはDSとして扱われる。CSもDSの一種。</p>
+        <p>TaskもDSで、CSとDSの組になっている。</p>
       </div>
 
       <div class='slide'>
-        <h2>CPU固定でthreadを生成するAPI(OSX)</h2>
-        <p>apple developerのKernel Programming Guide</p>
+        <h2>Temporary/Persistent Space</h2>
+        <table>
+          <tr>
+            <th><img src="images/ts_ps.png" width="400"></th>
+            <th>
+              <dl align="left">
+                <dl align="left">
+                  <dt>Temporary Space, Persistent Space</dt>
+                  <dd><li>DSはTemporary SpaceかPersistent Spaceに属する</dd>
+                  <dd><li>Temporary Spaceはポインタでアクセス。</li>
+                    <li>Persistent SpaceはURLでアクセス。つまり、名前を持つ。<br>
+                      (Persistent Space に書き込む = DBに登録する)</dd>
+                </dl>
+              </dl>
+            </th>
+          </tr>
+        </table>
+        <dt>Task</dt>
+        <dd><li>Input DS, Output DS</li></dd>
+        <dd><li>Input DSが全て揃った時点で実行される。そろったかどうかはTaskが持つ。</dd>
+        <dd><li>DSには持ってるTaskへのポインタが必要(Cerium、Aliceと同じ)</dd>
+        <dd><li>接続って具体的にどうやる?Ceriumで言うcreateTaskに相当する?</dd>
+      </div>
+
+
+      <div class='slide'>
+        <h2>Persistent DS</h2>
+        <p>
+          Persitent DSはkey(URL)を持つ。keyを持ってるので、書き込みは
+          <pre class="code">
+            goto write(ds);</pre>
+          でよい。DS自体がURLを持っているので、goto write(ds, key);とかしなくて良い。
+        </p>
+        <p>
+          ? ds->nextは即座に実行される。ds->nextがなければ、そこで計算は終了。
+        </p>
+        <p>
+          読み込みは、
+          <pre class="code">
+          goto read(ds);</pre>
+          すれば良いだけだが、ds->nextに次に行う演算が入っている。
+        </p>
+      </div>
+      
+
+
+      <div class='slide'>
+        <h2>Meta Space, Core Space</h2>
+        <table>
+          <tr>
+            <th><img src="images/meta_space.png" width="400"></th>
+            <th align="left">
+              <p>Meta SpeceにはTaskのScheduleを行うScheduler、
+                DSの管理を行うDS Manager、Taskの生成を行うTaskManager(Ceriumと同等の機能)がある。
+              </p>
+            </th>
+          </tr>
+          
+          <tr>
+            <th><img src="images/core_space.png" width="400"></th>
+            <th align="left">
+              <p>CoreSpaceにはCS間の遷移を行うDispatcher、同期制御を行うsynchronizer、
+                Memory Spaceの制御を行うSegment Manager(OSやOpenCLにもある)がある。
+                Segment ManagerはMemory間のコピーも行う
+              </p>
+              <p>
+                このDispatcher、Segment Manager辺りを担当することになる?
+              </p>
+            </th>
+          </tr>
+
+        </table>
       </div>
 
       <div class='slide'>
-        <h2>glibc 環境構築</h2>
-        <p>install</p>
-        <pre class="code">
-$ mkdir build;cd build
-$ ../configure --prefix=/home/hiyoko/glibc-2.19/build/bin
-$ make <font color="red">--debug</font> -j
-$ make install</pre>
-        <p>compile</p>
-        <pre class="code">
-$ g++  -Wall -g -O0   -c malloc_sample.cc -o malloc_sample.o
-$ g++  -o malloc_sample malloc_sample.o  -g <font color="red">-static</font>
-       -I../glibc-2.19/build/bin/include
-       -L../glibc-2.19/build/bin/lib</pre>
+        <h2>Memory Manager</h2>
+        <table>
+          <tr>
+            <th><img src="images/memory_manager.png" width="500"></th>
+            <th align="left">
+              <p>
+                DataSegmentは2^n allocatorで配分される。それらは</p>
+                <ul>
+                  <li>Physical Memory</li>
+                  <li>Cache Memory</li>
+                  <li>Parsistent Memory(Disk or Flash)</li>
+              </ul>
+              <p>
+                にMappingされる。
+              </p>
+              <p>
+                Persistent Space はDSの非破壊なBlanced Binary Treeにより構成される(jungle)
+              </p>
+            </th>
+          </tr>
+
+        </table>
       </div>
 
+
+
       <div class='slide'>
-        <h2>Todo</h2>
+        <h2>とりあえず取り掛かれること</h2>
+        <p>ここらへん?</p>
         <ul>
-          <li><dt>調べたAPIの例題の作成</dt></li>
-          <li><dt>malloc読み終わる</dt></li>
-          <li><dt>Cyber Agentインターンシップの告知</dt>
-            <dd>2016年度新卒、インターンシップ面接(?)免除</dd></li>
+          <li>Segment Manager(Memory Allocator)
+          <li>Data SegmentのNon Destructive Tree
+          <li>TaskManager(Ceriumと同等の機能)
         </ul>
-      </div>
-      </div>
-
+      </div>      
+      
     </div> <!-- presentation -->
   </body>
 </html>