annotate regexParser/cerium/CeriumMain.cc @ 324:879dc5d1cb6a default tip

fix
author mir3636
date Fri, 27 May 2016 21:21:09 +0900
parents cc770cd8d000
children
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 <sys/time.h>
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
3 #include "TaskManager.h"
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
4 #include "SchedTask.h"
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
5 #include "Func.h"
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
6 #include "FileMapReduce.h"
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
7 #include "CeriumGrep.h"
272
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
8 #include "subsetConstruction.h"
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
9 #include "threadedSearch.h"
279
6cc1d9779f45 add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 278
diff changeset
10 #include "CeriumMain.h"
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
11
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
12 extern void task_init();
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
13 void TMend(TaskManager *);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
14 static double st_time;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
15 static double ed_time;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
16 const char* usr_help_str = "";
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
17
302
27414e6fb33c retrying blocked search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 298
diff changeset
18 void exportState(TransitionGeneratorPtr tg) {
27414e6fb33c retrying blocked search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 298
diff changeset
19 }
27414e6fb33c retrying blocked search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 298
diff changeset
20
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
21 static double
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
22 getTime() {
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
23 struct timeval tv;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
24 gettimeofday(&tv, NULL);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
25 return tv.tv_sec + (double)tv.tv_usec*1e-6;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
26 }
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
27
302
27414e6fb33c retrying blocked search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 298
diff changeset
28 void addResult(TSValue tsv,bool cont, unsigned char *begin, unsigned char *end) {
303
cc770cd8d000 parallel retrying seach worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 302
diff changeset
29 ResultPtr r = NEW(Result);
cc770cd8d000 parallel retrying seach worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 302
diff changeset
30 r->continued = cont;
cc770cd8d000 parallel retrying seach worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 302
diff changeset
31 r->begin = begin;
cc770cd8d000 parallel retrying seach worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 302
diff changeset
32 r->end = end;
cc770cd8d000 parallel retrying seach worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 302
diff changeset
33 *tsv.blk->resultEnd = r;
cc770cd8d000 parallel retrying seach worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 302
diff changeset
34 r->next = NULL;
cc770cd8d000 parallel retrying seach worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 302
diff changeset
35 tsv.blk->resultEnd = &r->next;
302
27414e6fb33c retrying blocked search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 298
diff changeset
36 }
27414e6fb33c retrying blocked search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 298
diff changeset
37
27414e6fb33c retrying blocked search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 298
diff changeset
38
278
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
39 static
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
40 TSValue stateNothing(TSValue tsv) {
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
41 return tsv;
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
42 }
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
43
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
44 static
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
45 TSValue stateSkip(TSValue tsv) {
288
f2491681914e special state for start search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 286
diff changeset
46 tsv.current = tsv.tg->stateStart->tState;
292
868f01f1ba8e maximum match
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 288
diff changeset
47 if (tsv.matchEnd) {
302
27414e6fb33c retrying blocked search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 298
diff changeset
48 addResult(tsv,false,tsv.matchBegin,tsv.matchEnd);
303
cc770cd8d000 parallel retrying seach worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 302
diff changeset
49 tsv.matchEnd = NULL;
292
868f01f1ba8e maximum match
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 288
diff changeset
50 }
298
63213964502a refactoring ....
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 293
diff changeset
51 tsv.matchBegin = tsv.buff.buffptr; // next char may be matchBegin
278
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
52 return tsv;
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
53 }
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
54
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
55 static
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
56 TSValue stateMatch(TSValue tsv) {
292
868f01f1ba8e maximum match
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 288
diff changeset
57 tsv.matchEnd = tsv.buff.buffptr; // next char of the match
278
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
58 return tsv;
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
59 }
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
60
279
6cc1d9779f45 add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 278
diff changeset
61 ResultPtr resultPrint(ResultPtr r,const char* comment) {
6cc1d9779f45 add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 278
diff changeset
62 ResultPtr prev = NULL;
280
6bbd1cbf90d0 fix prev initialize in Print.c . Search in a block worked
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
63 // printf("%s\n",comment);
279
6cc1d9779f45 add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 278
diff changeset
64 for (;r;r = r->next) {
281
b74e3b4b11d7 parallel search done
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 280
diff changeset
65 if (r->continued) {
279
6cc1d9779f45 add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 278
diff changeset
66 prev = r;
6cc1d9779f45 add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 278
diff changeset
67 break;
6cc1d9779f45 add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 278
diff changeset
68 }
292
868f01f1ba8e maximum match
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 288
diff changeset
69 fwrite(r->begin,r->end - r->begin,1,stdout);
280
6bbd1cbf90d0 fix prev initialize in Print.c . Search in a block worked
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 279
diff changeset
70 puts("");
279
6cc1d9779f45 add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 278
diff changeset
71 }
6cc1d9779f45 add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 278
diff changeset
72 return prev;
6cc1d9779f45 add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 278
diff changeset
73 }
6cc1d9779f45 add CeriumMain.h
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 278
diff changeset
74
288
f2491681914e special state for start search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 286
diff changeset
75 void
f2491681914e special state for start search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 286
diff changeset
76 ceriumCreateAnyState(TransitionGeneratorPtr tg) {
278
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
77 tg->stateSkip = stateSkip;
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
78 tg->stateMatch = stateMatch;
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
79 tg->stateNothing = stateNothing;
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
80 createAnyState(tg);
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
81 generateTState(tg->anyState,tg);
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
82 // generateTState for startState. It is used in stateMatch.
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
83 generateTState(tg->stateList,tg);
288
f2491681914e special state for start search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 286
diff changeset
84 tg->stateStart = NEW(State);
f2491681914e special state for start search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 286
diff changeset
85 *tg->stateStart = *tg->stateList;
f2491681914e special state for start search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 286
diff changeset
86 tg->stateStart->accept = false; // Start state never accept
f2491681914e special state for start search
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 286
diff changeset
87 generateTState(tg->stateStart,tg);
278
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
88 }
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
89
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
90 int
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
91 TMmain(TaskManager *manager, int argc, char *argv[])
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
92 {
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
93 char *filename = 0;
271
6640b0d5bf13 remove anystate processing in sequential seqrch
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 268
diff changeset
94 st_time = getTime();
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
95 Search s = grep(argc,argv,true);
277
7b4bcc7b5ae6 nextTState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 272
diff changeset
96
278
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 277
diff changeset
97 ceriumCreateAnyState(s.tg);
268
0e423d9f9647 remove error (remain 1 warning(no use variable))
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
98
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
99 FileMapReduce *fmp = new FileMapReduce(manager,TASK_EXEC,TASK_EXEC_DATA_PARALLEL,TASK_PRINT);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
100 filename = fmp->init(argc, argv);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
101 fmp->w->global = (void*)s.tg;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
102 if (filename < 0) {
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
103 return -1;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
104 }
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
105 fmp->division_out_size = sizeof(void*)*3; // *Result,*blockBegin,*blockEnd
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
106 task_init();
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
107 fmp->run_start(manager, filename);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
108 manager->set_TMend(TMend);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
109 return 0;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
110 }
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
111
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
112 void
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
113 TMend(TaskManager *manager)
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
114 {
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
115 ed_time = getTime();
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
116 printf("Time: %0.6f\n",ed_time-st_time);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
117 }
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
118
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
119 /* end */