Mercurial > hg > Game > Cerium
changeset 1949:f3e9f811c387 draft
change some variables types int to long
author | Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 06 Feb 2014 16:30:41 +0900 |
parents | 6b03da068fbe |
children | 1f297d3eacb1 da22fc4db5b2 |
files | example/regex_mas/WordCount.h example/regex_mas/main.cc example/regex_mas/ppe/Read.cc |
diffstat | 3 files changed, 35 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/example/regex_mas/WordCount.h Thu Feb 06 01:23:17 2014 +0900 +++ b/example/regex_mas/WordCount.h Thu Feb 06 16:30:41 2014 +0900 @@ -2,26 +2,26 @@ typedef struct wordCount { struct wordCount *self; /* read task variable */ - int fd; + long fd; long long read_filesize; CPU_TYPE read_cpu; long long size; // remaining file size - int division_size; // for each word count task - int division_out_size; - int out_size; - int out_size_; - int task_num; // remaining task count - int task_blocks; // spawn task one at a time - int status_num; - int task_spawned; + long division_size; // for each word count task + long division_out_size; + long out_size; + long out_size_; + long task_num; // remaining task count + long task_blocks; // spawn task one at a time + long status_num; + long task_spawned; unsigned long long *o_data; - int out_task_num; + long out_task_num; char *file_mmap; long long file_size; /*set input Data variables*/ - int last_task_size; + long last_task_size; unsigned char *search_word; int *BMskip_table; int search_word_len;
--- a/example/regex_mas/main.cc Thu Feb 06 01:23:17 2014 +0900 +++ b/example/regex_mas/main.cc Thu Feb 06 16:30:41 2014 +0900 @@ -169,31 +169,36 @@ { WordCount *w = *(WordCount **)in; - HTaskPtr t_read = NULL; + HTaskPtr t_read = manager->create_task(READ_TASK); + w->t_print->wait_for(t_read); + t_read->set_cpu(read_spe_cpu); + t_read->set_param(0,w->fd); if (w->task_num < w->task_blocks) { + t_read->set_param(1,w->task_spawned*w->division_size); + t_read->set_outData(0, w->file_mmap + w->task_spawned * w->division_size, w->task_blocks * w->division_size); + // last case while (w->size >= w->division_size) run_tasks(manager,w,w->task_num,t_read,w->t_print, w->division_size + w->extra_len); // remaining data while (w->size>0) run_tasks(manager,w,1,t_read,w->t_print, w->size); + + t_read->set_param(2,w->task_spawned*w->division_size); + t_read->spawn(); // printf("run16 last %d\n",w->task_num); } else { - t_read = manager->create_task(READ_TASK, (memaddr)&w->self,sizeof(memaddr),0,0); - HTaskPtr t_next = manager->create_task(RUN_TASK_BLOCKS, (memaddr)&w->self,sizeof(memaddr),0,0); w->t_print->wait_for(t_next); - t_read->set_cpu(read_spe_cpu); - long task_spawned = w->task_spawned; - t_read->set_param(0,task_spawned*w->division_size); - t_read->set_outData(0, w->file_mmap + task_spawned * w->division_size, task_spawned * w->division_size); + + t_read->set_param(1,w->task_spawned*w->division_size); + t_read->set_outData(0, w->file_mmap + w->task_spawned * w->division_size, w->task_blocks * w->division_size); - run_tasks(manager,w, w->task_blocks,t_read, t_next, w->division_size + w->extra_len); + run_tasks(manager,w, w->task_blocks, t_read, t_next, w->division_size + w->extra_len); - task_spawned = w->task_spawned; - t_read->set_param(1,task_spawned*w->division_size); + t_read->set_param(2,w->task_spawned*w->division_size); t_read->spawn(); t_next->spawn(); @@ -257,7 +262,7 @@ /* prepare BMSearch*/ - int *skip = (int*)manager->allocate(256 * sizeof(int)); + int *skip = (int*)manager->allocate(256 * sizeof(int)); // 文字列に対応した table を用意 w->search_word = search_word; w->search_word_len = search_word_len; w->BMskip_table = create_BMskiptable(w->search_word, w->search_word_len, skip); @@ -282,7 +287,7 @@ w->division_size = w->size; } - printf("division_size %d\n",w->division_size); + printf("division_size %ld\n",w->division_size); /* "word num" and "line num" */ w->status_num = 2; @@ -298,8 +303,8 @@ } w->out_task_num = out_task_num; - printf("task_num %d\n",w->task_num); - printf("out_task_num %d\n",w->out_task_num); + printf("task_num %ld\n",w->task_num); + printf("out_task_num %ld\n",w->out_task_num); /* out用のdivision_size. statusが2つなので、あわせて16byteになるように、long long(4byte)を使用 */
--- a/example/regex_mas/ppe/Read.cc Thu Feb 06 01:23:17 2014 +0900 +++ b/example/regex_mas/ppe/Read.cc Thu Feb 06 16:30:41 2014 +0900 @@ -17,18 +17,17 @@ static int read_task(SchedTask *s, void *rbuf, void *wbuf) { - WordCount *w = *(WordCount **)rbuf; - long start_read = (long)s->get_param(0); - long end_read = (long)s->get_param(1); + long fd = (long)s->get_param(0); + long start_read_position = (long)s->get_param(1); + long end_read_position = (long)s->get_param(2) - 1; char *read_text = (char*)s->get_output(wbuf,0); - long fd = w->fd; - long read_size = end_read - start_read; + long read_size = end_read_position - start_read_position + 1; //char *read_text = (char*)s->get_output(wbuf,0); //s->printf("[read No %d : wbuf addr 0x%llx]\n",task_number,read_text); - pread(fd, read_text, read_size , start_read); + pread(fd, read_text, read_size , start_read_position); //s->printf("[start read task No. %d]\n",task_number); //s->printf("%s\n",read_text);