-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
142 lines (108 loc) · 3.02 KB
/
Copy pathMakefile
File metadata and controls
142 lines (108 loc) · 3.02 KB
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#===============================================================================
# User Options
#===============================================================================
ifndef BACKEND
BACKEND = generic
endif
ifndef TYPE
TYPE = double
endif
VENDOR := $(shell lscpu | awk '/Vendor ID/{print $3}')
# Compiler can be set below, or via environment variable
ifeq ($(SYCL_IMPL), oneapi)
CXX = icpx
else ifeq ($(SYCL_IMPL), intel-llvm)
CXX = clang++
else
CXX = acpp
endif
OPTIMIZE = yes
DEBUG = yes
VERIFY = no
ifndef LIKWID
LIKWID = no
endif
LIKWID_LIB=/opt/likwid/lib/
LIKWID_INCLUDE=/opt/likwid/include/
#===============================================================================
# Program name & source code list
#===============================================================================
ifeq ($(SYCL_IMPL), oneapi)
program = bin/main-dpcpp
else ifeq ($(SYCL_IMPL), intel-llvm)
program = bin/main-intel-llvm
else
ifeq ($(BACKEND), omp)
program = bin/main-acpp-omp
else
program = bin/main-acpp-generic
endif
endif
source = src/main.cpp\
src/parallel-bench-usm.cpp\
src/parallel-bench-acc.cpp\
src/kernels.cpp\
src/utils.cpp\
src/vectorization-bench.cpp\
src/map.cpp\
src/timer.cpp\
src/micro-bench-omp.cpp
obj = $(source:.cpp=.o)
#===============================================================================
# Sets Flags
#===============================================================================
# Standard Flags
CXXFLAGS := $(EXTRA_CFLAGS) $(KERNEL_DIM) -std=c++17 -DALIGNED
ifdef WARNING
CXXFLAGS += -Wall
endif
# LIKWID instrumentation flags
ifeq ($(LIKWID),yes)
CXXFLAGS += -DLIKWID_PERFMON -DTYPE=$(TYPE) -I$(LIKWID_INCLUDE) -L$(LIKWID_LIB) -llikwid
endif
ifdef VECTOR_WIDTH
CXXFLAGS += -mprefer-vector-width=$(VECTOR_WIDTH)
endif
ifeq ($(VERIFY),yes)
CXXFLAGS += -DVERIFY
endif
# Debug Flags
ifeq ($(DEBUG),yes)
CXXFLAGS += -g
LDFLAGS += -g
endif
# Optimization Flags
ifeq ($(OPTIMIZE),yes)
CXXFLAGS += -Ofast
endif
ifeq ($(SYCL_IMPL), oneapi)
CXXFLAGS += -fsycl -qopenmp -DDPCPP # -fsycl-targets=spir64_x86_64
else ifeq ($(SYCL_IMPL), intel-llvm)
CXXFLAGS += -fsycl -fopenmp -DDPCPP
else
CXXFLAGS += -DHIPSYCL --acpp-platform=cpu -fopenmp -DACPP
ifeq ($(BACKEND), omp)
CXXFLAGS += --acpp-targets=omp.accelerated
else
CXXFLAGS += --acpp-targets=generic
endif
endif
ifeq ($(ARCH), a64fx)
CXXFLAGS += -mcpu=a64fx+sve
else ifeq ($(ARCH), x86)
CXXFLAGS += -march=native
else ifeq ($(ARCH), graviton3)
CXXFLAGS += -mcpu=neoverse-v1
endif
# Linker Flags
LDFLAGS =
#===============================================================================
# Targets to Build
#===============================================================================
all: $(program)
$(program): $(obj)
$(CXX) $(CXXFLAGS) $(obj) -o $@ $(LDFLAGS)
%.o: %.cpp src/parallel-bench.hpp src/vectorization-bench.hpp src/timer.hpp
$(CXX) $(CXXFLAGS) -c $< -o $@
clean:
rm -rf $(obj)