CC := nvcc -m64 -std=c++17 -ccbin g++-12 -Xcompiler -m64,-std=c++17 OBJ_DIR := bin $(shell mkdir -p $(OBJ_DIR)) MODELS_DIR := models OUT_DIR := out SRC_DIR := . #CFLAGS := -O0 -Werror=all-warnings -g -G #CFLAGS := $(CFLAGS) -pg #CFLAGS := $(CFLAGS) -Xptxas=-w #CFLAGS := $(CFLAGS) -Xcompiler -Wall,-O0,-g,-Werror,-Werror=implicit-fallthrough=0,-Wextra,-rdynamic CFLAGS := -O4 -Xcompiler -O4 EXEC := $(OBJ_DIR)/ViolaJones DATA := ../data/X_train.bin ../data/X_test.bin ../data/y_train.bin ../data/y_test.bin SRC := $(shell find $(SRC_DIR) -name "*.cpp" -o -name "*.cu" ) OBJ_EXT := o ifeq ($(OS), Windows_NT) EXEC:=$(EXEC).exe OBJ_EXT:=obj endif OBJ := $(SRC:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.$(OBJ_EXT)) OBJ := $(OBJ:$(SRC_DIR)/%.cu=$(OBJ_DIR)/%.$(OBJ_EXT)) .PHONY: all start reset clean mrproper debug check all: $(EXEC) $(DATA) # Compiling host code $(OBJ_DIR)/%.$(OBJ_EXT): $(SRC_DIR)/%.cpp @echo Compiling $< @$(CC) $(CFLAGS) -c $< -o $@ # Compiling gpu code $(OBJ_DIR)/%.$(OBJ_EXT): $(SRC_DIR)/%.cu @echo Compiling $< @$(CC) $(CFLAGS) -c $< -o $@ $(EXEC): $(OBJ) @echo Linking objects files to $@ @$(CC) $(CFLAGS) $^ -o $@ $(DATA): @bash ../download_data.sh .. start: $(EXEC) $(DATA) @./$(EXEC) profile: start @gprof $(EXEC) gmon.out | gprof2dot | dot -Tpng -o output.png #@gprof $(EXEC) gmon.out > analysis.txt debug: $(EXEC) $(DATA) #@cuda-gdb -q $(EXEC) @gdb -q --tui $(EXEC) check: $(EXEC) $(DATA) @valgrind -q -s --leak-check=full --show-leak-kinds=all $(EXEC) cudacheck: $(EXEC) $(DATA) @cuda-memcheck --destroy-on-device-error kernel --tool memcheck --leak-check full --report-api-errors all $(EXEC) #@cuda-memcheck --destroy-on-device-error kernel --tool racecheck --racecheck-report all $(EXEC) #@cuda-memcheck --destroy-on-device-error kernel --tool initcheck --track-unused-memory yes $(EXEC) #@cuda-memcheck --destroy-on-device-error kernel --tool synccheck $(EXEC) #@compute-sanitizer --destroy-on-device-error kernel --tool memcheck --leak-check full --report-api-errors all --track-stream-ordered-races all $(EXEC) #@compute-sanitizer --destroy-on-device-error kernel --tool racecheck --racecheck-detect-level info --racecheck-report all $(EXEC) #@compute-sanitizer --destroy-on-device-error kernel --tool initcheck --track-unused-memory yes $(EXEC) #@compute-sanitizer --destroy-on-device-error kernel --tool synccheck $(EXEC) r2: $(EXEC) $(DATA) @r2 $(EXEC) reset: @echo Deleting generated states and models @rm -rf $(OUT_DIR)/* $(MODELS_DIR)/* | true clean: @rm $(EXEC) mrproper: @rm -r $(OBJ_DIR)