# HG changeset patch # User kono # Date 1454067498 -32400 # Node ID 5aa9d01926f1d6ca5ad7505627ea1a4b76fbfa6e # Parent 6640b0d5bf13fc6d10eafa3169637bd13479e3c7 Cerium version no compile errors diff -r 6640b0d5bf13 -r 5aa9d01926f1 regexParser/Makefile --- 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' diff -r 6640b0d5bf13 -r 5aa9d01926f1 regexParser/cerium/CeriumMain.cc --- 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); diff -r 6640b0d5bf13 -r 5aa9d01926f1 regexParser/cerium/Makefile.def --- 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 diff -r 6640b0d5bf13 -r 5aa9d01926f1 regexParser/cerium/Makefile.macosx --- 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 diff -r 6640b0d5bf13 -r 5aa9d01926f1 regexParser/cerium/ppe/Exec.cc --- 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 #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; } diff -r 6640b0d5bf13 -r 5aa9d01926f1 regexParser/cerium/ppe/Print.cc --- 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; } diff -r 6640b0d5bf13 -r 5aa9d01926f1 regexParser/regexParser.h --- 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; diff -r 6640b0d5bf13 -r 5aa9d01926f1 regexParser/subsetConstruction.h --- 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); diff -r 6640b0d5bf13 -r 5aa9d01926f1 regexParser/threadedSearch.cc --- 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(""); diff -r 6640b0d5bf13 -r 5aa9d01926f1 regexParser/threadedSearch.h --- 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);