/
Makefile
117 lines (82 loc) · 2.57 KB
/
Makefile
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# Basics
CC = icc
CPP = icc
LD = icc
CXX = icc
SHOC_COMMON = ./common
MICROOT = ./bin
BINDIR = ./bin
OBJDIR = ./obj
# Workload folders
VPATH=$(SHOC_COMMON) level0 md reduction scan triad spmv sort fft gemm s3d mc
# Common objects
COMMON_OBJS = main.o Option.o OptionParser.o Timer.o ResultDatabase.o ProgressBar.o
COMMON_OBJFILES = $(addprefix $(OBJDIR)/, $(COMMON_OBJS))
# Workload objects
BENCH_OBJS = BusSpeedReadback.o \
BusSpeedDownload.o \
DeviceMemory.o \
MaxFlops.o \
MD.o \
S3D.o \
Reduction.o \
Scan.o \
Triad.o \
Spmv.o \
GEMM.o \
FFT.o \
MC.o
BENCHMARKPROG = $(patsubst %.o,$(BINDIR)/%,$(BENCH_OBJS))
# Flags to include MIC MKL library
MIC_MKL_LIBS = -lmkl_core
# Flags to enable compiler reporting - Modify according detail level needs
REPORTING = -opt-report-phase:offload -vec-report1
# Compiler flags
CFLAGS = -O3 -openmp -parallel -intel-extensions -I$(SHOC_COMMON) \
-mP2OPT_hlo_pref_issue_second_level_prefetch=F \
-mP2OPT_hlo_pref_issue_first_level_prefetch=F \
-offload-option,mic,compiler,"-mP2OPT_hpo_vec_check_dp_trip=F -fimf-precision=low -fimf-domain-exclusion=15" $(REPORTING)
# Workload specific compiler flags
STENCIL_CPPFLAGS =
# Linker flags
LDFLAGS = -mkl
$(OBJDIR)/%.o: %.cpp
$(CC) -c $< $(CFLAGS) $(CXXFLAGS) -o $@
$(BINDIR)/%: $(OBJDIR)/%.o
$(CC) -o $@ $(CFLAGS) $(CXXFLAGS) $(LDFLAGS) $(COMMON_OBJFILES) $< $(LIBS)
all : $(BENCHMARKPROG)
for d in $(SUBDIRS); do (cd $$d; $(MAKE) ); done
$(BENCHMARKPROG) : $(COMMON_OBJFILES)
clean :
rm ./*.o
rm $(OBJDIR)/*
ls $(BINDIR)/* | grep -v runbench.sh | xargs rm
make -C ./stencil2d clean
# Individual Targets
# FFT
fft : $(BINDIR)/FFT
$(BINDIR)/FFT : $(COMMON_OBJFILES)
# GEMM
gemm : $(BINDIR)/GEMM
$(BINDIR)/GEMM : $(COMMON_OBJFILES)
# MD
md : $(BINDIR)/MD
$(BINDIR)/MD : $(COMMON_OBJFILES)
# Reduction
reduction : $(BINDIR)/Reduction
$(BINDIR)/Reduction : $(COMMON_OBJFILES)
# SCAN
scan: $(BINDIR)/Scan
$(BINDIR)/Scan : $(COMMON_OBJFILES)
# Sort
$(BINDIR)/Sort : $(COMMON_OBJFILES)
sort: $(BINDIR)/Sort
# S3D
$(BINDIR)/S3D : $(COMMON_OBJFILES)
s3d : $(BINDIR)/S3D
$(BINDIR)/MC : $(COMMON_OBJS) ./mc/MonteCarlo.h
mc : $(BINDIR)/MC
# Stencil 2D
stencil2d:
make -C ./stencil2d
.PHONY: stencil2d clean all