Mercurial > hg > Game > Cerium
diff example/regex_mas/main.cc @ 1647:0dcdaa4dfecb draft
fix bugs regex/mas
author | Masa <e085726@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 24 Jun 2013 20:44:27 +0900 |
parents | 4698c92bf2ca |
children | 89b24515fabf |
line wrap: on
line diff
--- a/example/regex_mas/main.cc Mon Jun 24 19:45:45 2013 +0900 +++ b/example/regex_mas/main.cc Mon Jun 24 20:44:27 2013 +0900 @@ -12,7 +12,7 @@ #include "Func.h" #include "WordCount.h" -#define EXTRA_LENGTH 4 //多く取ってくる文字数(search word length - 1) +#define EXTRA_LENGTH 2 //多く取ってくる文字数(search word length - 1) /* ;TODO * PS3でCPU数が2以上の時に、あまりが計算されてない @@ -174,7 +174,7 @@ } /*sizeをページングサイズの倍数にあわせる*/ - st_mmap.size = fix_byte(sb.st_size,4096 + EXTRA_LENGTH); + st_mmap.size = fix_byte(sb.st_size,4096); st_mmap.file_mmap = (char*)mmap(NULL,st_mmap.size,PROT_READ,map,fd,(off_t)0); if (st_mmap.file_mmap == (caddr_t)-1) { @@ -269,12 +269,17 @@ t_exec[k] = task_array[k]->next_task_array(TASK_EXEC,t_exec[k]); t_exec[k]->set_param(0,(memaddr)length); + t_exec[k]->set_param(0,(memaddr)length); const int ONE_LOOP_LENGTH = array_task_num*spe_num*ONE_TASK_LENGTH; const int ARRAY_LENGTH_SIZE = spe_num * ONE_TASK_LENGTH; int offset = ONE_LOOP_LENGTH * i + ARRAY_LENGTH_SIZE*j + ONE_TASK_LENGTH*k; t_exec[k]->set_param(1,(memaddr)offset); //printf("%s\n",search_word); - t_exec[k]->set_inData(0,w->file_mmap + a*w->division_size, size + EXTRA_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); w->size -= size;