mirror of
https://github.com/ggml-org/llama.cpp.git
synced 2025-08-14 20:29:41 -04:00
compare-commits.sh: support both llama-bench and test-backend-ops (#14392)
* compare-commits.sh: support both llama-bench and test-backend-ops Signed-off-by: Xiaodong Ye <yeahdongcn@gmail.com> * Speed up the build by specifying -j 12 Signed-off-by: Xiaodong Ye <xiaodong.ye@mthreads.com> * Remove build_number from test-backend-ops db Signed-off-by: Xiaodong Ye <xiaodong.ye@mthreads.com> * Apply suggestion from @JohannesGaessler Co-authored-by: Johannes Gäßler <johannesg@5d6.de> * Refine tool selection logic Signed-off-by: Xiaodong Ye <xiaodong.ye@mthreads.com> * Address review comments Signed-off-by: Xiaodong Ye <xiaodong.ye@mthreads.com> --------- Signed-off-by: Xiaodong Ye <yeahdongcn@gmail.com> Signed-off-by: Xiaodong Ye <xiaodong.ye@mthreads.com> Co-authored-by: Johannes Gäßler <johannesg@5d6.de>
This commit is contained in:
@@ -1,19 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [ $# -lt 2 ]; then
|
||||
echo "usage: ./scripts/compare-commits.sh <commit1> <commit2> [additional llama-bench arguments]"
|
||||
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
|
||||
|
||||
bench_args="${@:3}"
|
||||
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 llama-bench.sqlite > /dev/null
|
||||
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
|
||||
@@ -25,14 +47,14 @@ dir="build-bench"
|
||||
function run {
|
||||
rm -fr ${dir} > /dev/null
|
||||
cmake -B ${dir} -S . ${CMAKE_OPTS} > /dev/null
|
||||
cmake --build ${dir} -t llama-bench > /dev/null
|
||||
${dir}/bin/llama-bench -o sql -oe md $bench_args | sqlite3 llama-bench.sqlite
|
||||
cmake --build ${dir} -t $target -j $(nproc) > /dev/null
|
||||
${dir}/bin/$target $run_args | sqlite3 "$db_file"
|
||||
}
|
||||
|
||||
git checkout $1 > /dev/null
|
||||
git checkout $commit1 > /dev/null
|
||||
run
|
||||
|
||||
git checkout $2 > /dev/null
|
||||
git checkout $commit2 > /dev/null
|
||||
run
|
||||
|
||||
./scripts/compare-llama-bench.py -b $1 -c $2
|
||||
./scripts/compare-llama-bench.py -b $commit1 -c $commit2 --tool $tool -i "$db_file"
|
||||
|
Reference in New Issue
Block a user