Mercurial > hg > Members > kono > Cerium
annotate 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 |
rev | line source |
---|---|
661 | 1 #include <stdio.h> |
2 #include <string.h> | |
3 #include "Print.h" | |
4 #include "Func.h" | |
667
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
5 #include "WordCount.h" |
661 | 6 |
7 /* これは必須 */ | |
667
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
8 SchedDefineTask1(Print,run_print); |
661 | 9 |
10 static int | |
667
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
11 run_print(SchedTask *s, void *rbuf, void *wbuf) |
661 | 12 { |
667
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
13 WordCount *w = *(WordCount**)rbuf; |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
14 unsigned long long *idata = w->o_data; |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
15 // long task_num = w->task_num; |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
16 long status_num = w->status_num; |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
17 int out_task_num = w->out_task_num; |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
18 |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
19 /* |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
20 * head_flag |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
21 * o_data[0] |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
22 * o_data[1] |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
23 * |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
24 */ |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
25 unsigned long long word_data[2]; |
661 | 26 |
27 int flag_cal_sum = 0; | |
28 //printf("pad %d\n",pad); | |
29 | |
30 | |
31 /* head_tail_flag : task = 2 : 1 | |
32 * | |
33 * head_tail_flag[2] | |
34 * ___________ __________ | |
35 * | | | | |
36 * | head_flag | tail_fag | | |
37 * |___________|__________| | |
38 * [0] [1] | |
39 * | |
40 * |----------------------| | |
41 * unsigned long long | |
42 * 16byte | |
43 * | |
44 * 配列先頭の head_flag はみない | |
45 * 配列末尾の tail_flag はみない | |
46 * 担当範囲前の末尾文字が「改行と、スペース以外」(tail_flag = 1)で、 | |
47 * 担当範囲の先頭文字が「改行とスペース」(head_flag = 0)の場合 | |
48 * 単語数を +1 することで、整合性がとれる。 | |
49 * | |
50 * ex. | |
51 * task_num 4 | |
52 * head_tail_flag[8] | |
53 * | |
54 * 0 1 2 3 4 5 6 7 | |
55 * ___ ___ ___ ___ ___ ___ ___ ___ | |
56 * | h | t | h | t | h | t | h | t | | |
57 * |___|___|___|___|___|___|___|___| | |
58 * |-------|-------|-------| | |
59 * 比較 比較 比較 | |
60 * | |
61 */ | |
62 | |
63 s->printf("start sum\n"); | |
64 | |
65 for (int i = 0; i < status_num; i++) { | |
66 word_data[i] = 0; | |
67 } | |
68 | |
667
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
69 for (int i = 0; i < out_task_num ; i++) { |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
70 word_data[0] += idata[i*w->out_size+0]; |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
71 word_data[1] += idata[i*w->out_size+1]; |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
72 unsigned long long *head_tail_flag = |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
73 &idata[i*w->out_size+2]; |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
74 if((i!=out_task_num-1)&& |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
75 (head_tail_flag[1] == 1) && (head_tail_flag[4] == 0)) { |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
76 flag_cal_sum++; |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
77 } |
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
78 } |
661 | 79 |
80 word_data[0] += flag_cal_sum; | |
81 | |
667
d753b4f6b129
SimpeTask WordCount Worked.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
666
diff
changeset
|
82 for (int i = status_num-1; i >=0; i--) { |
661 | 83 s->printf("%llu ",word_data[i]); |
84 } | |
85 | |
86 //printf("j = %d\n",j); | |
87 | |
88 | |
89 s->printf("\n"); | |
90 | |
91 return 0; | |
92 } |