Enable train size to SPEC CPU benchmarks.
Some checks failed
CI / build:qemu-lagarto-ox (push) Has been cancelled

This commit is contained in:
DYLAN BAUTISTA CASES 2025-04-08 11:56:00 +02:00
parent 492c540bf5
commit f05c04dee8
5 changed files with 111 additions and 7 deletions

View File

@ -43,8 +43,8 @@ final: prev:
};
bitstreams = builtins.fetchGit {
url = "git@bscpm03.bsc.es:rarias/bitstreams.git";
rev = "2f899627a226890c6f9820aa44e34c2ecea03faf";
url = "git@gitlab-internal.bsc.es:rarias/bitstreams.git";
rev = "14a41bae426e8d2a870d335492a552981941a529";
};
# Baremetal tests for standalone FPGA
@ -54,11 +54,11 @@ final: prev:
url = "git@gitlab-internal.bsc.es:hwdesign/rtl/core-tile/sa-fpga.git";
rev = "720be4f1f5dd0ef963135992578be2ab55fb5537";
ref = "main";
};
};
dontConfigure = true;
patches = [
#./patches/sa-fpga-crt.patch
#./patches/sa-fpga-text-address.patch
./patches/sa-fpga-crt.patch
./patches/sa-fpga-text-address.patch
./patches/sa-fpga-uart.patch
./patches/sa-fpga-plic-registers.patch
./patches/sa-fpga-add-plic-claim-test.patch
@ -96,4 +96,15 @@ final: prev:
dontFixup = true;
hardeningDisable = [ "all" ];
};
#pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [(python-final: python-prev: {
# numpy = python-prev.numpy.overridePythonAttrs (oldAttrs: {
# disabledTests = [
# "TestStuff::test_many_source_for_filename_calls"
# ] ++ oldAttrs.disabledTests;
# });
# cherrypy = python-prev.cherrypy.overridePythonAttrs (oldAttrs: {
# doCheck = false;
# });
#})];
}

View File

@ -10,7 +10,7 @@
, autoPatchelfHook
, libxcrypt-legacy
, lib
, benchSize ? "test"
, benchSize ? "train"
}:
stdenv.mkDerivation rec {

View File

@ -0,0 +1,71 @@
#!/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=train
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"
bench_out="$wd/$name.csv"
rm -rf "$bench"
cp -r "$srcbench" "$bench"
chmod +w -R "$bench"
rundir="$bench/run/run_${benchtune}_${benchsize}_nix-m64.0000"
echo $rundir
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}' \
"$rundir/speccmds.out" > "$bench_out"
cat "$bench_out"
# Accumulate in main CSV
cat "$bench_out" >> "$wd/time.csv"
# Erase intermediate files as they occupy RAM.
rm -rf "$bench"
done
echo "--- RESULTS in $wd/time.csv ---"
cat "$wd/time.csv"
echo "---------------------------------------"

View File

@ -26,7 +26,7 @@ wd="$cwd/spec"
mkdir -p "$wd"
benchniter=1
benchsize=test
benchsize=train
benchtune=base
echo "--- Placing output in $wd ---"
@ -42,6 +42,7 @@ for srcbench in $SPEC/benchspec/CPU/*; do
chmod +w -R "$bench"
rundir="$bench/run/run_${benchtune}_${benchsize}_nix-m64.0000"
echo $rundir
sed -i '/^-C/d' "$rundir/speccmds.cmd"
echo "--- Running $name for $benchniter iterations ---"
(

View File

@ -0,0 +1,21 @@
{
stdenv
, bash
}:
stdenv.mkDerivation {
name = "speclaunch-vm";
src = ./launcher-vm.sh;
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
installPhase = ''
mkdir -p $out/bin
cp $src $out/bin/speclaunch
chmod +x $out/bin/speclaunch
'';
buildInputs = [ bash ];
enableParallelBuilding = false;
hardeningDisable = [ "all" ];
dontStrip = true;
}