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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
#################################
# 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)
|