diff slide/index.html @ 19:36958c5e0b90

add slide pages 8-17
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Fri, 31 Jan 2014 23:49:02 +0900
parents e735ac7509c6
children 7b4609c77ac1
line wrap: on
line diff
--- a/slide/index.html	Thu Jan 30 19:55:28 2014 +0900
+++ b/slide/index.html	Fri Jan 31 23:49:02 2014 +0900
@@ -27,6 +27,7 @@
         <h3 class="title">Masataka Kohagura 12th, February</h3>
         <div align="right">担当教官 : 河野 真治</div>
       </article>
+
       <article >
         <h3>研究背景と目的</h3>
         <p>
@@ -40,6 +41,16 @@
         </p>
       </article>
 
+      <article >
+        <h3>Cerium とは</h3>
+        <p>
+        </p>
+        <p>
+        </p>
+        <p>
+        </p>
+      </article>
+
       <article>
         <h3>Cerium の流れ</h3>
         <table  border="0" cellpadding="0" cellspacing="0">
@@ -187,10 +198,11 @@
         </ul>
       </article>
 
+<!--
       <article>
         <h3>divide read の実装(1)</h3>
           <br>
-          <h3 class="yellow">Read Task の生成</h3>
+          <h3 class="yellow">Read Task の ブロック化</h3>
         <pre>
 program_run(TaskManager *manager, char *filename)
 {
@@ -204,21 +216,113 @@
     read->spawn();
 }
 </pre>
-        <p>
-        divide read Task の実行の際に、ブロック単位で Task の生成、実行を行う。
-        </p>
+      </article>
+
+      <article>
+        <h3>divide read の実装(2)</h3>
+          <br>
+          <ul>
+            <li>
+            divide read Task の実行の際に、ブロック単位で Task の生成、実行を行う。
+            </li>
+            <li>
+            1つずつ生成すると Task の数だけ memory address が取られるために肥大化してしまう。
+            </li>
+            <li>
+            しかしブロック単位で生成すると、同じ変数を使用しているので memory の節約になる。
+            </li>
+
+            </li>
+        </ul>
+      </article>
+-->
+
+      <article>
+        <h3>divide read の実装(1)</h3>
+          <br>
+          <h3 class="yellow">divide Read の実装</h3>
+        <pre>
+// 生成するTaskが何番目か
+read->set_param(0,(long)w->read_task_number);
+// 1つの Read Task で読み込む量
+read->set_param(1,(long)w->read_division_size);
+// read_left_size : 残り読み込み量
+if(w->read_left_size <= w->read_division_size){
+    read->set_param(2,(long)w->read_left_size);
+}else{
+    read->set_param(2,(long)w->read_division_size);
+}
+// ファイルディスクリプタを渡す
+read->set_param(3,(long)w->fd);
+
+//生成するTaskが何番目か
+read->set_outData
+        (0,w->file_mmap + w->read_task_number*w->read_division_size,
+            w->read_division_size);
+</pre>
       </article>
 
       <article>
         <h3>divide read の実装(2)</h3>
           <br>
-          <h3 class="yellow">ブロック単位で生成、実行を行う理由</h3>
-          <ul>
-            <li>
+          <h3 class="yellow">divide Read の記述</h3>
+        <pre>
+static int
+read_task(SchedTask *s, void *rbuf, void *wbuf)
+{
+    long task_number = (long)s->get_param(0);
+    long division_size = (long)s->get_param(1);
+    long read_size = (long)s->get_param(2);
+    long fd = (long)s->get_param(3);
+
+    char *read_text = (char*)s->get_output(wbuf,0);
+
+    pread(fd, read_text, (long)read_size , division_size*task_number);
+
+    return 0;
+}
+</pre>
+      </article>
 
-            </li>
+      <article>
+        <h3>divide read を実装した例題</h3>
+          <br>
+        <ul>
+        <li>
+        Boyer Moore String Search Algorithm を使用した文字列検索
+        </li>
+        <li>
+        検索対象の文字列が、あるファイルの中にいくつ存在するかカウントする例題
+        </li>
         </ul>
+
       </article>
 
+      <article>
+        <h3>ベンチマーク</h3>
+          <br>
+          <h3 class="yellow">考察</h3>
+      </article>
+
+      <article>
+        <h3>まとめ</h3>
+          <br>
+      </article>
+
+      <article>
+        <h3>大学院に進学してしたいこと</h3>
+          <br>
+            <ul>
+            <li>
+            さらなる 並列処理向け I/O の動作を改善
+            </li>
+            <li>
+            動作の軽いソフトウェアシンセサイザーを Cerium で実装
+            </li>
+            </ul>
+
+      </article>
+
+
   </body>
 </html>