Ceriumによる
正規表現マッチャの実装

Masataka Kohagura
2nd April , 2013

研究目的

本研究室では、Cell用に作られたCeriumにて並列プログラミングを行なっている。 近年、マルチコアCPUが主流となっているが、それをフルに使用させるためには並列プログラミングの並列度を上げる必要がある。(続く)

現在は正規表現を並列実装している段階である。

今週までにしたこと

a*bが含まれている単語数と行数をカウントするようにした。

Print.ccで、データの受け渡しの様子の確認。

Exec.cc

   for (; i < length; i++) {
        if (i_data[i] == 0x61) {
            word_head_a_flag = true;
        } else if ((i_data[i] == 0x62) && (word_head_a_flag == true)){
            word_flag = true;
            line_flag = true;
            word_head_a_flag = true;
        } else if (i_data[i] == 0x20) { //空白 
            word_num += word_flag;
            word_flag = false;
            word_head_a_flag = false;
        } else if (i_data[i] == 0x0A) { // 改行
            line_num += line_flag;
            word_num += word_flag;
            line_flag = false;
            word_flag = false;
            word_head_a_flag = false;
        }   
    }   

実行結果(分割されないような小さなファイル)

[Masa]~%  ./regex -file b.txt                   [~/hg/Cerium/example/regex_mas]
file size 75
fix 4096byte file size 4096
w 7ffc43a07440
dvision_size 4096
task_num 1
out_task_num 1
out size 32
SPE include 'a*b' 3 lines. 5 words. 
start sum
3 5 
Time: 0.000424
        
SPE include 'a*b' 3 lines. 5 words.