blob: c7094da59fadd46570d8960fcce14904362f6ad8 (
plain)
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
|
#!/bin/bash
# This script breaks up benchmark lists (SPEC CPU2006 and CPU2017)
# into parts to spread out across available hardware.
# It prints out one line of benchmarks per board.
set -euf -o pipefail
scripts=$(dirname "$0")/../jenkins-scripts
# shellcheck source=jenkins-helpers.sh
. $scripts/jenkins-helpers.sh
convert_args_to_variables "$@"
obligatory_variables bench_list bmk_hw n_boards run_profile
declare bench_list bmk_hw n_boards run_profile
board_selection="${board_selection-balance}"
# SPEC2006
spec2006_c_and_cxx=(
400.perlbench 401.bzip2 403.gcc 429.mcf 433.milc 444.namd 445.gobmk
447.dealII 450.soplex 453.povray 456.hmmer 458.sjeng 462.libquantum
464.h264ref 470.lbm 471.omnetpp 473.astar 482.sphinx3 483.xalancbmk
)
spec2006_fortran=(
410.bwaves 435.gromacs 436.cactusADM 454.calculix 416.gamess 434.zeusmp
437.leslie3d 459.GemsFDTD 465.tonto 481.wrf
)
spec2006_speed=(
400.perlbench_s 401.bzip2_s 403.gcc_s 429.mcf_s 433.milc_s 444.namd_s 445.gobmk_s
447.dealII_s 450.soplex_s 453.povray_s 456.hmmer_s 458.sjeng_s 462.libquantum_s
464.h264ref_s 470.lbm_s 471.omnetpp_s 473.astar_s 482.sphinx3_s 483.xalancbmk_s
410.bwaves_s 435.gromacs_s 436.cactusADM_s 454.calculix_s 416.gamess_s 434.zeusmp_s
437.leslie3d_s 459.GemsFDTD_s 465.tonto_s 481.wrf_s
)
spec2006_speed_nofortran=(
400.perlbench_s 401.bzip2_s 403.gcc_s 429.mcf_s 433.milc_s 444.namd_s 445.gobmk_s
447.dealII_s 450.soplex_s 453.povray_s 456.hmmer_s 458.sjeng_s 462.libquantum_s
464.h264ref_s 470.lbm_s 471.omnetpp_s 473.astar_s 482.sphinx3_s 483.xalancbmk_s
)
spec2006_all=("${spec2006_c_and_cxx[@]}" "${spec2006_fortran[@]}")
# SPEC2017
spec2017_speed=(
631.deepsjeng_s 641.leela_s
#-- intspeed.bset
# 600.perlbench_s 602.gcc_s 605.mcf_s 620.omnetpp_s 623.xalancbmk_s
# 625.x264_s 631.deepsjeng_s 641.leela_s 648.exchange2_s 657.xz_s 998.specrand_is
#-- fpspeed.bset
# 603.bwaves_s 607.cactuBSSN_s 619.lbm_s 621.wrf_s 627.cam4_s 628.pop2_s
# 638.imagick_s 644.nab_s 649.fotonik3d_s 654.roms_s 996.specrand_fs
)
spec2017_speed_nofortran=(
#-- intspeed_no_fortran.bset
600.perlbench_s 602.gcc_s 605.mcf_s 620.omnetpp_s 623.xalancbmk_s
625.x264_s 631.deepsjeng_s 641.leela_s 657.xz_s 998.specrand_is
#-- fppeed_no_fortran.bset
619.lbm_s 638.imagick_s 644.nab_s 996.specrand_fs
)
spec2017_rate=(
531.deepsjeng_r 541.leela_r
#-- intrate.bset
# 500.perlbench_r 502.gcc_r 505.mcf_r 520.omnetpp_r 523.xalancbmk_r 525.x264_r
# 531.deepsjeng_r 541.leela_r 548.exchange2_r 557.xz_r 999.specrand_ir
#-- fpspeed.bset
# 503.bwaves_r 507.cactuBSSN_r 508.namd_r 510.parest_r 511.povray_r 519.lbm_r
# 521.wrf_r 526.blender_r 527.cam4_r 538.imagick_r 544.nab_r 549.fotonik3d_r
# 554.roms_r 997.specrand_fr
)
spec2017_rate_nofortran=(
#-- intrate_no_fortran.bset
500.perlbench_r 502.gcc_r 505.mcf_r 520.omnetpp_r 523.xalancbmk_r 525.x264_r
531.deepsjeng_r 541.leela_r 557.xz_r 999.specrand_ir
#-- fpspeed.bset
508.namd_r 510.parest_r 511.povray_r 519.lbm_r
526.blender_r 538.imagick_r 544.nab_r
997.specrand_fr
)
# keywords for subset of cpu2006 tests :
# c_and_cxx, fortran, all, spec2006_speed, spec2006_speed_nofortran
# keywords for subset of cpu2017 tests :
# spec2017_speed, spec2017_speed_nofortran, spec2017_rate, spec2017_rate_nofortran
mapfile -t bmks < <(echo "$bench_list" \
| sed -e "s/\<c_and_cxx\>/${spec2006_c_and_cxx[*]}/g" \
-e "s/\<fortran\>/${spec2006_fortran[*]}/g" \
-e "s/\<all\>/${spec2006_all[*]}/g" \
-e "s/\<spec2006_speed\>/${spec2006_speed[*]}/g" \
-e "s/\<spec2006_speed_nofortran\>/${spec2006_speed_nofortran[*]}/g" \
-e "s/\<spec2017_speed\>/${spec2017_speed[*]}/g" \
-e "s/\<spec2017_speed_nofortran\>/${spec2017_speed_nofortran[*]}/g" \
-e "s/\<spec2017_rate\>/${spec2017_rate[*]}/g" \
-e "s/\<spec2017_rate_nofortran\>/${spec2017_rate_nofortran[*]}/g" \
| tr " " "\n" \
| sort -u)
if [ x"$board_selection" != x"balance" ]; then
case "$board_selection" in
one_board)
echo "${bmks[@]}"
;;
all_boards)
while [ $n_boards -gt 0 ]; do
echo "${bmks[@]}"
n_boards=$(($n_boards-1))
done
;;
esac
exit
fi
n_cores=1 # e.g., stm32
case "$bmk_hw" in
"apm") n_cores=8 ;;
"sq") n_cores=16 ;;
"tk1") n_cores=4 ;;
"tx1") n_cores=4 ;;
"fx") n_cores=4 ;;
esac
case "$run_profile" in
"serial") n_cores=1 ;;
esac
while [ ${#bmks[@]} -ge 1 ]; do
# Number of jobs needed for benchmarking
n_jobs=$(((${#bmks[@]} + $n_cores - 1) / $n_cores))
if [ $n_jobs -gt $n_boards ]; then
n_jobs=$n_boards
fi
# Number of benchmarks per job
N=$(((${#bmks[@]} + $n_jobs - 1) / $n_jobs))
echo "${bmks[@]:0:$N}"
bmks=("${bmks[@]:$N}")
n_boards=$(($n_boards-1))
done
|