changeset 34:1583df6c9b6e

change slide
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Tue, 04 Feb 2014 18:35:38 +0900
parents 37d843c14923
children a9d6badfe378
files 2014/February/memo/04th.txt 2014/February/slide/04th.html 2014/OUTLINE
diffstat 3 files changed, 200 insertions(+), 80 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/2014/February/memo/04th.txt	Tue Feb 04 18:35:38 2014 +0900
@@ -0,0 +1,111 @@
+2014/02/04 (Tue)
+    [program]
+        [実験環境]
+            firefly で計測
+            2*2.66 GHz, HHD 1TB, memory 16GB
+            読み込んだ file size : 10740996168 Byte (10GB)
+
+            読み込んでから Task が終了するまでの時間を測定
+
+            divide read で一度に読み込む量 : 4*4096*1024 Byte
+
+
+        % ./fileread -file ../regex_mas/10gb.txt -cpu 12 -dr
+        [SPE_ANY]
+            mmap                  0.194788
+            4*4096*1024 Byte    123.563726
+            4*4096      Byte    391.734989
+
+        [IO_0]
+            mmap                  0.194788
+            divide size
+            4*4096*1024 Byte    
+            4*4096      Byte     
+
+        [結果]
+            [fileread]
+                CPU_TYPE SPE_ANY
+                mode    , cpu_num, first(s), cache(s)
+                MMAP            1
+                D_Read          1  
+                D_Read          2  
+                D_Read          3  
+                D_Read          4  
+                D_Read          5  
+                D_Read          6  
+                D_Read          7  
+                D_Read          8  101.228669  138.571596
+                D_Read          9  
+                D_Read         10  130.651908 131.169506
+                D_Read         11  
+                D_Read         12  139.237653 137.285821 
+
+                CPU_TYPE IO_0
+                MMAP            1  
+                D_Read          1  
+                D_Read          2  
+                D_Read          3  
+                D_Read          4  
+                D_Read          5  
+                D_Read          6  
+                D_Read          7  
+                D_Read          8  126.854166  120.156284
+                D_Read          9  
+                D_Read         10  127.547397  129.866984
+                D_Read         11  
+                D_Read         12  107.594404  125.348336 
+
+
+            [regex_mas(BM_search)]
+                CPU_TYPE SPE_ANY
+                mode    , cpu_num, first(s), cache(s)
+                MMAP            1   102.260   38.466
+                MMAP            2  
+                MMAP            3  
+                MMAP            4  
+                MMAP            5  
+                MMAP            6  
+                MMAP            7  
+                MMAP            8  
+                MMAP            9  
+                MMAP           10  
+                MMAP           11  
+                MMAP           12    81.961003  8.134885
+                D_Read          1  
+                D_Read          2  
+                D_Read          3  
+                D_Read          4  
+                D_Read          5  
+                D_Read          6  
+                D_Read          7  
+                D_Read          8  101.228669  138.571596
+                D_Read          9  
+                D_Read         10  130.651908 131.169506
+                D_Read         11  
+                D_Read         12  139.237653 137.285821 
+
+                CPU_TYPE IO_0
+                MMAP            1  
+                MMAP            2  
+                MMAP            3  
+                MMAP            4  
+                MMAP            5  
+                MMAP            6  
+                MMAP            7  
+                MMAP            8  116.673263  8.048647
+                MMAP            9  
+                MMAP           10   75.978887  8.139924
+                MMAP           11  
+                MMAP           12   81.245613    8.200301
+                D_Read          1  
+                D_Read          2  
+                D_Read          3  
+                D_Read          4  
+                D_Read          5  
+                D_Read          6  
+                D_Read          7  
+                D_Read          8  126.854166  120.156284
+                D_Read          9  
+                D_Read         10  127.547397  129.866984
+                D_Read         11  
+                D_Read         12  107.594404  125.348336 
--- a/2014/February/slide/04th.html	Mon Feb 03 23:26:38 2014 +0900
+++ b/2014/February/slide/04th.html	Tue Feb 04 18:35:38 2014 +0900
@@ -46,23 +46,21 @@
         </p>
       </article>
 
-      <article>
-        <h3>
-        研究目的
-        </h3>
+        <article class='smaller'>
+        <h3>研究背景と目的</h3>
         <p>
-        当研究室では、CellやマルチコアCPUで並列プログラミングを可能にするCerium Task Managerを開発している。
+        近年のCPUのほとんどはマルチコアであり、それらの性能を引き出すためには並列プログラミングが必須となっている。そこで当研究室では Cerium Library の開発を行い、提供することによって並列プログラミングを容易にしている。
         </p>
         <p>
-        マルチコア CPU を最大限に活かすためには、プログラムの並列度を向上させなければならない。
-        当研究室では Cerium Libraryを提供することによって並列プログラミングを容易にしているが、ファイル読み込み等のI/O部分に関してはまだAPIが実装されていない。
+        先行研究では Task の並列化によって、プログラム全体の処理速度は向上しているが、ファイル読み込み等の I/O に対して並列に Task が動作するようにはされていない。
         </p>
         <p>
-        本研究では、I/O読み込みとTaskの並列化の設計・実装によって既存の正規表現の処理速度、処理効率を上げる。
+        現状では、ファイルを全て memory に mapping を行ってから Task が走るようになっているので、非常に大きいサイズのファイルを読み込むと、ファイルを memory に mapping するまでの時間がオーバーヘッドになってしまう。
         </p>
-
-
-        </article>
+        <p>
+        本研究では I/O と Task の並列化の設計、実装によってプログラム全体の処理速度、処理効率を上げていく。
+        </p>
+      </article>
 
         <article>
         <h3>
@@ -71,62 +69,13 @@
         <ul>
 
         <li>
-        regex_mas に divide read の実装(未測定) - ちゃんと中身まで書こう
-        </li>
-        <ul>
-    </article>
-
-        <article class='smaller'>
-        <h3>
-        卒論 目次
-        </h3>
-
-        <p>
-第1章 序論<br>
-    1.1 研究背景と目的<br>
-<br>
-第2章 Cerium<br>
-    2.1 Cerium の概要<br>
-    2.2 Cerium Task Manager<br>
-<br>
-
-IOの話をここに
-第3章 Cerium Task Manager を使った例題<br>
-    3.1 Word Count<br>
-    3.2 File Read<br>
-<br>
-mmapの解説をここでいれよう
-map_reduce
-第4章 並列(分割?) I/O の設計と実装<br>
-    4.1 本研究以前の I/O の実装方法 (mmap)<br>
-    4.2 I/O の設計<br>
-        ??4.2.1 single core sequential read<br>
-        ??4.2.2 multi core seguential read<br>
-    4.3 single core sequential read の実装<br>
-    4.4 Cerium の改良(CPU部分にIO_0などを追加したけど、どこにいれよう)<br>
-    4.5 I/O のベンチマーク<br> =>別セクションへ
-<br>
-第5章 結論<br>
-    5.1 まとめ<br>
-    5.2 今後の課題<br>
-        </p>
-
-    </article>
-
-        <article>
-        <h3>
-        今後のスケジュール
-        </h3>
-
-        <ul>
-        <li>
-        後期院試試験・2/12
+        2GB 以上のファイルが読み込めなかった -> 修正
         </li>
 
         <li>
-        卒検発表・2/27,28
+        fileread をちょっとだけ測定
         </li>
-        </ul>
+        <ul>
     </article>
 
     <!--
@@ -150,28 +99,81 @@
 
     <article>
 
-    <h3>
-    make が通らない ( TaskManager を parallel で make したとき)
-    </h3>
+    <h3> 2GB 以上のファイルが読み込めなかった -> 修正 </h3>
+    <p>
+    manager->allocate(int) を使用したところ
+    </p>
     <section><pre>
-%  make clean;make
-rm -f word_count main.o task_init.o ppe/Exec.o ppe/Exec_Data_Parallel.o ppe/Print.o
-rm -f *~ \#*
-
-   ・・・
+if (divide_read_flag != 0) {
+    printf("[divide read mode]\n");
+    <font color="red">w->file_mmap = (char*)manager->allocate((long)w->read_filesize);</font>
+    r_run = manager->create_task
+            (RUN_READ_BLOCKS, (memaddr)&w->self, sizeof(memaddr),0,0);
+}else {
+    printf("[mmap mode]\n");
+    r_run = manager->create_task
+            (MMAP , (memaddr)&w->self, sizeof(memaddr),0,0);
+}
+</pre></section>
+    <p>
+    divide read をする前に manager->alocate にて memory を確保する。
+    この領域に、分割して読み込んだ file を mapping していく。
+    </p>
+    </article>
 
-Make for Mac OS X
-clang++ -m64 -o word_count main.o task_init.o ppe/Exec.o ppe/Exec_Data_Parallel.o ppe/Print.o -L../../../Cerium/TaskManager -lFifoManager `sdl-config --libs`
-Undefined symbols for architecture x86_64:
-  "create_impl(int, int, int)", referenced from:
-      TaskManager::init(int, int, int) in libFifoManager.a(TaskManager.o)
-ld: symbol(s) not found for architecture x86_64
-clang: error: linker command failed with exit code 1 (use -v to see invocation)
-make[1]: *** [word_count] Error 1
-make: *** [macosx] Error 2
+    <article>
+    <h3>
+    kernel/ppe/TaskManagerImpl.h
+    </h3>
+    <p>修正前</p>
+
+<section><pre>
+void* allocate(int size, int alignment)
+{
+#if defined(__SPU__) || ! defined(HAS_POSIX_MEMALIGN)
+    buff =  malloc(size);
+#else
+    posix_memalign(&buff, alignment, size);
+#endif
+    return buff;
+}
+</pre></section>
+
+    <p>修正後</p>
+    <section><pre>
+void* allocate(<font color="red">long size</font>, int alignment)
+{
+    ・・・
+}
 </pre></section>
 
     </article>
 
+        <article>
+        <h3>
+        fileread
+        </h3>
+        <p>
+        ファイルの読み込みだけを行うプログラム
+        </p>
+        <p>
+        firefly 上で実行<br>
+        2*2.66 GHz, HHD 1TB, memory 16GB<br>
+        file size : 10740996168 Byte (約10GB)
+        </p>
+
+      <table>
+        <tr>
+            <table>
+            <tr><td>mode</td><td>time(s)</td></tr>
+            <tr><td>mmap</td><td>0.194788</td></tr>
+            <tr><td>read_divide_size</td><td></td></tr>
+            <tr><td>4*4096      Byte</td><td>391.734989</td></tr>
+            <tr><td>4*4096*1024 Byte</td><td>123.563726</td></tr>
+            </table>
+       <tr>
+     </table>
+    </article>
+
 </body>
 </html>
--- a/2014/OUTLINE	Mon Feb 03 23:26:38 2014 +0900
+++ b/2014/OUTLINE	Tue Feb 04 18:35:38 2014 +0900
@@ -1,3 +1,8 @@
+---------------------------------------------------------------------------
+2014/02/04 (Tue)
+    [memo]
+        firefly で BMsearch の測定 (途中)
+
 2014/02/03 (Mon)
     [memo]
         wbuf の address が 2GB 程度でおかしい挙動をする。それの調査。
@@ -29,6 +34,8 @@
     [memo]
         1/22 の実験結果のまとめ
 
+---------------------------------------------------------------------------
+
 2014/01/22 (Wed)
     [memo]
     今後の実験方針