-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathMakefile
82 lines (66 loc) · 3.39 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
################################################################################
# Makefile for astro-accelerate
#
# Description: Custom Makefile that can be used instead of CMakeLists.txt
#
################################################################################
CUDA := $(CUDA_INSTALL_PATH)
INC := -I$(CUDA)include -I$(CUDA)samples/common/inc/
LIB := $(CUDA)/lib64
BUILD_DIR :=./obj/
ASTROLIB_DIR :=./
SRC_DIR := src/
CPP_FILES := $(wildcard src/*.cpp)
CU_FILES := ${wildcard src/*.cu}
OBJ_FILES := $(addprefix obj/,$(notdir $(CPP_FILES:.cpp=.o))) $(addprefix obj/,$(notdir $(CU_FILES:.cu=.o)))
EXAMPLES_FILES := examples_dedispersion examples_periodicity examples_dedispersion_and_analysis examples_filterbank_dedispersion
CXXFLAGS := -O3
LDFLAGS = `root-config --libs`
COMPILEJOBS = astro-accelerate
HEADERS = include/*.hpp include/*.cuh
INCLUDE = -Iinclude
# CUDA code generation flags
GENCODE_SM35 := -gencode arch=compute_35,code=sm_35 # Kepler
GENCODE_SM37 := -gencode arch=compute_37,code=sm_37 # Kepler
GENCODE_SM50 := -gencode arch=compute_50,code=sm_50 # Maxwell
GENCODE_SM52 := -gencode arch=compute_52,code=sm_52 # Maxwell
GENCODE_SM53 := -gencode arch=compute_53,code=sm_53 # Maxwell
GENCODE_SM60 := -gencode arch=compute_60,code=sm_60 # Pascal
GENCODE_SM61 := -gencode arch=compute_61,code=sm_61 # Pascal
GENCODE_SM70 := -gencode arch=compute_70,code=sm_70 # Volta
GENCODE_SM75 := -gencode arch=compute_75,code=sm_75 # Turing
GENCODE_SM80 := -gencode arch=compute_80,code=sm_80 # Ampere A100
GENCODE_SM86 := -gencode arch=compute_86,code=sm_86 # Ampere RTX 30xx
GENCODE_FLAGS := $(GENCODE_SM86)
ifeq ($(cache),off)
NVCCFLAGS := $(INC) ${INCLUDE} -g -lineinfo -Xcompiler -O3 -lm --use_fast_math\
--ptxas-options=-v -Xptxas -dlcm=cg $(GENCODE_FLAGS) -Xcompiler -fopenmp
else
NVCCFLAGS := $(INC) ${INCLUDE} -g -lineinfo -Xcompiler -O3 -lm --use_fast_math\
--ptxas-options=-v -lcuda -lcudart -lcurand -lcufft -lcudadevrt -Xptxas -dlcm=cg $(GENCODE_FLAGS) -Xcompiler -fopenmp
endif
LIBJOBS := libastroaccelerate.a
all: MAKE_OBJ_FOLDER ${LIBJOBS} ${COMPILEJOBS} ${EXAMPLES_FILES}
$(BUILD_DIR)%.o : ${SRC_DIR}%.cu
@echo Compiling $@ ...
nvcc $(NVCCFLAGS) -c -o $@ $<
$(BUILD_DIR)%.o : ${SRC_DIR}%.cpp
@echo Compiling $@ ...
nvcc $(NVCCFLAGS) -c -o $@ $<
MAKE_OBJ_FOLDER :
mkdir -p obj/
libastroaccelerate.a: ${OBJ_FILES}
@echo Making static library libastroaccelerate.a
ar rcs libastroaccelerate.a $(OBJ_FILES)
astro-accelerate: libastroaccelerate.a
nvcc -o astro-accelerate $(OBJ_FILES) -L$(ASTROLIB_DIR) -lastroaccelerate -L${LIB} $(NVCCFLAGS)
examples_dedispersion: libastroaccelerate.a
nvcc -o examples_dedispersion ./examples/src/dedispersion.cpp -L$(ASTROLIB_DIR) -lastroaccelerate -L${LIB} $(NVCCFLAGS)
examples_periodicity: libastroaccelerate.a
nvcc -o examples_periodicity ./examples/src/periodicity.cpp -L$(ASTROLIB_DIR) -lastroaccelerate -L${LIB} $(NVCCFLAGS)
examples_dedispersion_and_analysis: libastroaccelerate.a
nvcc -o examples_dedispersion_and_analysis ./examples/src/dedispersion_and_analysis.cpp -L$(ASTROLIB_DIR) -lastroaccelerate -L${LIB} $(NVCCFLAGS)
examples_filterbank_dedispersion: libastroaccelerate.a
nvcc -o examples_filterbank_dedispersion ./examples/src/filterbank_dedispersion.cpp -L$(ASTROLIB_DIR) -lastroaccelerate -L${LIB} $(NVCCFLAGS)
clean:
rm -f astro-accelerate *.a $(BUILD_DIR)*.o $(ASTROLIB_DIR)*.a $(EXAMPLES_FILES)