nixos-riscv/pkgs/spec-cpu/launcher.sh

71 lines
1.4 KiB
Bash
Raw Normal View History

2024-10-09 15:52:46 +02:00
#!/bin/bash
set -e
if [ -z "$SPEC" ]; then
SPEC=$(spec-cpu-mini)
fi
if [ -z "$SPEC" ]; then
echo "cannot find spec, set SPEC variable"
exit 1
fi
where=$TMPDIR
if [ -z "$where" ]; then
if [ -d /tmp ]; then
where=/tmp
else
where=$PWD
fi
fi
cwd=$(readlink -f $where)
# Place the outcome here
wd="$cwd/spec"
mkdir -p "$wd"
benchniter=1
benchsize=test
benchtune=base
echo "--- Placing output in $wd ---"
printf 'benchmark\tsize\ttune\titer\ttime_s\n' > "$wd/time.csv"
for srcbench in $SPEC/benchspec/CPU/*; do
name=$(basename $srcbench)
bench="$wd/$name"
2024-10-10 10:28:48 +02:00
bench_out="$wd/$name.csv"
2024-10-09 15:52:46 +02:00
rm -rf "$bench"
cp -r "$srcbench" "$bench"
chmod +w -R "$bench"
rundir="$bench/run/run_${benchtune}_${benchsize}_nix-m64.0000"
sed -i '/^-C/d' "$rundir/speccmds.cmd"
echo "--- Running $name for $benchniter iterations ---"
(
#set -x
cd $rundir
specinvoke -i $benchniter -E speccmds.cmd > /dev/null
#set +x
)
# Print time
awk '/^run [0-9]* elapsed time/{printf \
"%s\t%s\t%s\t%s\t%s\n", \
"'$name'","'$benchsize'","'$benchtune'",$2,$7}' \
2024-10-10 10:28:48 +02:00
"$rundir/speccmds.out" > "$bench_out"
2024-10-09 15:52:46 +02:00
2024-10-10 10:28:48 +02:00
cat "$bench_out"
2024-10-09 15:52:46 +02:00
# Accumulate in main CSV
2024-10-10 10:28:48 +02:00
cat "$bench_out" >> "$wd/time.csv"
# Erase intermediate files as they occupy RAM.
rm -rf "$bench"
2024-10-09 15:52:46 +02:00
done
echo "--- RESULTS in $wd/time.csv ---"
cat "$wd/time.csv"
2024-10-10 10:28:48 +02:00
echo "---------------------------------------"