annotate regexParser/cerium/ppe/Print.cc @ 281:b74e3b4b11d7

parallel search done
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Sun, 31 Jan 2016 18:28:58 +0900
parents 6cc1d9779f45
children 87a801c14117
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
1 #include <stdio.h>
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
2 #include <string.h>
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
3 #include "Print.h"
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
4 #include "Func.h"
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
5 #include "FileMapReduce.h"
272
5aa9d01926f1 Cerium version no compile errors
kono
parents: 266
diff changeset
6 #include "regexParser.h"
279
6cc1d9779f45 add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 275
diff changeset
7 #include "CeriumMain.h"
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
8
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
9 #define STATUS_NUM 2
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
10 /* これは必須 */
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
11 SchedDefineTask1(Print,run_print);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
12
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
13 static int
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
14 run_print(SchedTask *s, void *rbuf, void *wbuf)
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
15 {
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
16 MapReduce *w = (MapReduce*)s->get_input(0);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
17
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
18 int out_size = w->division_out_size / sizeof(unsigned long long);
272
5aa9d01926f1 Cerium version no compile errors
kono
parents: 266
diff changeset
19 int out_task_num = w->task_num;
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
20 ResultPtr prev = NULL;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
21 for (int i = 0; i < out_task_num ; i++) {
275
8879eb8c64a8 remove segmentation fault
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 272
diff changeset
22 ResultPtr r = (ResultPtr)w->o_data[i*out_size+0];
281
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
23 if (r == NULL) {
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
24 prev = NULL;
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
25 continue;
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
26 }
275
8879eb8c64a8 remove segmentation fault
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 272
diff changeset
27 StatePtr blockEnd = (StatePtr)w->o_data[i*out_size+2];
8879eb8c64a8 remove segmentation fault
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 272
diff changeset
28 StatePtr blockBegin = (StatePtr)w->o_data[i*out_size+4]; // next Block's blockBegin.
281
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
29 if (prev) {
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
30 if (i >= out_task_num) break;
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
31 // 最後のブロックでなく、前の blockEnd が state 1 でない場合)
281
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
32 #if 0
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
33 printf("task %d prev begin : %p r->begin : %p r->end : %p\n", i,prev->begin,r->begin,r->end);
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
34 printf("blockBegin : %lx blockEnd : %lx : string ",blockBegin->bitState.bitContainer,blockEnd->bitState.bitContainer);
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
35 fwrite(r->begin,r->end - r->begin-1,1,stdout);
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
36 printf(" match %d\n", ((blockBegin->bitState.bitContainer & ~blockEnd->bitState.bitContainer)==0)? 1 : 0 );
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
37 #endif
272
5aa9d01926f1 Cerium version no compile errors
kono
parents: 266
diff changeset
38 if ((blockBegin->bitState.bitContainer & ~blockEnd->bitState.bitContainer)==0) {
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
39 // 前のブロックの matchBegin から最初 result の end までがマッチ
281
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
40 fwrite(prev->begin,r->end - prev->begin-1,1,stdout);
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
41 if (!r->continued) puts("");
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
42 }
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
43 r = r->next;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
44 }
279
6cc1d9779f45 add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 275
diff changeset
45 prev = resultPrint(r,"Print");
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
46 }
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
47 return 0;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
48 }