-
Notifications
You must be signed in to change notification settings - Fork 0
/
run_benchmark_savina
executable file
·212 lines (197 loc) · 18.3 KB
/
run_benchmark_savina
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
#!/bin/bash
if [[ $(id -u) != 0 ]]; then
echo "you need to be root"
exit 0
fi
CAF_HOME="/users/localadmin/woelke/actor-framework"
BENCH_USER="localadmin"
OUT_DIR="/users/localadmin/woelke/test_data"
BIN_PATH="${CAF_HOME}/build/bin"
JAR_FILE="/users/localadmin/woelke/savina/target/savina-0.0.1-SNAPSHOT-jar-with-dependencies.jar"
JAVA_PATH="$(dirname $(whereis -b java | awk '{print $2}'))"
CAF_INI_FILE="caf-application.ini"
METRIC_SCRIPT="metric_count_steals.py"
#METRIC_SCRIPT="cpu_counters.py"
REPITITIONS=10
MIN_CORES=4
MAX_CORES=64
# Define benchmarks to run
#todo_array="CLS-original;stealing;system;system CLS-thread-pinning;w-stealing;system;system LGS;w-stealing;node;node LGS-cache-optimized;w-stealing;node;cache"
todo_array="CLS-original;stealing;system;system CLS-thread-pinning;w-stealing;system;system "
#todo_array="CLS-original;w-stealing;nop;nop CLS-thread-pinning;w-stealing;system;system LGS;w-stealing;node;node LGS-cache-optimized;w-stealing;node;cache"
declare -A bench_names
#bench_names["savina_01_pingpong"]="PingPongAkkaActor PingPongFuncJavaActor PingPongGparsActor PingPongHabaneroActor PingPongHabaneroSelector PingPongJetlangActor PingPongJumiActor PingPongLiftActor PingPongScalaActor PingPongScalazActor"
#bench_names["savina_02_count"]="CountingAkkaActor CountingFuncJavaActor CountingGparsActor CountingHabaneroActor CountingHabaneroSelector CountingJetlangActor CountingJumiActor CountingLiftActor CountingScalaActor CountingScalazActor"
#bench_names["savina_03_fjthrput"]="ThroughputAkkaActor ThroughputFuncJavaActor ThroughputGparsActor ThroughputHabaneroActor ThroughputHabaneroSelector ThroughputJetlangActor ThroughputJumiActor ThroughputLiftActor ThroughputScalaActor ThroughputScalazActor"
#bench_names["savina_04_fjcreate"]="ForkJoinAkkaActor ForkJoinFuncJavaActor ForkJoinGparsActor ForkJoinHabaneroActor ForkJoinHabaneroSelector ForkJoinJetlangActor ForkJoinJumiActor ForkJoinLiftActor ForkJoinScalaActor ForkJoinScalazActor"
#bench_names["savina_05_threadring"]="ThreadRingAkkaActor ThreadRingFuncJavaActor ThreadRingGparsActor ThreadRingHabaneroActor ThreadRingHabaneroSelector ThreadRingJetlangActor ThreadRingJumiActor ThreadRingLiftActor ThreadRingScalaActor ThreadRingScalazActor"
#bench_names["savina_06_chameneos"]="ChameneosAkkaActor ChameneosFuncJavaActor ChameneosGparsActor ChameneosHabaneroActor ChameneosHabaneroSelector ChameneosJetlangActor ChameneosJumiActor ChameneosLiftActor ChameneosScalaActor ChameneosScalazActor"
#bench_names["savina_07_big"]="BigAkkaActor BigFuncJavaActor BigGparsActor BigHabaneroActor BigHabaneroSelector BigJetlangActor BigJumiActor BigLiftActor BigScalaActor BigScalazActor"
#bench_names["savina_08_concdict"]="DictionaryAkkaActor DictionaryFuncJavaActor DictionaryGparsActor DictionaryHabaneroActor DictionaryHabaneroRWAbstract DictionaryHabaneroRWArrivalOrder DictionaryHabaneroRWReaderFirst DictionaryHabaneroRWWriterFirst DictionaryHabaneroSelector DictionaryJetlangActor DictionaryJumiActor DictionaryLiftActor DictionaryScalaActor DictionaryScalazActor"
#bench_names["savina_09_concsll"]="SortedListAkkaActor SortedListFuncJavaActor SortedListGparsActor SortedListHabaneroActor SortedListHabaneroRWAbstract SortedListHabaneroRWArrivalOrder SortedListHabaneroRWReaderFirst SortedListHabaneroRWWriterFirst SortedListHabaneroSelector SortedListJetlangActor SortedListJumiActor SortedListLiftActor SortedListScalaActor SortedListScalazActor"
#bench_names["savina_10_bndbuffer"]="ProdConsAkkaActor ProdConsFuncJavaActor ProdConsGparsActor ProdConsHabaneroActor ProdConsHabaneroDeclSelector ProdConsHabaneroSelector ProdConsJetlangActor ProdConsJumiActor ProdConsLiftActor ProdConsScalaActor ProdConsScalazActor"
#bench_names["savina_11_philosopher"]="PhilosopherAkkaActor PhilosopherFuncJavaActor PhilosopherGparsActor PhilosopherHabaneroAsyncActor PhilosopherHabaneroAsyncSelector PhilosopherHabaneroSeqActor PhilosopherHabaneroSeqSelector PhilosopherJetlangActor PhilosopherJumiActor PhilosopherLiftActor PhilosopherScalaActor PhilosopherScalazActor"
#bench_names["savina_12_barber"]="SleepingBarberAkkaActor SleepingBarberFuncJavaActor SleepingBarberGparsActor SleepingBarberHabaneroActor SleepingBarberHabaneroSelector SleepingBarberJetlangActor SleepingBarberJumiActor SleepingBarberLiftActor SleepingBarberScalaActor SleepingBarberScalazActor"
#bench_names["savina_13_cigsmok"]="CigaretteSmokerAkkaActor CigaretteSmokerFuncJavaActor CigaretteSmokerGparsActor CigaretteSmokerHabaneroActor CigaretteSmokerHabaneroSelector CigaretteSmokerJetlangActor CigaretteSmokerJumiActor CigaretteSmokerLiftActor CigaretteSmokerScalaActor CigaretteSmokerScalazActor"
#bench_names["savina_14_logmap"]="LogisticMapAkkaAwaitActor LogisticMapAkkaBecomeActor LogisticMapAkkaBecomeExtActor LogisticMapAkkaManualStashActor LogisticMapFuncJavaActor LogisticMapFuncJavaManualStashActor LogisticMapGparsManualStashActor LogisticMapHabaneroManualStashActor LogisticMapHabaneroManualStashSelector LogisticMapHabaneroPauseResumeActor LogisticMapHabaneroPauseResumeSelector LogisticMapHabaneroSelector LogisticMapJetlangActor LogisticMapJetlangManualStashActor LogisticMapJumiManualStashActor LogisticMapLiftManualStashActor LogisticMapScalaActor LogisticMapScalaManualStashActor LogisticMapScalazActor LogisticMapScalazManualStashActor"
#bench_names["savina_15_banking"]="BankingAkkaAwaitActor BankingAkkaBecomeActor BankingAkkaBecomeExtActor BankingAkkaManualStashActor BankingFuncJavaActor BankingFuncJavaManualStashActor BankingGparsManualStashActor BankingHabaneroManualStashActor BankingHabaneroManualStashSelector BankingHabaneroPauseResumeActor BankingHabaneroPauseResumeSelector BankingHabaneroSelector BankingJetlangActor BankingJetlangManualStashActor BankingJumiManualStashActor BankingLiftManualStashActor BankingScalaActor BankingScalaManualStashActor BankingScalazActor BankingScalazManualStashActor"
#bench_names["savina_16_radixsort"]="RadixSortAkkaActor RadixSortFuncJavaActor RadixSortGparsActor RadixSortHabaneroActor RadixSortHabaneroSelector RadixSortJetlangActor RadixSortJumiActor RadixSortLiftActor RadixSortScalaActor RadixSortScalazActor"
#bench_names["savina_17_filterbank"]="FilterBankAkkaActor FilterBankFuncJavaActor FilterBankGparsActor FilterBankHabaneroActor FilterBankHabaneroOrderedSelector FilterBankHabaneroUnorderedSelector FilterBankJetlangActor FilterBankJumiActor FilterBankLiftActor FilterBankScalaActor FilterBankScalazActor"
#bench_names["savina_18_sieve"]="SieveAkkaActor SieveFuncJavaActor SieveGparsActor SieveHabaneroActor SieveHabaneroSelector SieveJetlangActor SieveJumiActor SieveLiftActor SieveScalaActor SieveScalazActor"
#bench_names["savina_19_uct"]="UctAkkaActor UctFuncJavaActor UctGparsActor UctHabaneroActor UctHabaneroSelector UctJetlangActor UctJumiActor UctLiftActor UctScalaActor UctScalazActor"
#bench_names["savina_20_facloc"]="FacilityLocationAkkaActor FacilityLocationFuncJavaActor FacilityLocationGparsActor FacilityLocationHabaneroActor FacilityLocationHabaneroSelector FacilityLocationJetlangActor FacilityLocationJumiActor FacilityLocationLiftActor FacilityLocationScalaActor FacilityLocationScalazActor"
#bench_names["savina_21_trapezoid"]="TrapezoidalAkkaActor TrapezoidalFuncJavaActor TrapezoidalGparsActor TrapezoidalHabaneroActor TrapezoidalHabaneroSelector TrapezoidalJetlangActor TrapezoidalJumiActor TrapezoidalLiftActor TrapezoidalScalaActor TrapezoidalScalazActor"
#bench_names["savina_22_piprecision"]="PiPrecisionAkkaActor PiPrecisionFuncJavaActor PiPrecisionGparsActor PiPrecisionHabaneroActor PiPrecisionHabaneroSelector PiPrecisionJetlangActor PiPrecisionJumiActor PiPrecisionLiftActor PiPrecisionScalaActor PiPrecisionScalazActor"
#bench_names["savina_23_recmatmul"]="MatMulAkkaActor MatMulFuncJavaActor MatMulGparsActor MatMulHabaneroActor MatMulHabaneroSelector MatMulJetlangActor MatMulJumiActor MatMulLiftActor MatMulScalaActor MatMulScalazActor"
#bench_names["savina_24_quicksort"]="QuickSortAkkaActor QuickSortFuncJavaActor QuickSortGparsActor QuickSortHabaneroActor QuickSortHabaneroSelector QuickSortJetlangActor QuickSortJumiActor QuickSortLiftActor QuickSortScalaActor QuickSortScalazActor"
#bench_names["savina_25_apsp"]="ApspAkkaActor ApspFuncJavaActor ApspGparsActor ApspHabaneroActor ApspHabaneroSelector ApspJetlangActor ApspJumiActor ApspLiftActor ApspScalaActor ApspScalazActor"
#bench_names["savina_26_sor"]="SucOverRelaxAkkaActor SucOverRelaxFuncJavaActor SucOverRelaxGparsActor SucOverRelaxHabaneroActor SucOverRelaxHabaneroSelector SucOverRelaxJetlangActor SucOverRelaxJumiActor SucOverRelaxLiftActor SucOverRelaxScalaActor SucOverRelaxScalazActor"
#bench_names["savina_27_astar"]="GuidedSearchAkkaActor GuidedSearchAkkaPriorityActor GuidedSearchFuncJavaActor GuidedSearchGparsActor GuidedSearchHabaneroActor GuidedSearchHabaneroSelector GuidedSearchJetlangActor GuidedSearchJumiActor GuidedSearchLiftActor GuidedSearchScalaActor GuidedSearchScalazActor"
#bench_names["savina_28_nqueenk"]="NQueensAkkaActor NQueensAkkaPriorityActor NQueensFuncJavaActor NQueensGparsActor NQueensHabaneroActor NQueensHabaneroSelector NQueensJetlangActor NQueensJumiActor NQueensLiftActor NQueensScalaActor NQueensScalazActor"
#bench_names["savina_29_fib"]="FibonacciAkkaActor FibonacciFuncJavaActor FibonacciGparsActor FibonacciHabaneroActor FibonacciHabaneroSelector FibonacciJetlangActor FibonacciJumiActor FibonacciLiftActor FibonacciScalaActor FibonacciScalazActor"
#bench_names["savina_30_bitonicsort"]="BitonicSortAkkaActor BitonicSortFuncJavaActor BitonicSortGparsActor BitonicSortHabaneroActor BitonicSortHabaneroSelector BitonicSortJetlangActor BitonicSortJumiActor BitonicSortLiftActor BitonicSortScalaActor BitonicSortScalazActor"
#not working: LiftActor
bench_names["savina_01_pingpong"]="PingPongAkkaActor PingPongHabaneroActor PingPongJetlangActor PingPongScalazActor"
bench_names["savina_02_count"]="CountingAkkaActor CountingHabaneroActor CountingJetlangActor CountingScalazActor"
bench_names["savina_03_fjthrput"]="ThroughputAkkaActor ThroughputHabaneroActor ThroughputJetlangActor ThroughputScalazActor"
bench_names["savina_04_fjcreate"]="ForkJoinAkkaActor ForkJoinHabaneroActor ForkJoinJetlangActor ForkJoinScalazActor"
bench_names["savina_05_threadring"]="ThreadRingAkkaActor ThreadRingHabaneroActor ThreadRingJetlangActor ThreadRingScalazActor"
bench_names["savina_06_chameneos"]="ChameneosAkkaActor ChameneosHabaneroActor ChameneosJetlangActor ChameneosScalazActor"
bench_names["savina_07_big"]="BigAkkaActor BigHabaneroActor BigJetlangActor BigScalazActor"
bench_names["savina_08_concdict"]="DictionaryAkkaActor DictionaryHabaneroActor DictionaryJetlangActor DictionaryScalazActor"
bench_names["savina_09_concsll"]="SortedListAkkaActor SortedListHabaneroActor SortedListJetlangActor SortedListScalazActor"
bench_names["savina_10_bndbuffer"]="ProdConsAkkaActor ProdConsHabaneroActor ProdConsJetlangActor ProdConsScalazActor"
bench_names["savina_11_philosopher"]="PhilosopherAkkaActor PhilosopherHabaneroAsyncActor PhilosopherJetlangActor PhilosopherScalazActor"
bench_names["savina_12_barber"]="SleepingBarberAkkaActor SleepingBarberHabaneroActor SleepingBarberJetlangActor SleepingBarberScalazActor"
bench_names["savina_13_cigsmok"]="CigaretteSmokerAkkaActor CigaretteSmokerHabaneroActor CigaretteSmokerJetlangActor CigaretteSmokerScalazActor"
bench_names["savina_14_logmap"]="LogisticMapAkkaAwaitActor LogisticMapAkkaBecomeExtActor LogisticMapAkkaManualStashActor LogisticMapHabaneroManualStashActor LogisticMapHabaneroManualStashSelector LogisticMapHabaneroPauseResumeActor LogisticMapHabaneroPauseResumeSelector LogisticMapJetlangActor LogisticMapJetlangManualStashActor LogisticMapScalazActor LogisticMapScalazManualStashActor"
bench_names["savina_15_banking"]="BankingAkkaAwaitActor BankingAkkaBecomeActor BankingAkkaBecomeExtActor BankingAkkaManualStashActor BankingHabaneroManualStashActor BankingHabaneroPauseResumeActor BankingJetlangActor BankingJetlangManualStashActor BankingScalazActor BankingScalazManualStashActor"
bench_names["savina_16_radixsort"]="RadixSortAkkaActor RadixSortHabaneroActor RadixSortJetlangActor RadixSortScalazActor"
bench_names["savina_17_filterbank"]="FilterBankAkkaActor FilterBankHabaneroActor FilterBankJetlangActor FilterBankScalazActor"
bench_names["savina_18_sieve"]="SieveAkkaActor SieveHabaneroActor SieveJetlangActor SieveScalazActor"
bench_names["savina_20_facloc"]="FacilityLocationAkkaActor FacilityLocationHabaneroActor FacilityLocationJetlangActor FacilityLocationScalazActor"
bench_names["savina_21_trapezoid"]="TrapezoidalAkkaActor TrapezoidalHabaneroActor TrapezoidalJetlangActor TrapezoidalScalazActor"
bench_names["savina_23_recmatmul"]="MatMulAkkaActor MatMulHabaneroActor MatMulJetlangActor MatMulScalazActor"
bench_names["savina_24_quicksort"]="QuickSortAkkaActor QuickSortHabaneroActor QuickSortJetlangActor QuickSortScalazActor"
bench_names["savina_25_apsp"]="ApspAkkaActor ApspHabaneroActor ApspJetlangActor ApspScalazActor"
bench_names["savina_28_nqueenk"]="NQueensAkkaActor NQueensAkkaPriorityActor NQueensHabaneroActor NQueensJetlangActor NQueensScalazActor"
bench_names["savina_29_fib"]="FibonacciAkkaActor FibonacciHabaneroActor FibonacciJetlangActor FibonacciScalazActor"
bench_names["savina_30_bitonicsort"]="BitonicSortAkkaActor BitonicSortHabaneroActor BitonicSortJetlangActor BitonicSortScalazActor"
declare -A bench_args
bench_args["savina_01_pingpong"]="-n 2000000"
bench_args["savina_02_count"]="-n 10000000"
bench_args["savina_03_fjthrput"]="-n 60000 -a 360"
bench_args["savina_04_fjcreate"]="-n 4000000"
bench_args["savina_05_threadring"]="-n 1200 -r 1200000"
bench_args["savina_06_chameneos"]="-c 4000 -m 800000"
bench_args["savina_07_big"]="-n 60000 -w 360"
bench_args["savina_08_concdict"]="-e 100 -m 50000"
bench_args["savina_09_concsll"]="-e 20 -m 8000"
bench_args["savina_10_bndbuffer"]="-b 75 -p 60 -c 60 -i 1500"
bench_args["savina_11_philosopher"]="-n 80 -m 40000"
##bench_args["savina_12_barber"]="-n 15000 -w 3000"
##bench_args["savina_13_cigsmok"]="-r 1000000 -s 200"
#bench_args["savina_14_logmap;NOCAF"]=""
#bench_args["savina_14_logmap_become_unbecome_fast;NOJAVA"]=""
#bench_args["savina_14_logmap_become_unbecome_slow;NOJAVA"]=""
#bench_args["savina_14_logmap_request_await_high_timeout;NOJAVA"]=""
bench_args["savina_14_logmap_request_await_infinite;NOJAVA"]=""
#bench_args["savina_15_banking;NOCAF"]="-n 800000 -a 16000"
#bench_args["savina_15_banking_become_unbecome_fast;NOJAVA"]="-n 800000 -a 16000"
#bench_args["savina_15_banking_become_unbecome_slow;NOJAVA"]="-n 800000 -a 16000"
#bench_args["savina_15_banking_request_await_high_timeout;NOJAVA"]="-n 800000 -a 16000"
bench_args["savina_15_banking_request_await_infinite;NOJAVA"]="-n 800000 -a 16000"
#bench_args["savina_15_banking_request_then_high_timeout;NOJAVA"]="-n 800000 -a 16000"
#bench_args["savina_15_banking_request_then_infinite;NOJAVA"]="-n 800000 -a 16000"
bench_args["savina_16_radixsort"]="-n 400000"
##bench_args["savina_17_filterbank"]="-s 40000 -a 24"
bench_args["savina_18_sieve"]="-n 2000000 -m 10000"
##bench_args["savina_19_uct"]=""
bench_args["savina_20_facloc"]=" -n 200000 -g 1000"
bench_args["savina_21_trapezoid"]="-w 4000 -n 400000000"
##bench_args["savina_22_piprecision"]=""
bench_args["savina_23_recmatmul"]="-n 2048 -w 40"
bench_args["savina_24_quicksort"]="-n 40000000"
bench_args["savina_25_apsp"]="-n 900 -b 150 -w 300"
##bench_args["savina_26_sor"]=""
##bench_args["savina_27_astar"]=""
bench_args["savina_28_nqueenk"]="-n 14 -w 100 -s 1500000"
bench_args["savina_29_fib"]="-n 34"
bench_args["savina_30_bitonicsort"]="-n 8192"
#java -cp savina-0.0.1-SNAPSHOT-jar-with-dependencies.jar edu/rice/habanero/benchmarks/pingpong/PingPongAkkaActorBenchmark
set_bench_path() {
local path_="edu/rice/habanero/benchmarks"
IFS='_' read -ra bench_name__ <<< "$1"
local bench_name_="${bench_name__[2]}"
local bench_file_="${2}Benchmark"
bench_path=${path_}/${bench_name_}/${bench_file_}
}
set_bench_and_suffix() {
IFS=';' read -ra ARGS_SUFFIX <<< "$1"
bench=${ARGS_SUFFIX[0]}
suffix=${ARGS_SUFFIX[1]}
todo=$2
if [ "$suffix" == "" ]; then
suffix=${todo}
else
if [ "$todo" != "" ]; then
suffix=${todo}-${suffix}
fi
fi
}
unpack_props() {
IFS=';' read -ra PROPS <<< "$1"
name=${PROPS[0]}
policy=${PROPS[1]}
pinning_entity=${PROPS[2]}
stealing_entity=${PROPS[3]}
}
# Preperation
rm -f ${OUT_DIR}/*
cd ${CAF_HOME}/benchmarks/scripts
# Run CAF benchmark suite
for bench_n_suffix in ${!bench_args[@]} ; do
for todo_props in $todo_array ; do
unpack_props $todo_props
cat >${BIN_PATH}/${CAF_INI_FILE} <<EOL
[scheduler]
policy='$policy'
[work-stealing]
aggressive-poll-attempts=100
aggressive-steal-interval=10
moderate-poll-attempts=500
moderate-steal-interval=5
moderate-sleep-duration=50
relaxed-steal-interval=1
relaxed-sleep-duration=10000
[lgs]
actor-pinning-entity='$pinning_entity'
w-stealing-entity='$stealing_entity'
EOL
set_bench_and_suffix $bench_n_suffix $todo
if ! [[ "$suffix" == *"NOCAF"* ]]; then
./caf_run_benchmarks default $BENCH_USER $OUT_DIR --out-dir=${OUT_DIR} --bin-path=${BIN_PATH} --min-cores=${MIN_CORES} --max-cores=${MAX_CORES} --repetitions=${REPITITIONS} --label=caf --bench=${bench} --custom-args="${bench_args[$bench_n_suffix]}" --label-suffix=${suffix}-${name}
#./caf_run_benchmarks.py --bench-user=${BENCH_USER} --out-dir=${OUT_DIR} --bin-path=${BIN_PATH} --min-cores=$MIN_CORES --max-cores=${MAX_CORES} --repetitions=${REPITITIONS} --metric-script="./metrics/${METRIC_SCRIPT}" --label=caf --bench=${bench} --custom-args="${bench_args[$bench_n_suffix]}" --label-suffix=${suffix}-${name} #--pass_core_count_as_arg
fi
done
done
#for bench_n_suffix in ${!bench_args[@]} ; do
#set_bench_and_suffix $bench_n_suffix
#if ! [[ "$suffix" == *"NOJAVA"* ]]; then
#for bench_name in ${bench_names[$bench]} ; do
#set_bench_and_suffix $bench_n_suffix
#set_bench_path $bench $bench_name
#bench_exe="-cp ${JAR_FILE} ${bench_path} ${bench_args[$bench_n_suffix]}"
#if [ "$suffix" == "" ]; then
#./caf_run_benchmarks default $BENCH_USER $OUT_DIR --min-cores=$MIN_CORES --bin-path=${JAVA_PATH} --label=savina --bench="java" --repetitions=${REPITITIONS} --custom-args="${bench_exe}" --label-suffix=${bench_name}
#else
#./caf_run_benchmarks default $BENCH_USER $OUT_DIR --min-cores=$MIN_CORES --bin-path=${JAVA_PATH} --label=savina --bench="java" --repetitions=${REPITITIONS} --custom-args="${bench_exe}" --label-suffix=${bench_name}-${suffix}
#fi
#done
#fi
#done
# Create csv files
cd $OUT_DIR
${BIN_PATH}/to_csv *
duration=$SECONDS
echo "duration: $(($duration / 3600))h $((($duration / 60) % 60))m $(($duration % 60))s"