changeset 272:5aa9d01926f1

Cerium version no compile errors
author kono
date Fri, 29 Jan 2016 20:38:18 +0900
parents 6640b0d5bf13
children bc704a31e842
files regexParser/Makefile regexParser/cerium/CeriumMain.cc regexParser/cerium/Makefile.def regexParser/cerium/Makefile.macosx regexParser/cerium/ppe/Exec.cc regexParser/cerium/ppe/Print.cc regexParser/regexParser.h regexParser/subsetConstruction.h regexParser/threadedSearch.cc regexParser/threadedSearch.h
diffstat 10 files changed, 48 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- a/regexParser/Makefile	Fri Jan 29 19:37:11 2016 +0900
+++ b/regexParser/Makefile	Fri Jan 29 20:38:18 2016 +0900
@@ -2,6 +2,7 @@
 CFLAGS= -Wall -O0 -g -I$(CERIUM)/include/TaskManager -I.
 CC= clang++
 CERIUM= ../../Cerium
+AR= libCeriumGrep.a
 
 SRCS_TMP = $(wildcard *.cc)
 SRCS_EXCLUDE = sequentialSearch.cc state.cc parallelSearch.cc taskInit.cc searchTask.cc
@@ -30,8 +31,11 @@
 	$(CC) $(CFLAGS)  sequentialSearch.o fileread.o -o $@
 	./$@ -file sequentialSearch.cc
 
-parallelSearch: parallelSearch.o taskInit.o searchTask.o
-	$(CC) $(CFLAGS) $< -L$(CERIUM)/TaskManager -lFifoManager `sdl-config --libs` 
+parallelSearch: $(AR)
+	cd cerium ; $(MAKE) -f Makefile.macosx CERIUM=../$(CERIUM)
+
+$(AR): $(OBJS)
+	ar crus $@ $(OBJS)
 
 gcov:
 	make CFLAGS="-Wall -O0 -g -coverage"
@@ -40,14 +44,15 @@
 	gcov *.gcda
 
 clean:
-	rm -f $(TARGET) $(OBJS)
-	rm -f *~ \#* *.gcda *.gcno *.gcov state.cc
+	rm -f $(TARGET) $(OBJS) $(AR)
+	rm -rf *~ \#* *.gcda *.gcno *.gcov state.cc  sequentialSearch *.dSYM
+	cd cerium; make clean
 	touch state.cc
 
 .SUFFIXES: .cc .o
 
 tSearch: regexParser
-	./regexParser -seq  -subset -regex '[A-Z][A-Za-z0-9_]*' -file main.cc -ts
+	./regexParser -seq  -subset -regex '[A-Z][A-Za-z0-9_]*' -file sequentialSearch.cc -ts
 
 test1: regexParser
 	./regexParser -regex 'a'
--- a/regexParser/cerium/CeriumMain.cc	Fri Jan 29 19:37:11 2016 +0900
+++ b/regexParser/cerium/CeriumMain.cc	Fri Jan 29 20:38:18 2016 +0900
@@ -5,6 +5,8 @@
 #include "Func.h"
 #include "FileMapReduce.h"
 #include "CeriumGrep.h"
+#include "subsetConstruction.h"
+#include "threadedSearch.h"
 
 extern void task_init();
 void TMend(TaskManager *);
@@ -26,7 +28,7 @@
     st_time = getTime();
     Search s = grep(argc,argv,true);
     createAnyState(s.tg); 
-    generateTsate(s.tg->anySatete,s.tg);
+    generateTState(s.tg->anyState,s.tg);
 
     FileMapReduce *fmp = new FileMapReduce(manager,TASK_EXEC,TASK_EXEC_DATA_PARALLEL,TASK_PRINT);
     filename = fmp->init(argc, argv);
--- a/regexParser/cerium/Makefile.def	Fri Jan 29 19:37:11 2016 +0900
+++ b/regexParser/cerium/Makefile.def	Fri Jan 29 20:38:18 2016 +0900
@@ -1,18 +1,13 @@
-TARGET = word_count
+TARGET = ceriumGrep
 
-# include/library path
-# ex  macosx
-#CERIUM = /Users/gongo/Source/Cerium
 ABIBIT=64
 
 # ex  linux/ps3
-CERIUM = ../../../Cerium
-
 
 OPT =  -g -O0
 
 CC      = clang++
-CFLAGS  =  -m64 -Wall $(OPT)
+CFLAGS  =  -I.. -m64 -Wall $(OPT)
 
 INCLUDE = -I${CERIUM}/include/TaskManager -I. -I..
 LIBS = -L${CERIUM}/TaskManager
--- a/regexParser/cerium/Makefile.macosx	Fri Jan 29 19:37:11 2016 +0900
+++ b/regexParser/cerium/Makefile.macosx	Fri Jan 29 20:38:18 2016 +0900
@@ -11,7 +11,7 @@
 TASK_SRCS = $(filter-out $(TASK_DIR)/$(TASK_SRCS_EXCLUDE),$(TASK_SRCS_TMP))
 TASK_OBJS = $(TASK_SRCS:.cc=.o)
 
-LIBS += -lFifoManager `sdl-config --libs`
+LIBS += -L.. -lCeriumGrep -lFifoManager `sdl-config --libs`
 CC += -m$(ABIBIT) -g
 
 .SUFFIXES: .cc .o
--- a/regexParser/cerium/ppe/Exec.cc	Fri Jan 29 19:37:11 2016 +0900
+++ b/regexParser/cerium/ppe/Exec.cc	Fri Jan 29 20:38:18 2016 +0900
@@ -2,19 +2,25 @@
 #include <string.h>
 #include "Exec.h"
 #include "Func.h"
+#include "regexParser.h"
+#include "threadedSearch.h"
+#include "FileMapReduce.h"
 
 /* これは必須 */
 SchedDefineTask1(Exec,blockedGrep);
 
+static
 TSValue stateNothing(TSValue tsv) {
     return tsv;
 }
 
+static
 TSValue stateSkip(TSValue tsv) {
     tsv.buff.matchBegin = tsv.buff.buffptr;
     return tsv;
 }
 
+static
 TSValue stateMatch(TSValue tsv) {
     ResultPtr r = NEW(Result);
     r->begin = tsv.buff.matchBegin;
@@ -28,7 +34,7 @@
     return tsv;
 }
 
-TSValue threadedSearch(TransitionGeneratorPtr tg,Buffer buff) {
+TSValue blockSearch(TransitionGeneratorPtr tg,Buffer buff) {
     TSValue tsv;
     tsv.buff = buff;
     tsv.tg = tg;
@@ -45,7 +51,7 @@
     buff.buffend = end;
     tSearch(tsv);
     tsv.blockEnd = tsv.current;
-    if (tsv.blockEnd->bi.bitContainer != 1) {
+    if (tsv.blockEnd->state->bitState.bitContainer != 1) {
         ResultPtr r = NEW(Result);
         r->begin = tsv.buff.matchBegin;
         r->end = NULL;
@@ -61,27 +67,26 @@
 {
     long task_spwaned = (long)s->get_param(0);
     long division_size = (long)s->get_param(1);
-    long length = (long)s->get_param(2);
+    // long length = (long)s->get_param(2);
     long out_size = (long)s->get_param(3);
     MapReduce *w = (MapReduce*)s->get_param(4);
     long allocation = task_spwaned + (long)s->x;
-    char* i_data;
-    unsigned long long* o_data;
+    unsigned char* i_data;
+    unsigned long * o_data;
     if (division_size) {
-        i_data = (char*)s->get_input(rbuf,0) + allocation*division_size;
-        o_data = (unsigned long long*)s->get_output(wbuf,1) + allocation*out_size;
+        i_data = (unsigned char*)s->get_input(rbuf,0) + allocation*division_size;
+        o_data = (unsigned long *)s->get_output(wbuf,1) + allocation*out_size;
     } else {
-        i_data = (char*)s->get_input(0);
-        o_data = (unsigned long long*)s->get_output(0);
+        i_data = (unsigned char*)s->get_input(0);
+        o_data = (unsigned long *)s->get_output(0);
     }
     TransitionGeneratorPtr tg = (TransitionGeneratorPtr)w->global;
-    StatePtr startState = tg->anyState;
     Buffer buff;
     buff.buff = buff.buffptr = buff.matchBegin = i_data;
     buff.buffend = buff.buff + division_size;
-    TSValue tsv = threadedSearch(tg,buff);
-    o_data[0] = (void*)tsv.result;
-    o_data[1] = (void*)tsv.blockBegin;
-    o_data[2] = (void*)tsv.blockEnd;
+    TSValue tsv = blockSearch(tg,buff);
+    o_data[0] = (unsigned long)tsv.result;
+    o_data[1] = (unsigned long)tsv.blockBegin;
+    o_data[2] = (unsigned long)tsv.blockEnd;
     return 0;
 }
--- a/regexParser/cerium/ppe/Print.cc	Fri Jan 29 19:37:11 2016 +0900
+++ b/regexParser/cerium/ppe/Print.cc	Fri Jan 29 20:38:18 2016 +0900
@@ -3,6 +3,7 @@
 #include "Print.h"
 #include "Func.h"
 #include "FileMapReduce.h"
+#include "regexParser.h"
 
 #define STATUS_NUM 2
 /* これは必須 */
@@ -13,19 +14,19 @@
 {
     MapReduce *w = (MapReduce*)s->get_input(0);
     
-    unsigned char* buff = (unsigned char*)w->i_data;
     int out_size = w->division_out_size / sizeof(unsigned long long);
+    int out_task_num = w->task_num;
     ResultPtr prev = NULL;
     for (int i = 0; i < out_task_num ; i++) {
         ResultPtr *idata = (ResultPtr*)w->o_data[i*3+0];
-        StatePtr *blockEnd = (StatePtr)w->o_data[i*3+2];
-        StatePtr *blockBegin = (StatePtr)w->o_data[i*3+4]; // next Block's blockBegin.
+        StatePtr blockEnd = (StatePtr)w->o_data[i*3+2];
+        StatePtr blockBegin = (StatePtr)w->o_data[i*3+4]; // next Block's blockBegin.
         ResultPtr r = idata[i*out_size];
         if (prev && i != out_task_num-1) {
             // 最後のブロックでなく、前の blockEnd が state 1 でない場合)
-            if (blockBegin->bi.bitContainer & blockEnd->bi.bitContainer) {
+            if ((blockBegin->bitState.bitContainer & ~blockEnd->bitState.bitContainer)==0) {
                 // 前のブロックの matchBegin から最初 result の end までがマッチ
-                fwrite(prev->result,r->end - prev->begin,1,stdout);
+                fwrite(prev->begin,r->end - prev->begin,1,stdout);
             }
             r = r->next;
         }
--- a/regexParser/regexParser.h	Fri Jan 29 19:37:11 2016 +0900
+++ b/regexParser/regexParser.h	Fri Jan 29 20:38:18 2016 +0900
@@ -111,7 +111,7 @@
 typedef struct tsValue {
     Buffer buff;
     ResultPtr result;
-    ResultPtr resultEnd;
+    ResultPtr *resultEnd;
     TransitionGeneratorPtr tg;
     TState *current;
     TState *blockBegin;
--- a/regexParser/subsetConstruction.h	Fri Jan 29 19:37:11 2016 +0900
+++ b/regexParser/subsetConstruction.h	Fri Jan 29 20:38:18 2016 +0900
@@ -12,3 +12,4 @@
 extern void printState(TransitionGeneratorPtr tg);
 extern void determinize(StatePtr s, TransitionGeneratorPtr tg);
 extern void subsetConstruction(TransitionGeneratorPtr tg);
+extern void createAnyState(TransitionGeneratorPtr tg);
--- a/regexParser/threadedSearch.cc	Fri Jan 29 19:37:11 2016 +0900
+++ b/regexParser/threadedSearch.cc	Fri Jan 29 20:38:18 2016 +0900
@@ -7,15 +7,18 @@
 
 void tSearch(TSValue tsv);
 
+static
 TSValue stateNothing(TSValue tsv) {
     return tsv;
 }
 
+static
 TSValue stateSkip(TSValue tsv) {
     tsv.buff.matchBegin = tsv.buff.buffptr;
     return tsv;
 }
 
+static
 TSValue stateMatch(TSValue tsv) {
     fwrite(tsv.buff.matchBegin,tsv.buff.buffptr-tsv.buff.matchBegin-1,1,stdout);
     puts("");
--- a/regexParser/threadedSearch.h	Fri Jan 29 19:37:11 2016 +0900
+++ b/regexParser/threadedSearch.h	Fri Jan 29 20:38:18 2016 +0900
@@ -1,1 +1,3 @@
 extern void threadedSearch(TransitionGeneratorPtr tg, Buffer buff);
+extern TStatePtr generateTState(StatePtr s, TransitionGeneratorPtr tg);
+void tSearch(TSValue tsv);