Mercurial > hg > Members > kono > Cerium
comparison example/word_count_test/ppe/Print.cc @ 713:f725c6455d19
remove SIMPLE_TASK conditional
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 16 Dec 2009 15:27:46 +0900 |
parents | 4af9d20cf3af |
children |
comparison
equal
deleted
inserted
replaced
712:4661eaa48b77 | 713:f725c6455d19 |
---|---|
8 SchedDefineTask1(Print,run_print); | 8 SchedDefineTask1(Print,run_print); |
9 | 9 |
10 static int | 10 static int |
11 run_print(SchedTask *s, void *rbuf, void *wbuf) | 11 run_print(SchedTask *s, void *rbuf, void *wbuf) |
12 { | 12 { |
13 #ifdef SIMPLE_TASK | |
14 WordCount *w = *(WordCount**)rbuf; | 13 WordCount *w = *(WordCount**)rbuf; |
15 unsigned long long *idata = w->o_data; | 14 unsigned long long *idata = w->o_data; |
16 // long task_num = w->task_num; | 15 // long task_num = w->task_num; |
17 long status_num = w->status_num; | 16 long status_num = w->status_num; |
18 int out_task_num = w->out_task_num; | 17 int out_task_num = w->out_task_num; |
21 * head_flag | 20 * head_flag |
22 * o_data[0] | 21 * o_data[0] |
23 * o_data[1] | 22 * o_data[1] |
24 * | 23 * |
25 */ | 24 */ |
26 #else | |
27 unsigned long long *idata = (unsigned long long*)s->get_input(rbuf, 0); | |
28 unsigned long long *head_tail_flag = (unsigned long long*)s->get_input(rbuf, 1); | |
29 // long task_num = (long)s->get_param(0); | |
30 long status_num = (long)s->get_param(1); | |
31 int out_task_num = (int)s->get_param(2); | |
32 int pad = (int)s->get_param(3); | |
33 #endif | |
34 unsigned long long word_data[2]; | 25 unsigned long long word_data[2]; |
35 | 26 |
36 int flag_cal_sum = 0; | 27 int flag_cal_sum = 0; |
37 //printf("pad %d\n",pad); | 28 //printf("pad %d\n",pad); |
38 | 29 |
73 | 64 |
74 for (int i = 0; i < status_num; i++) { | 65 for (int i = 0; i < status_num; i++) { |
75 word_data[i] = 0; | 66 word_data[i] = 0; |
76 } | 67 } |
77 | 68 |
78 #ifdef SIMPLE_TASK | |
79 for (int i = 0; i < out_task_num ; i++) { | 69 for (int i = 0; i < out_task_num ; i++) { |
80 word_data[0] += idata[i*w->out_size+0]; | 70 word_data[0] += idata[i*w->out_size+0]; |
81 word_data[1] += idata[i*w->out_size+1]; | 71 word_data[1] += idata[i*w->out_size+1]; |
82 unsigned long long *head_tail_flag = | 72 unsigned long long *head_tail_flag = |
83 &idata[i*w->out_size+2]; | 73 &idata[i*w->out_size+2]; |
84 if((i!=out_task_num-1)&& | 74 if((i!=out_task_num-1)&& |
85 (head_tail_flag[1] == 1) && (head_tail_flag[4] == 0)) { | 75 (head_tail_flag[1] == 1) && (head_tail_flag[4] == 0)) { |
86 flag_cal_sum++; | 76 flag_cal_sum++; |
87 } | 77 } |
88 } | 78 } |
89 #else | |
90 for (int i = 1; i < out_task_num * pad - pad; i += pad) { | |
91 //printf("%llu ",head_tail_flag[i]); | |
92 //printf("%llu\n",head_tail_flag[i+1]); | |
93 if((head_tail_flag[i] == 1) && (head_tail_flag[i+1] == 0)) { | |
94 flag_cal_sum++; | |
95 } | |
96 } | |
97 | |
98 for (int i = 0; i < out_task_num*status_num; i += status_num) { | |
99 for (int j = 0; j < status_num; j++) { | |
100 word_data[j] += idata[i+j]; | |
101 } | |
102 } | |
103 #endif | |
104 | 79 |
105 word_data[0] += flag_cal_sum; | 80 word_data[0] += flag_cal_sum; |
106 | 81 |
107 for (int i = status_num-1; i >=0; i--) { | 82 for (int i = status_num-1; i >=0; i--) { |
108 s->printf("%llu ",word_data[i]); | 83 s->printf("%llu ",word_data[i]); |