-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
162 lines (100 loc) · 3.63 KB
/
Makefile
File metadata and controls
162 lines (100 loc) · 3.63 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
BIN_DIR=./bin
LIB_DIR=./lib
# BINS=$(BIN_DIR)/output_test
BINS=$(BIN_DIR)/output_test $(BIN_DIR)/output_test_with_config
# BINS=$(BIN_DIR)/output_test $(BIN_DIR)/output_stencil
# BINS=$(BIN_DIR)/output_stencil $(BIN_DIR)/output_dot_product $(BIN_DIR)/output_matrix_mul
# GECKO_FILES=geckoGraph.cpp geckoRuntime.cpp geckoUtilsAcc.cpp
# GECKO_FILES=geckoRuntime.cpp geckoHierarchicalTree.cpp geckoDataTypeGenerator.cpp
GECKO_FILES=$(wildcard gecko*.cpp)
GECKO_OBJ_FILES=$(GECKO_FILES:.cpp=.o)
GECKO_LIB_FILE=$(LIB_DIR)/libgecko.a
CUDA_HOME?=/usr/local/cuda
ENABLE_CUDA = ON
ENABLE_DEBUG = OFF
ENABLE_TCMALLOC = OFF
TC_MALLOC_LOCATION = /usr/lib/x86_64-linux-gnu
ENABLE_JEMALLOC = OFF
JE_MALLOC_LOCATION = /usr/lib/x86_64-linux-gnu
LDFLAGS=-lm
# NVCC=nvcc
# CUDAFLAGS=-w -std c++11
# CXX=g++
# CXXFLAGS=-w -fopenmp -fopenacc -lcuda
# LDFLAGS=-lm
# OUTPUT_EXE=output_test
# CXXFLAGS += -acc -ta=tesla,multicore
CXX=pgc++
CXXFLAGS=-m64 -std=c++11 -w
#CXXFLAGS= -std=c++11 -w
CXXFLAGS+=-Mllvm
CXXFLAGS+=-mp
LDFLAGS=-lm
OUTPUT_EXE=output_test
CXXFLAGS += -acc -ta=tesla,multicore -Minfo=accel
ifeq ($(ENABLE_TCMALLOC), ON)
LDFLAGS += $(TC_MALLOC_LOCATION)/libtcmalloc.so.4
endif
ifeq ($(ENABLE_JEMALLOC), ON)
LDFLAGS += -L$(JE_MALLOC_LOCATION) -ljemalloc
endif
CXXFLAGS_DEBUG=-O0 -g
CXXFLAGS_RELEASE=-O3
ifeq ($(ENABLE_DEBUG), ON)
CXXFLAGS += -DINFO
endif
OUTPUT_EXE=output_test
STENCIL_EXE = output_stencil
DOT_PRODUCT_EXE = output_dot_product
MATRIX_MUL_EXE = output_matrix_mul
OUTPUT_EXE_WITH_CONF = output_test_with_config
ifeq ($(ENABLE_CUDA), ON)
CXXFLAGS += -DCUDA_ENABLED -I$(CUDA_HOME)/include/
CUDAFLAGS+= -DCUDA_ENABLED -I$(CUDA_HOME)/include/
LDFLAGS += -L$(CUDA_HOME)/lib64 -lcudart
endif
ifeq ($(ENABLE_DEBUG), ON)
CXXFLAGS+=$(CXXFLAGS_DEBUG) -DDEBUG
CUDAFLAGS+=-DDEBUG -O0 -g
else
CXXFLAGS+=$(CXXFLAGS_RELEASE)
endif
.PHONY: doTransformation clean
all: doTransformation lib $(BINS)
# all: lib $(BINS)
$(BIN_DIR):
mkdir -p $(BIN_DIR)
doTransformation:
python geckoTranslate.py
$(BIN_DIR)/test: test.o $(BIN_DIR)
${CXX} ${CXXFLAGS} test.cpp -o $(BIN_DIR)/test
lib: $(GECKO_OBJ_FILES)
mkdir -p $(LIB_DIR)
ar rc $(GECKO_LIB_FILE) $(GECKO_OBJ_FILES)
ranlib $(GECKO_LIB_FILE)
# %.o: %.cpp
# ${NVCC} ${CXXFLAGS} -c $< -o $@
# geckoHierarchicalTree.o: geckoHierarchicalTree.cpp
# $(CXX) $(CXXFLAGS) -c $< -o $@
# # $(NVCC) $(CUDAFLAGS) -c $< -o $@
# geckoRuntime.o: geckoRuntime.cpp
# $(CXX) $(CXXFLAGS) -c $< -o $@
# # $(NVCC) $(CUDAFLAGS) -c $< -o $@
# # geckoUtilsAcc.o: geckoUtilsAcc.cpp
# # $(CXX) $(CXXFLAGS) -c $< -o $@
# geckoDataTypeGenerator.o: geckoDataTypeGenerator.cpp
# $(CXX) $(CXXFLAGS) -c $< -o $@
$(BIN_DIR)/${OUTPUT_EXE}: ${GECKO_LIB_FILE} $(BIN_DIR) output_test.cpp
${CXX} ${CXXFLAGS} -o $(BIN_DIR)/${OUTPUT_EXE} output_test.cpp ${LDFLAGS} ${GECKO_LIB_FILE}
$(BIN_DIR)/${OUTPUT_EXE_WITH_CONF}: ${GECKO_OBJ_FILES} $(BIN_DIR) output_test_with_config.cpp
${CXX} ${CXXFLAGS} -o $(BIN_DIR)/${OUTPUT_EXE_WITH_CONF} ${GECKO_OBJ_FILES} output_test_with_config.cpp ${LDFLAGS}
$(BIN_DIR)/${STENCIL_EXE}: ${GECKO_OBJ_FILES} $(BIN_DIR) output_stencil.cpp
${CXX} ${CXXFLAGS} -o $(BIN_DIR)/${STENCIL_EXE} ${GECKO_OBJ_FILES} output_stencil.cpp ${LDFLAGS}
$(BIN_DIR)/${DOT_PRODUCT_EXE}: ${GECKO_OBJ_FILES} $(BIN_DIR) output_dot_product.cpp
${CXX} ${CXXFLAGS} -o $(BIN_DIR)/${DOT_PRODUCT_EXE} ${GECKO_OBJ_FILES} output_dot_product.cpp ${LDFLAGS}
$(BIN_DIR)/${MATRIX_MUL_EXE}: ${GECKO_OBJ_FILES} $(BIN_DIR) output_matrix_mul.cpp
${CXX} ${CXXFLAGS} -o $(BIN_DIR)/${MATRIX_MUL_EXE} ${GECKO_OBJ_FILES} output_matrix_mul.cpp ${LDFLAGS}
dot: $(wildcard *.dot)
dot -Tpdf $< -o $<.pdf
clean:
rm -rf *.o $(BIN_DIR) $(LIB_DIR) *.dot