-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun_spec_template_gcc.sh
More file actions
130 lines (105 loc) · 3.46 KB
/
run_spec_template_gcc.sh
File metadata and controls
130 lines (105 loc) · 3.46 KB
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
#!/bin/bash
SPEC_DIRECTORY=/home/user/spec-cpu
# NOTE: update this path accordingly
LLVM_SOURCES_BASE=/usr/local
GCC_SOURCES_BASE=/usr/local
AUTOFD_SOURCES_BASE=/usr/bin
BASE=$SPEC_DIRECTORY/experimental-results
RESULTS_BAG=PERFORMANCE_DIR_TEMPLATE/results-gcc
RESULTS_BASE=$BASE/spec-results
LOGS_BASE=$BASE/spec-logs
PROFILES_BASE=$BASE/spec-profiles
while getopts "f" opt; do
case $opt in
f)
RUN_FAKE=1
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
esac
done
declare -A EVAL_CONFIGURATIONS=(
CONFIGURATIONS_TEMPLATE
)
function run() {
echo "[$(date)] Running SPEC CPU 2017 - $2"
RESULTS_DIR=$RESULTS_BASE/$2
LOGS_DIR=$LOGS_BASE/$2
PROFILES_DIR=$PROFILES_BASE/$2
rm -rf RESULTS_DIR && mkdir -p $RESULTS_DIR
rm -rf LOGS_DIR && mkdir -p $LOGS_DIR
rm -rf PROFILES_DIR && mkdir -p $PROFILES_DIR
export SPEC_CONFIGURATION="$3"
export SPEC_PROFILES_DIR=$PROFILES_DIR
export SPEC_CC_DIRECTORY=$GCC_SOURCES_BASE
export SPEC_CC=gcc
export SPEC_CXX=g++
export SPEC_TUNE="base"
export SPEC_IS_GCC=1
export SPEC_AUTOFDO_VERSION=$LLVM_SOURCES_BASE/autofdo-$AUTOFDO_VERSION/build
export SPEC_LABEL="$1"
# 1. cleanup spec directories
./bin/runcpu --action scrub --config=debugtuner-spec > $LOGS_DIR/runcpu-scrub.log
rm -rf result/*
# 2. run spec with given configuration
if [ -z $RUN_FAKE ]; then
./bin/runcpu --config=debugtuner-spec > $LOGS_DIR/runcpu-run.log
else
./bin/runcpu --fake --config=debugtuner-spec > $LOGS_DIR/runcpu-run.log
fi
# 3. save results
mv result/* $RESULTS_DIR/.
rmdir result
unset SPEC_IS_GCC
}
function run_gcc() {
run gcc gcc-O0-standard "${EVAL_CONFIGURATIONS[O0-std]}"
run gcc gcc-O1-standard "${EVAL_CONFIGURATIONS[O1-std]}"
run gcc gcc-O2-standard "${EVAL_CONFIGURATIONS[O2-std]}"
run gcc gcc-O3-standard "${EVAL_CONFIGURATIONS[O3-std]}"
run gcc gcc-Og-standard "${EVAL_CONFIGURATIONS[Og-std]}"
mkdir -p $RESULTS_BAG
mv $BASE $RESULTS_BAG/experimental-results-std
}
function run_gcc_Ox_d3() {
run gcc gcc-O1-d3 "${EVAL_CONFIGURATIONS[O1-d3]}"
run gcc gcc-O2-d3 "${EVAL_CONFIGURATIONS[O2-d3]}"
run gcc gcc-O3-d3 "${EVAL_CONFIGURATIONS[O3-d3]}"
run gcc gcc-Og-d3 "${EVAL_CONFIGURATIONS[Og-d3]}"
mkdir -p $RESULTS_BAG
mv $BASE $RESULTS_BAG/experimental-results-d3
}
function run_gcc_Ox_d5() {
run gcc gcc-O1-d5 "${EVAL_CONFIGURATIONS[O1-d5]}"
run gcc gcc-O2-d5 "${EVAL_CONFIGURATIONS[O2-d5]}"
run gcc gcc-O3-d5 "${EVAL_CONFIGURATIONS[O3-d5]}"
run gcc gcc-Og-d5 "${EVAL_CONFIGURATIONS[Og-d5]}"
mkdir -p $RESULTS_BAG
mv $BASE $RESULTS_BAG/experimental-results-d5
}
function run_gcc_Ox_d7() {
run gcc gcc-O1-d7 "${EVAL_CONFIGURATIONS[O1-d7]}"
run gcc gcc-O2-d7 "${EVAL_CONFIGURATIONS[O2-d7]}"
run gcc gcc-O3-d7 "${EVAL_CONFIGURATIONS[O3-d7]}"
run gcc gcc-Og-d7 "${EVAL_CONFIGURATIONS[Og-d7]}"
mkdir -p $RESULTS_BAG
mv $BASE $RESULTS_BAG/experimental-results-d7
}
function run_gcc_Ox_d9() {
run gcc gcc-O1-d3 "${EVAL_CONFIGURATIONS[O1-d9]}"
run gcc gcc-O2-d3 "${EVAL_CONFIGURATIONS[O2-d9]}"
run gcc gcc-O3-d3 "${EVAL_CONFIGURATIONS[O3-d9]}"
run gcc gcc-Og-d3 "${EVAL_CONFIGURATIONS[Og-d9]}"
mkdir -p $RESULTS_BAG
mv $BASE $RESULTS_BAG/experimental-results-d9
}
mkdir -p $RESULTS_BAG
pushd $SPEC_DIRECTORY
run_gcc
run_gcc_Ox_d3
run_gcc_Ox_d5
run_gcc_Ox_d7
run_gcc_Ox_d9
popd