summaryrefslogtreecommitdiff
path: root/llama.cpp/scripts/compare-commits.sh
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2026-02-12 20:57:17 +0100
committerMitja Felicijan <mitja.felicijan@gmail.com>2026-02-12 20:57:17 +0100
commitb333b06772c89d96aacb5490d6a219fba7c09cc6 (patch)
tree211df60083a5946baa2ed61d33d8121b7e251b06 /llama.cpp/scripts/compare-commits.sh
downloadllmnpc-b333b06772c89d96aacb5490d6a219fba7c09cc6.tar.gz
Engage!
Diffstat (limited to 'llama.cpp/scripts/compare-commits.sh')
-rwxr-xr-xllama.cpp/scripts/compare-commits.sh66
1 files changed, 66 insertions, 0 deletions
diff --git a/llama.cpp/scripts/compare-commits.sh b/llama.cpp/scripts/compare-commits.sh
new file mode 100755
index 0000000..1802d6e
--- /dev/null
+++ b/llama.cpp/scripts/compare-commits.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+
+if [ $# -lt 2 ]; then
+ echo "usage: ./scripts/compare-commits.sh <commit1> <commit2> [tool] [additional arguments]"
+ echo " tool: 'llama-bench' (default) or 'test-backend-ops'"
+ echo " additional arguments: passed to the selected tool"
+ exit 1
+fi
+
+set -e
+set -x
+
+# Parse arguments
+commit1=$1
+commit2=$2
+tool=${3:-llama-bench}
+additional_args="${@:4}"
+
+# Validate tool argument
+if [ "$tool" != "llama-bench" ] && [ "$tool" != "test-backend-ops" ]; then
+ echo "Error: tool must be 'llama-bench' or 'test-backend-ops'"
+ exit 1
+fi
+
+# verify at the start that the compare script has all the necessary dependencies installed
+./scripts/compare-llama-bench.py --check
+
+if ! command -v sqlite3 >/dev/null 2>&1; then
+ echo "Error: sqlite3 is not installed or not in PATH"
+ echo "Please install sqlite3 to use this script"
+ exit 1
+fi
+
+if [ "$tool" = "llama-bench" ]; then
+ db_file="llama-bench.sqlite"
+ target="llama-bench"
+ run_args="-o sql -oe md $additional_args"
+else # test-backend-ops
+ db_file="test-backend-ops.sqlite"
+ target="test-backend-ops"
+ run_args="perf --output sql $additional_args"
+fi
+
+rm -f "$db_file" > /dev/null
+
+# to test a backend, call the script with the corresponding environment variable (e.g. GGML_CUDA=1 ./scripts/compare-commits.sh ...)
+if [ -n "$GGML_CUDA" ]; then
+ CMAKE_OPTS="${CMAKE_OPTS} -DGGML_CUDA=ON"
+fi
+
+dir="build-bench"
+
+function run {
+ rm -fr ${dir} > /dev/null
+ cmake -B ${dir} -S . ${CMAKE_OPTS} > /dev/null
+ cmake --build ${dir} -t $target -j $(nproc) > /dev/null
+ ${dir}/bin/$target $run_args | sqlite3 "$db_file"
+}
+
+git checkout $commit1 > /dev/null
+run
+
+git checkout $commit2 > /dev/null
+run
+
+./scripts/compare-llama-bench.py -b $commit1 -c $commit2 --tool $tool -i "$db_file"