changeset 35:d5b9addca752

add OUTLINE chapter2
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Fri, 14 Feb 2014 03:17:44 +0900
parents 717d9793d33e
children 03c8790e34b5
files paper/chapter1.tex paper/chapter2.tex paper/thesis-paper.pdf slide/index.html
diffstat 4 files changed, 56 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter1.tex	Wed Feb 12 08:50:52 2014 +0900
+++ b/paper/chapter1.tex	Fri Feb 14 03:17:44 2014 +0900
@@ -8,15 +8,15 @@
 \section{研究背景}
 近年、CPU 1 コア当たりのクロック数が頭打ちとなっているので、シングルコアでの処理能力はほとんど上がっていない。
 それを解決した結果、シングルコアからマルチコアへの移行によって CPU 性能が向上している。
-しかし、マルチコア CPU を最大限に活かすためには、並列プログラミングによる並列度を向上させなければならない。
+しかし、マルチコア CPU を最大限に活かすためには、プログラムの並列度を向上させなければならない。
 そこで当研究室では Cerium Library を提供することによって並列プログラミングを容易にしている。
 
 \section{研究目的}
 先行研究による Task の並列化によって、プログラム全体の処理速度は飛躍的に向上しているが\cite{kinjyo} 、
-ファイル読み込み等の I/O に対して並列で動作するようなAPIは実装されていない。
-しかし、ファイル読み込みと Task を並列化させることにより、さらなる処理速度の向上が見込まれる。
-I/O 部分と Task が並列に動作し、高速かつ容易に記述できるような API を Cerium Library が提供することにより、様々な人が容易に並列プログラミングが記述できるようになるであろうと考えている。
+ファイル読み込み等の I/O と Task が並列で動作するようには実装されていない。
+ファイル読み込みと Task を並列化させることにより、さらなる処理速度の向上が見込まれる。
+I/O と Task が並列に動作し、高速かつ容易に記述できるような API を Cerium Library が提供することにより、様々な人が容易に並列プログラミングが記述できるようになるであろうと考えている。
 
-本研究では、 I/O の並列化の設計・実装によって既存の正規表現の処理速度、処理効率を上げることを目指す。
+本研究では、 I/O と Task の並列化の設計・実装によって既存の正規表現の処理速度、処理効率を上げることを目指す。
 
 %\section{Introduction}
--- a/paper/chapter2.tex	Wed Feb 12 08:50:52 2014 +0900
+++ b/paper/chapter2.tex	Fri Feb 14 03:17:44 2014 +0900
@@ -2,10 +2,31 @@
 \label{chap:concept}
 
 \section{Cerium Task Manager}
+・PS3 の Cell 向けに開発されていた。
+
+
+・Cerium は C 及び C++ で記述されている。
+
+
+・Mac OS X や Linux でも動作可能。
+
+・マルチコア CPU だけでなく、近年では GPGPU もサポートした。
+
+・並列プログラミングをサポートしているのは Cerium Task Manager。
+
+\section{Cerium Task Manager}
 Cerium Task Manager では、並列処理を Task 単位で記述する。
 関数やサブルーチンをそれぞれ Task として扱い、 Task には Input Data 、 Output Data 及び依存関係を設定することができる。
-設定された Task は Cerium Task Manager によって管理され、実行される。
-(図\ref{fig:createTask}の説明)図\ref{fig:createTask}
+
+・User が Task の設定を行い、それを spawn。
+
+・spawn すると 設定された Task が Task Manager で管理される。
+
+・(いろいろとヤバい)
+
+
+図\ref{fig:createTask}
+
 
 \begin{figure}[htbp]
 \begin{center}
@@ -15,17 +36,18 @@
 \label{fig:createTask}
 \end{figure}
 \subsection{Task の生成}
-input data を 2つ準備してそれら同士を乗算し、output data に格納する multiply という例題がある。
+input Data で格納して 2 つの数を乗算し、output data に格納する multiply という例題がある。
 その例題の Task 生成部分を以下に示す。
 
 \begin{verbatim}
 multi_init(TaskManager *manager)
 {
-    HTask* multiply = manager->create_task(MULTIPLY_TASK);
+    float *A, *B, *C;
+    HTaskPtr multiply = manager->create_task(MULTIPLY_TASK);
     multiply->set_cpu(SPE_ANY);
-    multiply->set_inData(0, i_data1, sizeof(float)*length);
-    multiply->set_inData(1, i_data2, sizeof(float)*length);
-    multiply->set_outData(0, 0_data1, sizeof(float)*length);
+    multiply->set_inData(0, (memaddr)A, sizeof(float)*length);
+    multiply->set_inData(1, (memaddr)B, sizeof(float)*length);
+    multiply->set_outData(0, (memaddr)C, sizeof(float)*length);
     multiply->set_param(0,(long)length);
     multiply->spawn();
 }
@@ -61,12 +83,13 @@
 static int
 run(SchedTask *s,void *rbuf, void *wbuf)
 {
-    float indata1=(float*)s->get_input(rbuf,0);
-    float indata2=(float*)s->get_input(rbuf,1);
-    float outdata=(float*)s->get_output(wbuf,0);
+    float *A, *B, *C;
+    A = (float*)s->get_input(rbuf,0);
+    B = (float*)s->get_input(rbuf,1);
+    C = (float*)s->get_output(wbuf,0);
     long  length=(long)s->get_param(0);
     for (int i=0;i<length;i++) {
-        outdata[i]=indata1[i]*indata2[i];
+        C[i]=A[i]*B[i];
     }
     return 0;
 }
Binary file paper/thesis-paper.pdf has changed
--- a/slide/index.html	Wed Feb 12 08:50:52 2014 +0900
+++ b/slide/index.html	Fri Feb 14 03:17:44 2014 +0900
@@ -60,7 +60,7 @@
 
 
         <article>
-        <h3>用語の説明</h3>
+        <h3>用語の定義</h3>
         <ul>
         <li>
         Blocked Read Task<br>
@@ -70,7 +70,6 @@
         Task<br>
         分割されたファイルに対して何らかの計算を行う処理<br>
         </li>
-        <li>
       </article>
 
 
@@ -359,16 +358,30 @@
           <br>
             <ul>
             <li>
-            mmap より、Blocked Readのほうが約50秒高速化した
+            mmap より、Blocked Readのほうが約50秒高速化した<br>
+            mmap では 1つ1つの Task が実メモリへの呼び出しを行っているが、Blocked Read だと複数 Task 分の実メモリ呼び出しを行っている。実メモリへの呼び出し回数が少なくなったため速くなっていると考えられる。(要検証)
             </li>
             <li>
-            I/O と Task の分離が成功して並列に動作するようにした
+            I/O と Task の分離が成功して並列に動作するようになった
             </li>
             </ul>
 
       </article>
 
       <article>
+        <h3>Blocked Read の有効性</h3>
+          <br>
+            <ul>
+            <li>
+            mmap で記述するよりも速度的に速くなる
+            </li>
+            <li>
+            読み込みのOS 依存度が減少する。
+            </li>
+            </ul>
+      </article>
+
+      <article>
         <h3>研究計画</h3>
           <br>
             <ul>