Ceriumによる
正規表現マッチャの実装
Masataka Kohagura
6th July , 2013
Masataka Kohagura
6th July , 2013
本研究室では、Cell用に作られたCeriumにて並列プログラミングを行なっている。様々な例題を実装することにより、どのような問題でも並列処理ができることを証明する。
現在は文字列サーチを実装している段階で、ボイヤームーア法を実装している。 セミグループという、分割したファイルに対して並列処理をさせるような手法によって、既存の文字列サーチと処理速度を比較し、どれだけ速く、どれだけ効率よくなるのかを測定する。
様々な並列処理のプログラムを実装することでプログラムに慣れ、
・regex_masのバグ取り ("doing"という単語が本来は27856個存在するはずだが、このプログラムだと27854個と2個不足した状態で出力された。)
・時間測定
修正前
t_exec[k]->set_param(0,(memaddr)offset); t_exec[k]->set_param(1,(memaddr)set_one_task_length); if(size != w->size){ t_exec[k]->set_inData(0,w->file_mmap + a*w->division_size, size+EXTRA_LENGTH); }else{ t_exec[k]->set_inData(0,w->file_mmap + a*w->division_size, size); } t_exec[k]->set_outData(0,w->o_data + a*w->out_size, w->division_out_size);
修正後
t_exec[k]->set_param(0,(memaddr)offset); if(size != w->size){ t_exec[k]->set_param(1,(memaddr)set_one_task_length+EXTRA_LENGTH); t_exec[k]->set_inData(0,w->file_mmap + a*w->division_size, size+EXTRA_LENGTH); }else{ t_exec[k]->set_param(1,(memaddr)set_one_task_length); t_exec[k]->set_inData(0,w->file_mmap + a*w->division_size, size); } t_exec[k]->set_outData(0,w->o_data + a*w->out_size, w->division_out_size);
|
||||||||||||||||
・10回ほど手動で実行して、それの中央値をとっているだけ。
・現在集計スクリプトを作成中。
・cpu_num = 11のとき実行するたんびにバラバラになる。