diff --git a/src/riscv/.gitignore b/src/riscv/.gitignore index f9910e4c0f6e4323bc606df312782dff5efe3856..9b335d789c9ec9c8e8d301f44585ef4cbc7ac862 100644 --- a/src/riscv/.gitignore +++ b/src/riscv/.gitignore @@ -2,3 +2,4 @@ /perf.data* /*.svg /parse-benchmark +/*.run diff --git a/src/riscv/scripts/benchmark.sh b/src/riscv/scripts/benchmark.sh new file mode 100755 index 0000000000000000000000000000000000000000..d37682c0486ae75358f7e8ad44f39ff63b45fbaa --- /dev/null +++ b/src/riscv/scripts/benchmark.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2024 TriliTech +# +# SPDX-License-Identifier: MIT + +# Build & run jstz on two different commits, +# where the first commit is the "base / master" commit hash +# and the second commit is the current change / MR tested + +set -e + +# Iterations for RISCV and for native are different because usually for native you would want way more runs +USAGE="Usage: -t -i -n -c [ -b : default master ]" + +RISCV_IT="" +NATIVE_IT="" +TX="" +BASE_COMM="master" +CHANGE_COMM="" +NATIVE="" + +while getopts "t:i:n:c:b" OPTION; do + case "$OPTION" in + t) + TX="$OPTARG" + ;; + i) + RISCV_IT="$OPTARG" + ;; + n) + NATIVE_IT="$OPTARG" + ;; + c) + CHANGE_COMM="$OPTARG" + ;; + b) + BASE_COMM="$OPTARG" + ;; + *) + echo "$USAGE" + exit 1 + ;; + esac +done + +if [ -z "$TX" ] || [ -z "$RISCV_IT" ] || [ -z "$NATIVE_IT" ] || [ -z "$CHANGE_COMM" ]; then + echo "$USAGE" + exit 1 +fi + +NATIVE=$(make --silent -C jstz print-native-target | grep -wv make) + +CURR=$(pwd) +RISCV_DIR=$(dirname "$0")/.. +cd "$RISCV_DIR" + +git checkout "$CHANGE_COMM" --quiet + +echo "[INFO]: Run on change commit ($CHANGE_COMM) on ($NATIVE)" +"$RISCV_DIR/scripts/jstz-bench.sh" -t "$TX" -i "$NATIVE_IT" -s -n 2>&1 | tee "CHANGE_NATIVE_$CHANGE_COMM.run" + +echo "[INFO]: Run on change commit ($CHANGE_COMM) on (RISCV)" +"$RISCV_DIR/scripts/jstz-bench.sh" -t "$TX" -i "$RISCV_IT" -s 2>&1 | tee "CHANGE_RISCV_$CHANGE_COMM.run" + +git checkout "$BASE_COMM" --quiet + +echo "[INFO]: Run on base commit ($BASE_COMM) on ($NATIVE)" +"$RISCV_DIR/scripts/jstz-bench.sh" -t "$TX" -i "$NATIVE_IT" -s -n 2>&1 | tee "BASE_NATIVE_$BASE_COMM.run" + +echo "[INFO]: Run on base commit ($BASE_COMM) on (RISCV)" +"$RISCV_DIR/scripts/jstz-bench.sh" -t "$TX" -i "$RISCV_IT" -s 2>&1 | tee "BASE_RISCV_$BASE_COMM.run" + +cd "$CURR"