86 lines
3.0 KiB
Makefile
86 lines
3.0 KiB
Makefile
MODELS_DIR := models
|
|
OUT_DIR := out
|
|
DATA_PATH := ../data
|
|
DATA := $(DATA_PATH)/X_train.bin $(DATA_PATH)/X_test.bin $(DATA_PATH)/y_train.bin $(DATA_PATH)/y_test.bin
|
|
|
|
.PHONY: all
|
|
all: venv
|
|
|
|
$(DATA):
|
|
@echo 'Missing $(DATA) files, use downloader first' && exit 1
|
|
|
|
.PHONY: venv
|
|
venv:
|
|
@sh -c '. ./activate.sh'
|
|
|
|
.PHONY: start
|
|
start: $(DATA) | venv check-python-works
|
|
@sh -c '. ./activate.sh && python projet.py'
|
|
|
|
.PHONY: debug
|
|
debug: $(DATA) | venv check-python-works check-pudb-works
|
|
@bash -c 'source activate.sh && pudb projet.py'
|
|
|
|
.PHONY: profile
|
|
profile: $(DATA) | venv check-python-works check-gprof2dot-works check-dot-works
|
|
@bash -c 'source activate.sh && python -m cProfile -o prof.out projet.py && gprof2dot -f pstats prof.out | dot -T png -o output.png'
|
|
|
|
.PHONY: log
|
|
log: $(DATA) reset | venv
|
|
@sed -i 's/GPU_BOOSTED: Final = False/GPU_BOOSTED: Final = True/;s/COMPILE_WITH_C: Final = False/COMPILE_WITH_C: Final = True/' config.py
|
|
@echo 'Logging GPU'
|
|
@make -s start > log_gpu
|
|
@sed -i 's/GPU_BOOSTED: Final = True/GPU_BOOSTED: Final = False/' config.py
|
|
@echo 'Logging CPU'
|
|
@make -s start > log_cpu
|
|
@sed -i 's/GPU_BOOSTED: Final = False/GPU_BOOSTED: Final = True/;s/COMPILE_WITH_C: Final = True/COMPILE_WITH_C: Final = False/' config.py
|
|
@echo 'Logging PGPU'
|
|
@make -s start > log_pgpu
|
|
@sed -i 's/GPU_BOOSTED: Final = True/GPU_BOOSTED: Final = False/' config.py
|
|
@echo 'Logging PY'
|
|
@make -s start > log_py
|
|
@echo 'Cleaning up'
|
|
@make -s reset
|
|
|
|
.PHONY: reset
|
|
reset:
|
|
@echo 'Deleting generated states and models'
|
|
@rm -frv $(OUT_DIR)/* $(MODELS_DIR)/*
|
|
#@ln -sv /mnt/pierre_stuffs/ViolaJones/python/models .
|
|
#@ln -sv /mnt/pierre_stuffs/ViolaJones/python/out .
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
@rm -fv log_gpu log_cpu log_gpu log_py
|
|
|
|
.PHONY: mrproper
|
|
mrproper: clean
|
|
@rm -rfv __pycache__ venv
|
|
|
|
.PHONY: help
|
|
help:
|
|
@echo "Available targets:"
|
|
@echo "\tall: alias for start, (default target)"
|
|
@echo "\tvenv: Create python virtual environnement."
|
|
@echo "\tstart: Start the ViolaJones algorithm, require data beforehand downloaded by the downloader."
|
|
@echo "\tdebug: Debug the ViolaJones algorithm, require data beforehand downloaded by the downloader."
|
|
@echo "\tprofile: Profile the ViolaJones algorithm functions timestamps, require data beforehand downloaded by the downloader."
|
|
@echo "\treset: Will delete any saved models and processed data made by ViolaJones."
|
|
@echo "\tmrproper: Will remove cpp binary files. Will execute reset target beforehand."
|
|
|
|
.PHONY: check-python-works
|
|
check-python-works:
|
|
@python --version >/dev/null 2>&1 || (echo 'Please install Python.' && exit 1)
|
|
|
|
.PHONY: check-pudb-works
|
|
check-pudb-works:
|
|
@pudb --version >/dev/null 2>&1 || (echo 'Please install pudb.' && exit 1)
|
|
|
|
.PHONY: check-gprof2dot-works
|
|
check-gprof2dot-works:
|
|
@gprof2dot --help >/dev/null 2>&1 || (echo 'Please install gprof2dot.' && exit 1)
|
|
|
|
.PHONY: check-dot-works
|
|
check-dot-works:
|
|
@dot --version >/dev/null 2>&1 || (echo 'Please install dot from graphviz.' && exit 1)
|