-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
111 lines (85 loc) · 2.24 KB
/
Makefile
File metadata and controls
111 lines (85 loc) · 2.24 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
CC = gcc
CPPC = g++
NVCC = nvcc
GPU = 0
CUDNN = 0
OPENCV = 0
OPENMP = 0
DEBUG = 0
ARCH = -gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=[sm_50,compute_50] \
-gencode arch=compute_52,code=[sm_52,compute_52]
BUILD_DIR = build/
OBJ_DIR = $(BUILD_DIR)obj/
BIN_DIR = $(BUILD_DIR)bin/
INC_DIR = include/
SRC_DIR = src/
SCNN_DIR = $(SRC_DIR)scnn/
EXECUTABLE = $(BIN_DIR)serialcore
INCLUDES = -I$(INC_DIR)
CFLAGS = -O2 -Wall -Wno-unknown-pragmas -Wfatal-errors -fPIC -Ofast
CPPFLAGS = $(CFLAGS)
LDFLAGS = -lm -pthread
ifeq ($(DEBUG),1)
CFLAGS = -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC -O0 -g -DDEBUG
CPPFLAGS = $(CFLAGS)
endif
ifeq ($(OPENMP),1)
CFLAGS += -fopenmp
CPPFLAGS += -fopenmp
LDFLAGS += -fopenmp
endif
CPP_SOURCES =
ifeq ($(OPENCV),1)
CFLAGS += -DOPENCV
CPPFLAGS += -DOPENCV
INCLUDES += `pkg-config --cflags opencv`
LDFLAGS += `pkg-config --libs opencv` -lstdc++
CPP_SOURCES += $(wildcard $(CNN_DIR)*.cc)
endif
CU_SOURCES =
ifeq ($(GPU),1)
CFLAGS += -DGPU
CPPFLAGS += -DGPU
INCLUDES += -I/usr/local/cuda/include/
LDFLAGS += -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand -lstdc++
CU_SOURCES += $(wildcard $(CNN_DIR)*.cu)
endif
ifeq ($(CUDNN),1)
CFLAGS += -DCUDNN
CPPFLAGS += -DCUDNN
LDFLAGS += -lcudnn
endif
C_SOURCES = $(wildcard $(SRC_DIR)*.c $(SCNN_DIR)*.c)
OBJECTS = $(patsubst %.c,$(OBJ_DIR)%.o,$(C_SOURCES)) \
$(patsubst %.cc,$(OBJ_DIR)%.o,$(CPP_SOURCES)) \
$(patsubst %.cu,$(OBJ_DIR)%.o,$(CU_SOURCES))
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
@mkdir -p $(@D)
$(CC) $^ -o $@ $(LDFLAGS)
$(OBJ_DIR)%.o: %.c
@mkdir -p $(@D)
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
$(OBJ_DIR)%.o: %.cc
@mkdir -p $(@D)
$(CPPC) $(CPPFLAGS) $(INCLUDES) -c $< -o $@
$(OBJ_DIR)%.o: %.cu
@mkdir -p $(@D)
$(NVCC) $(ARCH) $(INCLUDES) --compiler-options "$(CFLAGS)" -c $< -o $@
run: $(EXECUTABLE)
./$(EXECUTABLE)
clean:
rm -rf $(BUILD_DIR)
cpu:
$(MAKE) GPU=0 CUDNN=0
gpu:
$(MAKE) GPU=1 CUDNN=0
gpu-cudnn:
$(MAKE) GPU=1 CUDNN=1
full:
$(MAKE) GPU=1 CUDNN=1 OPENCV=1 OPENMP=1
dev:
$(MAKE) DEBUG=1
.PHONY: all run clean print-sources cpu gpu gpu-cudnn full dev