rendering-in-cgi/Framework/external/embree/scripts/run-benchmark.sh
2024-04-23 10:14:24 +02:00

155 lines
5.1 KiB
Bash

#!/bin/bash
## Copyright 2020 Intel Corporation
## SPDX-License-Identifier: Apache-2.0
git log -1
# environment for benchmark client
source ~/benchmark_client.git/env.sh
source ~/system_token.sh
# benchmark configuration
SOURCE_ROOT=`pwd`
PROJECT_NAME="Embree"
NUMACTL="numactl --physcpubind=+0-27 --"
BENCHMARK="--benchmark 10 0 --benchmark_repetitions 11"
THREADS="--set_affinity 1"
MODEL_DIR="${HOME}/embree-models"
export LD_LIBRARY_PATH=`pwd`/build:${LD_LIBRARY_PATH}
cd build
rm -f *.json
BUILD_SCENES_FILE="../tutorials/models/build.bench"
TRACE_SCENES_FILE="../tutorials/models/trace.bench"
RUN_BUILD_BENCHMARKS=true
RUN_TRACE_BENCHMARKS=true
RUN_TUT_BENCHMARKS=true
################################# PLEASE READ ##################################
#
# Note that suites and subsuites must exist in the database _before_ attempting
# insertion of results. This is intentional! You should think carefully about
# your [suite -> subsuite -> benchmark] hierarchy and definitions. These should
# be stable over time (especially for suites and subsuites) to facilitate
# long-term comparisons.
#
# These can be inserted using the benchmark client, through the "insert suite"
# and "insert subsuite" commands. Ask for help if you have questions.
#
################################# PLEASE READ ###################################
initContext() {
if [ -z "$HAVE_CONTEXT" ]; then
HAVE_CONTEXT=1
benny insert code_context "${PROJECT_NAME}" ${SOURCE_ROOT} --save-json code_context.json
benny insert run_context ${TOKEN} ./code_context.json --save-json run_context.json
fi
}
####################
# build benchmarks #
####################
if ${RUN_BUILD_BENCHMARKS}; then
SUITE_NAME="Build"
benny insert suite ${PROJECT_NAME} ${SUITE_NAME}
## subsuites of build benchmarks
subsuites="update_dynamic_deformable \
create_dynamic_dynamic \
create_static_static \
create_high_quality_static_static"
while IFS= read -r line
do
IFS=' ' read -r -a array <<< "$line"
NAME="${array[0]}"
if [[ $NAME == '#'* ]]; then
continue
fi
SCENE=${MODEL_DIR}/"${array[1]}"
unset "array[0]"
unset "array[1]"
for i in ${subsuites}
do
SUBSUITE_NAME=$i
benny insert subsuite ${PROJECT_NAME} ${SUITE_NAME} ${SUBSUITE_NAME}
initContext
echo "${NUMACTL} ./buildbench --benchmark_out=results-${SUITE_NAME}-${SUBSUITE_NAME}.json ${BENCHMARK} --benchmark_type ${SUBSUITE_NAME} -i ${SCENE} ${array[@]} ${THREADS}"
${NUMACTL} ./buildbench --benchmark_out=results-${SUITE_NAME}-${SUBSUITE_NAME}.json ${BENCHMARK} --benchmark_type ${SUBSUITE_NAME} -i ${SCENE} ${array[@]} ${THREADS}
benny insert googlebenchmark ./run_context.json ${SUITE_NAME} ${SUBSUITE_NAME} ./results-${SUITE_NAME}-${SUBSUITE_NAME}.json
done
done < "${BUILD_SCENES_FILE}"
fi
####################
# trace benchmarks #
####################
if ${RUN_TRACE_BENCHMARKS}; then
SUITE_NAME="Trace"
benny insert suite ${PROJECT_NAME} ${SUITE_NAME}
while IFS= read -r line
do
IFS=' ' read -r -a array <<< "$line"
NAME="${array[0]}"
if [[ $NAME == '#'* ]]; then
continue
fi
SCENE=${MODEL_DIR}/"${array[1]}"
unset "array[0]"
unset "array[1]"
SUBSUITE_NAME="Viewer"
benny insert subsuite ${PROJECT_NAME} ${SUITE_NAME} ${SUBSUITE_NAME}
initContext
echo "${NUMACTL} ./viewer --benchmark_out=results-${SUITE_NAME}-${SUBSUITE_NAME}.json ${BENCHMARK} -c ${SCENE} ${array[@]} ${THREADS} --size 256 256"
${NUMACTL} ./viewer --benchmark_out=results-${SUITE_NAME}-${SUBSUITE_NAME}.json ${BENCHMARK} -c ${SCENE} ${array[@]} ${THREADS}
benny insert googlebenchmark ./run_context.json ${SUITE_NAME} ${SUBSUITE_NAME} ./results-${SUITE_NAME}-${SUBSUITE_NAME}.json
SUBSUITE_NAME="Pathtracer"
benny insert subsuite ${PROJECT_NAME} ${SUITE_NAME} ${SUBSUITE_NAME}
initContext
echo "${NUMACTL} ./pathtracer --benchmark_out=results-${SUITE_NAME}-${SUBSUITE_NAME}.json ${BENCHMARK} -c ${SCENE} ${array[@]} ${THREADS} --size 256 256 --spp 32"
${NUMACTL} ./pathtracer --benchmark_out=results-${SUITE_NAME}-${SUBSUITE_NAME}.json ${BENCHMARK} -c ${SCENE} ${array[@]} ${THREADS}
benny insert googlebenchmark ./run_context.json ${SUITE_NAME} ${SUBSUITE_NAME} ./results-${SUITE_NAME}-${SUBSUITE_NAME}.json
done < "${TRACE_SCENES_FILE}"
if ${RUN_TUT_BENCHMARKS}; then
SUBSUITE_NAME="Tutorials"
benny insert subsuite ${PROJECT_NAME} ${SUITE_NAME} ${SUBSUITE_NAME}
initContext
tutorials="triangle_geometry \
grid_geometry \
curve_geometry \
displacement_geometry \
hair_geometry \
instanced_geometry \
intersection_filter \
point_geometry \
subdivision_geometry \
user_geometry"
for i in ${tutorials}
do
${NUMACTL} ./${i} --benchmark_out=results-${SUITE_NAME}-${SUBSUITE_NAME}.json ${BENCHMARK} ${THREADS}
benny insert googlebenchmark ./run_context.json ${SUITE_NAME} ${SUBSUITE_NAME} ./results-${SUITE_NAME}-${SUBSUITE_NAME}.json
done
fi
fi