################################# # Author: Sravanthi Kota Venkata ################################# SHELL := /bin/bash # Define MATLAB-PATH with the path to the MATLAB package MATLAB_PATH = /pkg/bin/matlab ifeq ($(filter matlab-run,$(MAKECMDGOALS)),matlab-run) ifneq ($(wildcard $(MATLAB_PATH)),$(MATLAB_PATH)) $(error Please set the appropriate MATLAB path in MATLAB_PATH variable) endif endif ifeq ($(filter mcc-run,$(MAKECMDGOALS)),mcc-run) ifneq ($(wildcard $(MATLAB_PATH)),$(MATLAB_PATH)) $(error Please set the appropriate MATLAB path in MATLAB_PATH variable) endif endif CC=gcc LIBEXTRA ?= $(TOP_DIR)/../ override CFLAGS += -DGCC -D$(INPUT) -pthread -I${LIBEXTRA} COMMON_DIR := $(TOP_DIR)/common/c M_COMMON := $(TOP_DIR)/common/matlab M_TOOLBOX=$(TOP_DIR)/common/toolbox TIMING_DIR := $(TOP_DIR)/cycles/$(BMARK) TIMES_DIR := $(TOP_DIR)/times/$(BMARK) PRELOAD_TIMES_DIR := $(TOP_DIR)/preload-times/$(BMARK) MTIMING_DIR := $(TOP_DIR)/cycles/$(BMARK) BMARK_DIR := $(TOP_DIR)/benchmarks/$(BMARK) TOOL_DIR := $(TOP_DIR)/tools LIBLITMUS ?= /playpen/mc2/liblitmus ifneq ($(shell grep "define LITMUS 1" ${TOP_DIR}/../extra.h),) override CFLAGS += -I${LIBLITMUS}/include -I${LIBLITMUS}/arch/arm/include override LDFLAGS += -L${LIBLITMUS} -llitmus endif #The options set below and specific to each benchmark. Disparity takes 2 input images, whereas Tracking can take any >1 input images =. # Variables exported from the benchmark specific Makefiles: # BMARK # INPUT - sqcif/qcif/cif # Matlab source, data and result directory M_DIR=$(BMARK_DIR)/src/matlab M_DATA=$(BMARK_DIR)/data/$(INPUT) M_RESULT=$(BMARK_DIR)/result # C source, data and result directory C_DIR=$(BMARK_DIR)/src/c DATA_DIR=$(BMARK_DIR)/data/$(INPUT) C_RESULT=$(M_RESULT) # Source files for C and Common folders C_SRC := $(wildcard $(C_DIR)/*.c) COMMON_SRC := $(wildcard $(COMMON_DIR)/*.c) # RULES EXE = INCLUDES = -I$(COMMON_DIR) -I$(C_DIR) COMPILE_C = $(CC) $(CFLAGS) $(INCLUDES) -O2 #COMPILE_C = $(CC) $(CFLAGS) -DGENERATE_OUTPUT -lm -O2 $(INCLUDES) COMPILE_G = $(CC) $(CFLAGS) -g -lm $(INCLUDES) COMPILE_PG = $(COMPILE_G) -pg preload-run: compile @echo preloaded timing @echo 3 | tee /proc/sys/vm/drop_caches @find ./ -iname "*.bmp" -exec sh -c '$(TOOL_DIR)/preload {} &' \; @find ./ -iname "*.txt" -exec sh -c '$(TOOL_DIR)/preload {} &' \; mkdir -p $(PRELOAD_TIMES_DIR) @echo -e "Data set\t\t- $(INPUT)" (time ./$(BMARK)$(EXE) $(DATA_DIR)) |& tee $(PRELOAD_TIMES_DIR)/T_$(INPUT).txt @kill -2 `pgrep preload` time-run: compile mkdir -p $(TIMES_DIR) @echo -e "Data set\t\t- $(INPUT)" @echo 3 | tee /proc/sys/vm/drop_caches (time ./$(BMARK)$(EXE) $(DATA_DIR)) |& tee $(TIMES_DIR)/T_$(INPUT).txt c-run: compile @echo -e "Data set\t\t- $(INPUT)" mkdir -p $(TIMING_DIR) @./$(BMARK)$(EXE) $(DATA_DIR) $(C_RESULT) | tee $(TIMING_DIR)/C_$(INPUT).txt run: compile @echo -e "Data set\t\t- $(INPUT)" @./$(BMARK)$(EXE) $(DATA_DIR) $(C_RESULT) rt-run: compile @echo -e "Data set\t\t- $(INPUT)" @./$(BMARK)$(EXE) $(BMARK)-$(INPUT) 5 0 12345 1 debug: @echo Running Debug C Version of the benchmark @$(COMPILE_G) $(COMMON_SRC) $(C_SRC) -o $(BMARK)$(EXE) @valgrind --leak-check=full ./$(BMARK)$(EXE) $(DATA_DIR) $(C_RESULT) #@gdb ./$(BMARK)$(EXE) $(DATA_DIR) $(C_RESULT) profile: compile-prof @echo -e "Data set\t\t- $(INPUT)" @./$(BMARK)$(EXE) $(DATA_DIR) $(C_RESULT) @gprof $(BMARK)$(EXE) compile-preload: @$(COMPILE_C) $(TOOL_DIR)\preload.c -o $(TOOL_DIR)\preload compile: $(C_SRC) @echo @echo -e "Benchmark\t\t- $(BMARK)" @$(COMPILE_C) $(COMMON_SRC) $(C_SRC) -lrt -lm $(LDFLAGS) -w -o $(BMARK)$(EXE) compile-prof: $(C_SRC) @echo @echo -e "Benchmark\t\t- $(BMARK)" @$(COMPILE_PG) $(COMMON_SRC) $(C_SRC) -o $(BMARK)$(EXE) matlab-run: @echo @echo -e "Benchmark\t\t- $(BMARK)" @echo -e "Data set\t\t- $(INPUT)" @cd $(M_DIR); $(MATLAB_PATH) -glnx86 -nosplash -nodisplay -r "script_run_profile('$(M_DATA)', '$(M_RESULT)', '$(INPUT)', '$(M_COMMON)', '$(M_TOOLBOX)'); quit" | tee $(MTIMING_DIR)/Matlab_$(INPUT).txt mcc-run: @echo Generating a C standalone application cd $(M_DIR); $(MATLAB_PATH) -nosplash -nodesktop -r "mcc -m -v script_run_profile -d $(M_RESULT); quit" all: c-run matlab-run mcc-run clean: @-rm $(BMARK)