| [01db301] | 1 | 
 | 
|---|
 | 2 | CFABUILD = ~/cfa2/build-perf
 | 
|---|
 | 3 | LIBCFA = $(CFABUILD)/libcfa/*/src/.libs/libcfa.so
 | 
|---|
 | 4 | 
 | 
|---|
 | 5 | CFA = $(CFABUILD)/driver/cfa
 | 
|---|
 | 6 | PERFFLAGS_CFA = -nodebug -O2
 | 
|---|
| [08ed947] | 7 | PERFFLAGS_CXX = -DNDEBUG -O2 -Wl,--no-as-needed -ldl
 | 
|---|
| [01db301] | 8 | 
 | 
|---|
 | 9 | 
 | 
|---|
| [fefd77a] | 10 | # function: convert to upper case
 | 
|---|
| [97d58dc] | 11 | define uc
 | 
|---|
 | 12 | $(shell echo $(1) | tr  '[:lower:]' '[:upper:]')
 | 
|---|
 | 13 | endef
 | 
|---|
| [01db301] | 14 | 
 | 
|---|
| [fefd77a] | 15 | # function: project numbered element of filename named by hyphen-delimited tuple
 | 
|---|
 | 16 | # (call hyphProj,q-w-e-r.txt,1) is Q
 | 
|---|
 | 17 | define ucHyphProj
 | 
|---|
 | 18 | $(call uc,$(word $(2),$(subst -, ,$(basename $(1)))))
 | 
|---|
 | 19 | endef
 | 
|---|
 | 20 | 
 | 
|---|
 | 21 | # function: cross two lists, adding hyphen delimiters
 | 
|---|
 | 22 | # (call hyphCross,a b c,1 2) is a-1 a-2 b-1 b-2 c-1 c-2
 | 
|---|
 | 23 | define hyphCross
 | 
|---|
 | 24 | $(foreach x,$(1),$(foreach xs,$(2),$(x)-$(xs)))
 | 
|---|
 | 25 | endef
 | 
|---|
 | 26 | 
 | 
|---|
 | 27 | define hyphCross3
 | 
|---|
 | 28 | $(call hyphCross,$(1),$(call hyphCross,$(2),$(3)))
 | 
|---|
 | 29 | endef
 | 
|---|
 | 30 | 
 | 
|---|
 | 31 | define hyphCross4
 | 
|---|
 | 32 | $(call hyphCross,$(1),$(call hyphCross3,$(2),$(3),$(4)))
 | 
|---|
 | 33 | endef
 | 
|---|
 | 34 | 
 | 
|---|
 | 35 | define hyphCross5
 | 
|---|
 | 36 | $(call hyphCross,$(1),$(call hyphCross4,$(2),$(3),$(4),$(5)))
 | 
|---|
 | 37 | endef
 | 
|---|
 | 38 | 
 | 
|---|
| [08ed947] | 39 | OPERATIONS=pta peq pbv pall pno
 | 
|---|
| [fefd77a] | 40 | ALLOCS=reuse fresh
 | 
|---|
 | 41 | CFA_APILEVELS=hl ll
 | 
|---|
 | 42 | CFA_SHARINGS=share noshare
 | 
|---|
 | 43 | PLATFORMS=cfa stl buhr94
 | 
|---|
 | 44 | 
 | 
|---|
 | 45 | ifneq ($(filter cfa,$(PLATFORMS)),)
 | 
|---|
| [08ed947] | 46 |     CFA_APIS=$(call hyphCross,$(CFA_APILEVELS),$(CFA_SHARINGS))
 | 
|---|
| [fefd77a] | 47 | endif
 | 
|---|
 | 48 | 
 | 
|---|
 | 49 | ifneq ($(filter stl,$(PLATFORMS)),)
 | 
|---|
| [08ed947] | 50 |     STL_APIS=na-na
 | 
|---|
| [fefd77a] | 51 | endif
 | 
|---|
 | 52 | 
 | 
|---|
 | 53 | ifneq ($(filter buhr94,$(PLATFORMS)),)
 | 
|---|
| [08ed947] | 54 |     BUHR94_APIS=na-na
 | 
|---|
| [fefd77a] | 55 | endif
 | 
|---|
 | 56 | 
 | 
|---|
| [08ed947] | 57 | APIS = $(CFA_APIS) $(STL_APIS) $(BUHR94_APIS)
 | 
|---|
| [fefd77a] | 58 | 
 | 
|---|
| [08ed947] | 59 | OPERATIONS_USING_ALLOCS=pta peq
 | 
|---|
 | 60 | define enrichOperationsAllocs
 | 
|---|
 | 61 | $(call hyphCross3,$(filter peq pta,$(OPERATIONS)),$(1),$(ALLOCS)) $(call hyphCross3,$(filter-out peq pta,$(OPERATIONS)),$(1),na)
 | 
|---|
 | 62 | endef
 | 
|---|
| [fefd77a] | 63 | 
 | 
|---|
| [08ed947] | 64 | CFA_PERFPROGS=$(call hyphCross,perfexp-cfa,$(call enrichOperationsAllocs,$(CFA_APIS)))
 | 
|---|
 | 65 | STL_PERFPROGS=$(call hyphCross,perfexp-stl,$(call enrichOperationsAllocs,$(STL_APIS)))
 | 
|---|
 | 66 | BUHR94_PERFPROGS=$(call hyphCross,perfexp-buhr94,$(call enrichOperationsAllocs,$(BUHR94_APIS)))
 | 
|---|
| [fefd77a] | 67 | 
 | 
|---|
| [08ed947] | 68 | PERFPROGS = $(CFA_PERFPROGS) $(STL_PERFPROGS) $(BUHR94_PERFPROGS)
 | 
|---|
| [01db301] | 69 | 
 | 
|---|
| [08ed947] | 70 | all : $(PERFPROGS)
 | 
|---|
| [01db301] | 71 | 
 | 
|---|
| [08ed947] | 72 | PP_SPLIT := $(shell echo "${PERFPROGS}" | sed -e 's/ /\\n/g')
 | 
|---|
 | 73 | echoPerfProgs:
 | 
|---|
 | 74 |         echo -e '$(PP_SPLIT)'
 | 
|---|
 | 75 | 
 | 
|---|
 | 76 | perfexp-%.o: API=$(call ucHyphProj,$@,2)
 | 
|---|
 | 77 | perfexp-%.o: OPERATION=$(call ucHyphProj,$@,3)
 | 
|---|
 | 78 | perfexp-%.o: CFA_APILEVEL=$(call ucHyphProj,$@,4)
 | 
|---|
 | 79 | perfexp-%.o: CFA_SHARING=$(call ucHyphProj,$@,5)
 | 
|---|
 | 80 | perfexp-%.o: ALLOC=$(call ucHyphProj,$@,6)
 | 
|---|
 | 81 | perfexp-%.o: SCENARIO_SWITCH=-DIMPL_$(API)_$(CFA_APILEVEL)_$(CFA_SHARING) -DOP_$(OPERATION) -DALLOC_$(ALLOC)
 | 
|---|
 | 82 | 
 | 
|---|
 | 83 | perfexp-cfa-%.o: CMD=$(CFA) -c $(PERFFLAGS_CFA) $< -o $@ $(SCENARIO_SWITCH)
 | 
|---|
 | 84 | perfexp-stl-%.o: CMD=$(CXX) -c -xc++ $(PERFFLAGS_CXX) $< -o $@ $(SCENARIO_SWITCH)
 | 
|---|
 | 85 | perfexp-buhr94-%.o: CMD=$(CXX) -xc++ -c $(PERFFLAGS_CXX) $< -o $@ $(SCENARIO_SWITCH)
 | 
|---|
 | 86 | 
 | 
|---|
 | 87 | perfexp-cfa-peq-%.o: prog.cfa $(LIBCFA)
 | 
|---|
 | 88 |         $(CMD)
 | 
|---|
 | 89 | perfexp-cfa-pta-%.o: prog.cfa $(LIBCFA)
 | 
|---|
 | 90 |         $(CMD)
 | 
|---|
 | 91 | perfexp-cfa-pbv-%.o: prog-passbyval.cfa $(LIBCFA)
 | 
|---|
 | 92 |         $(CMD)
 | 
|---|
 | 93 | perfexp-cfa-pb%.o: prog-passbyX.cfa $(LIBCFA)
 | 
|---|
 | 94 |         $(CMD)
 | 
|---|
 | 95 | perfexp-cfa-pfi-%.o: prog-find.cfa $(LIBCFA)
 | 
|---|
 | 96 |         $(CMD)
 | 
|---|
 | 97 | perfexp-cfa-pall-%.o: prog-allocn.cfa $(LIBCFA)
 | 
|---|
 | 98 |         $(CMD)
 | 
|---|
 | 99 | perfexp-cfa-pno-%.o: prog-normalize.cfa $(LIBCFA)
 | 
|---|
 | 100 |         $(CMD)
 | 
|---|
 | 101 | perfexp-stl-peq-%.o: prog.cfa
 | 
|---|
 | 102 |         $(CMD)
 | 
|---|
 | 103 | perfexp-stl-pta-%.o: prog.cfa
 | 
|---|
 | 104 |         $(CMD)
 | 
|---|
 | 105 | perfexp-stl-pbv-%.o: prog-passbyval.cfa
 | 
|---|
 | 106 |         $(CMD)
 | 
|---|
 | 107 | perfexp-stl-pfi-%.o: prog-find.cfa
 | 
|---|
 | 108 |         $(CMD)
 | 
|---|
 | 109 | perfexp-stl-pall-%.o: prog-allocn.cfa
 | 
|---|
 | 110 |         $(CMD)
 | 
|---|
 | 111 | perfexp-stl-pno-%.o: prog-normalize.cfa
 | 
|---|
 | 112 |         $(CMD)
 | 
|---|
 | 113 | perfexp-buhr94-peq-%.o: prog.cfa buhr94-string.o buhr94-VbyteSM.o
 | 
|---|
 | 114 |         $(CMD)
 | 
|---|
 | 115 | perfexp-buhr94-pta-%.o: prog.cfa buhr94-string.o buhr94-VbyteSM.o
 | 
|---|
 | 116 |         $(CMD)
 | 
|---|
 | 117 | perfexp-buhr94-pta-%.o: prog-passbyval.cfa buhr94-string.o buhr94-VbyteSM.o
 | 
|---|
 | 118 |         $(CMD)
 | 
|---|
 | 119 | perfexp-buhr94-pall-%.o: prog-allocn.cfa buhr94-string.o buhr94-VbyteSM.o
 | 
|---|
 | 120 |         $(CMD)
 | 
|---|
 | 121 | perfexp-buhr94-pno-%.o: prog-normalize.cfa buhr94-string.o buhr94-VbyteSM.o
 | 
|---|
 | 122 |         $(CMD)
 | 
|---|
 | 123 | 
 | 
|---|
 | 124 | # one of the pbx cases also needs to link with not_string_res.o (handling manually)
 | 
|---|
 | 125 | perfexp-cfa-%: perfexp-cfa-%.o $(LIBCFA)
 | 
|---|
 | 126 |         $(CFA) $(PERFFLAGS_CFA) $< -o $@  
 | 
|---|
 | 127 | perfexp-stl-%: perfexp-stl-%.o $(LIBCFA)
 | 
|---|
 | 128 |         $(CFA) $(PERFFLAGS_CFA) $< /lib/x86_64-linux-gnu/libstdc++.so.6 -o $@
 | 
|---|
 | 129 | perfexp-buhr94-% : perfexp-buhr94-%.o buhr94-string.o buhr94-VbyteSM.o
 | 
|---|
 | 130 |         $(CXX) $(PERFFLAGS_CXX) $^ -o $@
 | 
|---|
| [01db301] | 131 | 
 | 
|---|
 | 132 | buhr94-string.o:
 | 
|---|
 | 133 |         $(CXX) -xc++ -c $(PERFFLAGS_CXX) ~/usys1/sm/string/StringSharing/src/string.cc -o $@
 | 
|---|
 | 134 | 
 | 
|---|
 | 135 | buhr94-VbyteSM.o:
 | 
|---|
 | 136 |         $(CXX) -xc++ -c $(PERFFLAGS_CXX) ~/usys1/sm/string/StringSharing/src/VbyteSM.cc -o $@
 | 
|---|
 | 137 | 
 | 
|---|
 | 138 | clean:
 | 
|---|
 | 139 |         rm -f *.o perfexp*
 | 
|---|
 | 140 | 
 | 
|---|
 | 141 | MEASURE = $(PERFPROGS)
 | 
|---|
| [4d0eb1c] | 142 | CORPORI = corpus-100-*-1.txt
 | 
|---|
| [01db301] | 143 | 
 | 
|---|
| [4d0eb1c] | 144 | measurement: $(MEASURE)
 | 
|---|
| [01db301] | 145 |         tofile=measurement-`date '+%F--%H-%M-%S'`.csv ; \
 | 
|---|
 | 146 |         echo $$tofile ; \
 | 
|---|
 | 147 |         for prog in $(MEASURE) ; do \
 | 
|---|
 | 148 |             for corpus in $(CORPORI) ; do \
 | 
|---|
 | 149 |                         corpusbody=`cat $$corpus` ; \
 | 
|---|
| [4d0eb1c] | 150 |                         printed=`./$$prog 100 10 $$corpusbody` ; \
 | 
|---|
| [01db301] | 151 |                         echo $$prog,$$corpus,$$printed  >>  $$tofile ; \
 | 
|---|
| [fefd77a] | 152 |                         echo $$prog,$$corpus,$$printed  ; \
 | 
|---|
| [01db301] | 153 |                 done ; \
 | 
|---|
| [fefd77a] | 154 |         done
 | 
|---|
| [08ed947] | 155 | #                       printed=`./$$prog 10000 - 10 $$corpusbody` ; \
 | 
|---|
 | 156 | 
 | 
|---|
 | 157 | CFA_EXPANSIONS=0.02 0.05 0.1 0.2 0.5 0.9
 | 
|---|
 | 158 | 
 | 
|---|
 | 159 | measurement2: $(MEASURE)
 | 
|---|
 | 160 |         tofile=measurement-`date '+%F--%H-%M-%S'`.csv ; \
 | 
|---|
 | 161 |         for prog in $(MEASURE) ; do \
 | 
|---|
 | 162 |             for corpus in $(CORPORI) ; do \
 | 
|---|
 | 163 |                         for expansion in $(CFA_EXPANSIONS) ; do \
 | 
|---|
 | 164 |                                 corpusbody= ; \
 | 
|---|
 | 165 |                                 echo ./$$prog 1000 1.006 $$expansion 10 \`cat $$corpus\` ; \
 | 
|---|
 | 166 |                         done ; \
 | 
|---|
 | 167 |                 done ; \
 | 
|---|
 | 168 |         done ; \
 | 
|---|
 | 169 |         echo $$tofile ; \
 | 
|---|
 | 170 |         for prog in $(MEASURE) ; do \
 | 
|---|
 | 171 |             for corpus in $(CORPORI) ; do \
 | 
|---|
 | 172 |                         for expansion in $(CFA_EXPANSIONS) ; do \
 | 
|---|
 | 173 |                                 corpusbody=`cat $$corpus` ; \
 | 
|---|
 | 174 |                                 printed=`./$$prog 1000 1.006 $$expansion 10 $$corpusbody` ; \
 | 
|---|
 | 175 |                                 echo $$prog,$$corpus,$$expansion,$$printed  >>  $$tofile ; \
 | 
|---|
 | 176 |                                 echo $$prog,$$corpus,$$expansion,$$printed  ; \
 | 
|---|
 | 177 |                         done ; \
 | 
|---|
 | 178 |                 done ; \
 | 
|---|
 | 179 |         done
 | 
|---|
 | 180 | 
 | 
|---|
 | 181 | measurement3: $(MEASURE)
 | 
|---|
 | 182 |         for prog in $(MEASURE) ; do \
 | 
|---|
 | 183 |             for corpus in $(CORPORI) ; do \
 | 
|---|
 | 184 |                         for expansion in $(CFA_EXPANSIONS) ; do \
 | 
|---|
 | 185 |                                 corpusbody=`cat $$corpus` ; \
 | 
|---|
 | 186 |                                 LD_PRELOAD=~/plg2/mubeen-stat-shim/malloc/mallocWrappers.so ./$$prog 1000 1.006 $$expansion 1 $$corpusbody ; \
 | 
|---|
 | 187 |                                 mv preload_dump.txt preload_dump--qrun1--$$corpus--expansion-$$expansion.txt ; \
 | 
|---|
 | 188 |                         done ; \
 | 
|---|
 | 189 |                 done ; \
 | 
|---|
 | 190 |         done
 | 
|---|