-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile_ubuntu
96 lines (78 loc) · 2.65 KB
/
Makefile_ubuntu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
N_RUNS=10
ifdef NSORT
DEFINES += -DNSORT
endif
ifdef N_RUNS
DEFINES += -DN_RUNS=$(N_RUNS)
endif
ifdef N_SAMPLES
DEFINES += -DN_SAMPLES=$(N_SAMPLES)
endif
ifdef SUBSET_SIZE
DEFINES += -DSUBSET_SIZE=$(SUBSET_SIZE)
endif
CXX=~/clang5/bin/clang++
CHOME=~/clang5
CXXFLAGS=-fopenmp -ffast-math -Wall -I$(CHOME)/include -L$(CHOME)/lib -std=c++17 -stdlib=libc++ -fno-omit-frame-pointer -ggdb -march=native $(DEFINES) -I$(HOME)/iaca/include
LIB=-I$(CHOME)/include -L$(CHOME)/lib -I$(HOME)/iaca/include
HEADERS=oracle.h interpolate.h benchmark.h bin.h lin.h util.h div.h
OBJ=
IACA=0
N_INTS=1000000
SEED=42
N_THREADS=1
#BENCHMARKS=bsEq bs bsLin_32 isRecurse isLin_1 isLin_2 oracle isSub
#BENCHMARKS=isRecurse isFp isFp_slow isLin_1 isLin_1_slow bs
#BENCHMARKS=isFp isFp_slow isIDiv
#BENCHMARKS=binary-naive binary-size binary-linear interpolation-naive interpolation-recurse interpolation-linear-fp interpolation-linear oracle
BENCHMARKS=binary-naive binary-size binary-linear interpolation-naive interpolation-recurse interpolation-linear-fp interpolation-linear
BENCHMARKS=binary-linear interpolation-linear
BENCHMARKS=i-guard i-seq b-sz-lin i-simd
BENCHMARKS=fib
BENCHMARKS=i i-precompute i-seq-fp i-seq-fp-intercept i-seq i-seq-intercept
BENCHMARKS=i-seq-fp i-seq-fp-intercept i-seq-fp-pick i-seq
BENCHMARKS=-b i-guard -b i-slope -b i-slope-lut
#BENCHMARKS=i-slope
RUN=./search i-seq.tsv
.PHONY: run search debug d_lin lin splines
run: release
$(RUN)
perf : CXXFLAGS += -DINFINITE_REPEAT
perf : release
perf record -F99 -g $(RUN)
iaca : IACA=1
iaca: release
~/iaca/bin/iaca -mark 0 -arch HSW search
release : CXXFLAGS += -O3 -DNDEBUG
release : search
#release : LDFLAGS += -flto -L$(HOME)/llvm/lib
debug : CXXFLAGS += -O0
debug : search
gdb --args $(RUN)
dump : dump.cc benchmark.h
$(CXX) $(CXXFLAGS) dump.cc -o $@ $(LDFLAGS)
# add release identifier for object files
%.o: %.cc
$(CXX) $(CXXFLAGS) -c $< -o $@
search: $(OBJ) $(HEADERS)
$(CXX) $(CXXFLAGS) search.cc $(OBJ) -o $@ $(LDFLAGS) -DIACA=$(IACA)
div: div.cc div.h
$(CXX) $(CXXFLAGS) $< -o $@
asm: search.cc
$(PROFILE) -g2 -S $< -o $@.s
$(PROFILE) $@.s -o $@
lin: lin.cc
#$(PROFILE) -o $@ $(LIB) -fprofile-instr-generate $< -lbenchmark -lpthread
#./lin
#llvm-profdata merge -output=default.profdata default.profraw
#$(PROFILE) -o $@ $(LIB) -fprofile-instr-use $< -lbenchmark -lpthread
$(PROFILE) -o $@ $(LIB) $< -lbenchmark -lpthread
./lin --benchmark_out_format=csv --benchmark_out=lin.csv
d_lin: lin.cc
$(DEBUG) -o $@ $(LIB) $< -lbenchmark -lpthread && gdb ./$@
splines: splines.cc
$(PROFILE) $< -o $@
#$(DEBUG) $< -o $@
#gdb --args ./splines -f input/uniform.1000.0 -n 2
clean:
rm -f ./search ./debug ./splines ./lin