# HG changeset patch # User Masataka Kohagura # Date 1390299365 -32400 # Node ID 998578d51c49ce50084d902bb373168c5a90c1e1 # Parent 51fea74a93242d09ce8cd4a16a6008484fa04bba add somefiles diff -r 51fea74a9324 -r 998578d51c49 2014/January/memo/14th.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/2014/January/memo/14th.html Tue Jan 21 19:16:05 2014 +0900 @@ -0,0 +1,73 @@ +・Ceriumの並列処理向けIOの研究 + +・研究内容 +・マルチコアCPUを活かすためには並列度を向上させていくのがCerium +・ファイル読み込み等のIO部分を並列に実装する部分を作成していく +・IOと並列処理の関係 +・この場合のIOもファイル +・1GBのファイルがあったらそれを10個、100個に分割して走らせる +・ファイル分割による並列 +・そういったものを自明に走らせる(1つめ) +・読み込みながら処理して、読み込み終わりで処理を終えたい +・読み込みと計算が同時に進む(2つめ) +・読み込み自体を並列する +・それらを実現するライブラリをつくりたい + +・正規表現はおまけ +・grepとかwcとか + +・したこと +・wcの部分、分割readが出来るようになった +・IOスレッドいまから動かす +・1つのファイルにたいしてmmapつかって +・メモリにtextデータ格納していた +・いまはreadを使って +・1度に読み込むのではなく、 +・あるサイズ単位で読み込ませていく? + +・読み込みと実際の計算をやる +・分割したファイル自体を並行実行する +・今回は1つしか書いてなかった +・読み込みながらちゃんと並列に計算できているか +・それを調べるには? +・表示した瞬間に測定できなくなる +・IOの並列度はそういうもの +・時間とlogだけで判断しなければならない + +・mmapと速度的にどうなのか? +・測定しないと駄目 + +・readする単位をでかくすれば早くなるはず +・最初に計算をするのが遅くなる +・最初に全部読み込むことになったらバランスが悪くなる +・最初だけ小さくしてあとから大きくするという工夫とか + +・ファイルはcacheに入ってしまう +・cacheの効果がどうなるか +・low read(ファイルを読み込むだけ)これで早くなっているはず +・read rootを回すだけと変わらなかったらそれの原因を確かめないといけない + +・readの代わりにmmapするという方法がある +・最初のタスクの時に同時に投入できる + +・mmapよりreadが早い・・・迷信? +・これがどうなのかを証明していく + +・ファイルサイズをメモリよりも大きくしないといけない +・100GBのデータを作って実験? +・fireflyだったら16GB以上 +・自機では4GB以上 + +・map reduceでまとめたい +・map reduceに似ていると言われる? + +・mmmapの解説 +・64bitアーキテクチャ +・read map よりも mmap がよいと言われている +・遅い時期があったため、遅いと言われている +・コピーしなくてすむからmmapはwriteの方が早いと言われている + +・評価(ベンチマーク) +・mmap、map reduceの解説をかく + +・卒論は、理解することをアピールするためにかく diff -r 51fea74a9324 -r 998578d51c49 2014/January/slide/14th.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/2014/January/slide/14th.html Tue Jan 21 19:16:05 2014 +0900 @@ -0,0 +1,144 @@ + + + + + + + slide + + + + + + + + + +
+ + + +
+

+ Cerium Task Manager +
+ による正規表現の実装 +

+

+ Masataka Kohagura +
+ 14th January , 2014 +

+
+ +
+

+ 研究目的 +

+

+ 当研究室では、CellやマルチコアCPUで並列プログラミングを可能にするCerium Task Managerを開発している。 +

+

+ マルチコア CPU を最大限に活かすためには、プログラムの並列度を向上させなければならないが、実装が難しい。 + 当研究室では Cerium Libraryを提供することによって並列プログラミングを容易にしているが、ファイル読み込み等のI/O部分に関してはまだAPIが実装されていない。 +

+

+ 本研究ではその例題として正規表現を実装し、I/Oの順次読み込みとTaskの並列化の設計・実装によって既存の正規表現の処理速度、処理効率を上げる。 +

+ +
+ +
+

+ したこと +

+
    + +
  • + マルチコアCPUの並列プログラミングの勉強 +
  • + +
  • + Ceriumのソース読み(ppe中心に) +
  • + +
      +
+ +
+

+ 今後のスケジュール +

+
    +
  • + 後期院試試験・2/12 +
  • + +
  • + 卒検発表・2/27,28 +
  • +
+
+ + +
+ +

+ make が通らない ( TaskManager を parallel で make したとき) +

+
+%  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 *~ \#*
+
+   ・・・
+
+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
+
+ +
+ + + diff -r 51fea74a9324 -r 998578d51c49 2014/January/slide/21th.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/2014/January/slide/21th.html Tue Jan 21 19:16:05 2014 +0900 @@ -0,0 +1,177 @@ + + + + + + + slide + + + + + + + + + +
+ + + +
+

+ Cerium の並列処理向け I/O の設計と実装 +

+

+ Masataka Kohagura +
+ 21th January , 2014 +

+
+ +
+

+ 研究目的 +

+

+ 当研究室では、CellやマルチコアCPUで並列プログラミングを可能にするCerium Task Managerを開発している。 +

+

+ マルチコア CPU を最大限に活かすためには、プログラムの並列度を向上させなければならない。 + 当研究室では Cerium Libraryを提供することによって並列プログラミングを容易にしているが、ファイル読み込み等のI/O部分に関してはまだAPIが実装されていない。 +

+

+ 本研究では、I/O読み込みとTaskの並列化の設計・実装によって既存の正規表現の処理速度、処理効率を上げる。 +

+ + +
+ +
+

+ したこと +

+
    + +
  • + regex_mas に divide read の実装(未測定) - ちゃんと中身まで書こう +
  • +
      +
+ +
+

+ 卒論 目次 +

+ +

+第1章 序論
+ 1.1 研究背景と目的
+
+第2章 Cerium
+ 2.1 Cerium の概要
+ 2.2 Cerium Task Manager
+
+ +IOの話をここに +第3章 Cerium Task Manager を使った例題
+ 3.1 Word Count
+ 3.2 File Read
+
+mmapの解説をここでいれよう +map_reduce +第4章 並列(分割?) I/O の設計と実装
+ 4.1 本研究以前の I/O の実装方法 (mmap)
+ 4.2 I/O の設計
+ ??4.2.1 single core sequential read
+ ??4.2.2 multi core seguential read
+ 4.3 single core sequential read の実装
+ 4.4 Cerium の改良(CPU部分にIO_0などを追加したけど、どこにいれよう)
+ 4.5 I/O のベンチマーク
=>別セクションへ +
+第5章 結論
+ 5.1 まとめ
+ 5.2 今後の課題
+

+ +
+ +
+

+ 今後のスケジュール +

+ +
    +
  • + 後期院試試験・2/12 +
  • + +
  • + 卒検発表・2/27,28 +
  • +
+
+ + + +
+ +

+ make が通らない ( TaskManager を parallel で make したとき) +

+
+%  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 *~ \#*
+
+   ・・・
+
+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
+
+ +
+ + +