-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
107 lines (71 loc) · 3.63 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
############################################################################################################
VERSION = V1_$(shell date "+%d_%m_%Y_%T")
VERSION = V1_$(shell date "+%d_%m_%Y_%H-%M-%S")
STANDARD = c99
############################################################################################################
INC_DIR =
INC_LIBS =
GCC ?= g++ -g
# -std=c++11
GPU_ARCH = sm_35
CUDA_PATH ?= /usr/local/cuda
CUDA_INC_PATH ?= $(CUDA_PATH)/include
CUDA_BIN_PATH ?= $(CUDA_PATH)/bin
CUDA_LIB_PATH ?= $(CUDA_PATH)/lib64
GENCODE_FLAGS = -arch=$(GPU_ARCH)
LDFLAGS := -L$(CUDA_LIB_PATH) -lcudart -lcuda -lcurand
CCFLAGS := -O3 -I$(CUDA_INC_PATH)/
NVCC ?= $(CUDA_BIN_PATH)/nvcc -g
COMP_CAP = $(GPU_ARCH:sm_%=%0)
NVCCFLAGS := -m64 -O3 -Xcompiler -fopenmp -I$(CUDA_INC_PATH)/
NVCCFLAGS += -D__COMPUTE_CAPABILITY__=$(COMP_CAP)
CCFLAGS += -D__COMPUTE_CAPABILITY__=$(COMP_CAP)
SRCDIR=src
OBJDIR=obj
MAINOBJ:=u1.o
PROJECTNAME=u1
INCLUDES := -I. -I./include/
############################################################################################################
#For tune file
CUDA_VERSION = $(shell awk '/\#define CUDA_VERSION/{print $$3}' $(CUDA_PATH)/include/cuda.h)
HASH = \"cpu_arch=$(strip $(OS_ARCH)),gpu_arch=$(strip $(GPU_ARCH)),cuda_version=$(strip $(CUDA_VERSION))\"
all : directories $(PROJECTNAME)
deps = $(MAINOBJ:.o=.d)
$(MAINOBJ): u1.cpp
@echo "######################### Compiling: "$<" #########################"
$(VERBOSE)$(GCC) $(CCFLAGS) $(INC_DIR) $(INCLUDES) -fopenmp -MMD -MP -c $< -o $@
OBJS := timer.o alloc.o parameters.o random.o update.o multilevel.o plaquette.o polyakov.o tune.o cuda_error_check.o actime.o plaquette_comps.o convertOrder.o
INCS:= include
U1OBJS := $(patsubst %.o,$(OBJDIR)/%.o,$(OBJS))
deps += $(U1OBJS:.o=.d)
$(OBJDIR)/%.o: $(SRCDIR)/%.cu
@echo "######################### Compiling: "$<" #########################"
$(VERBOSE)mkdir -p $(dir $(abspath $@ ) )
$(VERBOSE)$(NVCC) $(NVCCFLAGS) $(GENCODE_FLAGS) $(EXTRA_NVCCFLAGS) $(INCLUDES) -M $< -o ${@:.o=.d} -odir $(@D)
$(VERBOSE)$(NVCC) $(NVCCFLAGS) $(GENCODE_FLAGS) $(EXTRA_NVCCFLAGS) $(INCLUDES) -o $@ -dc $<
# $(VERBOSE)$(NVCC) $(NVCCFLAGS) $(GENCODE_FLAGS) $(EXTRA_NVCCFLAGS) $(INCLUDES) -dc $< -o $@
############################################################################################################CUDAOBJ=$
$(OBJDIR)/dlink.o: $(U1OBJS)
@echo ""######################### Creating: "dlink.o" #########################"
$(VERBOSE)$(NVCC) $(NVCCFLAGS) $(GENCODE_FLAGS) -dlink -o $@ $^ -lcudavert
$(OBJDIR)/tune.o: $(SRCDIR)/tune.cpp
@echo "######################### Compiling: "$<" #########################"
$(VERBOSE)$(GCC) $(CCFLAGS) $(INC_DIR) $(INCLUDES) -DU1_HASH=$(HASH) -MMD -MP -c $< -o $@
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
@echo "######################### Compiling: "$<" #########################"
$(VERBOSE)$(GCC) $(CCFLAGS) $(INC_DIR) $(INCLUDES) -MMD -MP -c $< -o $@
$(PROJECTNAME): $(MAINOBJ) $(U1OBJS) $(OBJDIR)/dlink.o
$(VERBOSE)$(GCC) $(CCFLAGS) -o $@ $+ $(INC_LIBS) -fopenmp -L$(LIBDIR)/ $(LDFLAGS)
############################################################################################################
############################################################################################################
directories:
$(VERBOSE)mkdir -p $(OBJDIR)
clean:
$(VERBOSE)rm -r -f $(OBJDIR)
$(VERBOSE)rm -f $(PROJECTNAME) $(MAINOBJ) $(OBJS) *.d
pack:
@echo Generating Package u1_$(VERSION).tar.gz
@tar cvfz u1_$(VERSION).tar.gz *.cpp $(INCS)/* $(SRCDIR)/* Makefile
@echo Generated Package sun_$(VERSION).tar.gz
.PHONY : clean cleanall pack directories lib $(PROJECTNAME)
-include $(deps)