Ceriumによる
正規表現の実装
Masataka Kohagura
29th October , 2013
Masataka Kohagura
29th October , 2013
本研究室では、Cell用に作られたCeriumにて並列プログラミングを行なっている。Ceriumにて正規表現を実装し、既存の正規表現との処理速度、処理効率がどれだけ良くなるのかを測定する。
現在は文字列サーチをBM法(Boyer-Moore String Search Algorithm)にて実装している。 I/O部分の読み込みの並列化、及びセミグループという、分割したファイルに対して並列処理をさせるような手法によって、効率化を図る。
・cのreadとlseekの動作確認
・新しい例題の作成:fileread readとlseekを使って、Ceriumにて実装
・現在はBM法のI/O部分をfilereadのように書き換えている段階。
for(i = 0; i < task_num - 1; i++){ lseek(fd, i * ONE_TASK_READ_SIZE,SEEK_SET); read(fd,text,ONE_TASK_READ_SIZE + EXTRA_LENGTH); result_printf(i,text); } lseek(fd, i * ONE_TASK_READ_SIZE,SEEK_SET); read(fd,text,ONE_TASK_READ_SIZE); result_printf(i,text);
・lseekにて i * ONE_TASK_READ_SIZE 分読み込み部分をずらす。
SEEK_SETはファイルの先頭からを示している。
・readにて読み込んだファイルを ONE_TASK_READ_SIZE + EXTRA_LENGTH 分読み込む。
・セミグループを考慮した実装。
出力結果
task size:71 task num:11 -------1-------- This is a test f ----------------- -------2-------- test file that w ----------------- ・・・ -------10-------- that will be us ----------------- -------11-------- be used l be us -----------------
fileread
ソースにて実行結果
% ./fileread -cpu 4 -file c.txt filesize : 11524674 one_task_size: 16384 task_num : 704 0 StartTask 276 [task No. 1] [task No. 4] [task No. 3] [task No. 5] [task No. 8] [task No. 2] [task No. 7] [task No. 9] ・・・ [task No. 700] [task No. 694] [task No. 699] [task No. 701] [task No. 704] [task No. 698] [task No. 703] [task No. 702] Time: 0.007602