From a15a8f87b8bd18940be199a9c9a6a839e4c39963 Mon Sep 17 00:00:00 2001 From: Akos Denke Date: Wed, 5 Jun 2024 09:47:04 +0200 Subject: [PATCH 1/2] Add build-opencv.sh script and use it from benchmarks. --- scripts/benchmark/README.md | 12 ++-- scripts/benchmark/build.sh | 109 +++++++++++++++------------- scripts/benchmark/push.sh | 29 ++++---- scripts/build-opencv.sh | 137 ++++++++++++++++++++++++++++++++++++ scripts/build.sh | 8 ++- 5 files changed, 226 insertions(+), 69 deletions(-) create mode 100755 scripts/build-opencv.sh diff --git a/scripts/benchmark/README.md b/scripts/benchmark/README.md index 13751f349..275d5971a 100644 --- a/scripts/benchmark/README.md +++ b/scripts/benchmark/README.md @@ -12,10 +12,10 @@ First, you need a Linux x86 machine to build this. Next, to build for Android, you'll need [Android NDK](https://developer.android.com/ndk/). Also, the OpenCV 4.9.0 source needs to be downloaded and patched. Assuming CWD is the root of OpenCV's -source directory please run : +source directory please run: ``` -patch -p1 \ -NDK_TOOLCHAIN_FILE=/build/cmake/android.toolchain.cmake \ +CMAKE_TOOLCHAIN_FILE=/build/cmake/android.toolchain.cmake \ ./build.sh ``` If the `CUSTOM_CMAKE_OPTIONS` environment variable is set a third flavour is also build, next to vanilla OpenCV and OpenCV+KleidiCV with default options. The variable specifies the extra CMake variables for this -custom build. +custom build and the `CUSTOM_BUILD_SUFFIX` environment variable can alter the `custom` build name suffix. +(If the `CUSTOM_BUILD_SUFFIX` was defined for the build, it should be provided to the further scripts as well, +like `push` and `run_*`.) Then push the test binaries to the phone (replace 9A9A9A9A with your actual device ID, or skip it if you have only one phone attached): ``` diff --git a/scripts/benchmark/build.sh b/scripts/benchmark/build.sh index 7a102862e..a913687be 100755 --- a/scripts/benchmark/build.sh +++ b/scripts/benchmark/build.sh @@ -3,74 +3,85 @@ # SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates # # SPDX-License-Identifier: Apache-2.0 +# +# Builds the perf benchmarks for OpenCV with Android target. +# +# The following builds will be created: +# * opencv-vanilla: (without KleidiCV) +# * opencv-kleidicv: (with KleidiCV) +# * [opencv-kleidicv-]: (with KleidiCV and CUSTOM_CMAKE_OPTIONS, +# but only if the CUSTOM_CMAKE_OPTIONS were provided) +# +# It uses the scripts/build-opencv.sh. See that script for detailed behavior and more options. +# Note that the OPENCV_PATH (for OpenCV) and CMAKE_TOOLCHAIN_FILE (for Android NDK) +# variables should be set as well. +# +# Options: +# CUSTOM_CMAKE_OPTIONS: If provided, an extra build will be created with KleidiCV. +# CUSTOM_BUILD_SUFFIX: Build name suffix for the extra build. Defaults to 'custom'. +# +# ------------------------------------------------------------------------------ set -exu -if [[ -z "${OPENCV_PATH:-}" ]]; then - echo "Please specify the local path to a checked out (cloned) OpenCV repo in the OPENCV_PATH env variable" +if [[ ! -f "${CMAKE_TOOLCHAIN_FILE:-}" ]]; then + echo "Please specify the path of the Android NDK toolchain file (e.g. android-ndk-r26d/build/cmake/android.toolchain.cmake) in the CMAKE_TOOLCHAIN_FILE env variable" exit 1 fi -if [ ! -f "${NDK_TOOLCHAIN_FILE:-}" ]; then - echo "Please specify the path of the Android NDK toolchain file (e.g. android-ndk-r26d/build/cmake/android.toolchain.cmake) in the NDK_TOOLCHAIN_FILE env variable" - exit 1 -fi +# ------------------------------------------------------------------------------ -SCRIPT_PATH="$(realpath "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")" -KLEIDICV_PATH="${SCRIPT_PATH}"/../.. -BASE_BUILD_PATH="${SCRIPT_PATH}"/build +BENCHMARK_SCRIPT_PATH="$(realpath "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")" +SCRIPT_PATH="${BENCHMARK_SCRIPT_PATH}/.." +KLEIDICV_SOURCE_PATH="$(realpath "${SCRIPT_PATH}/..")" -cmake -S "${OPENCV_PATH}" \ - -B "${BASE_BUILD_PATH}"/vanilla \ - -G Ninja \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_STANDARD=14 \ +export COMMON_EXTRA_CMAKE_ARGS="\ + -DANDROID_ABI=arm64-v8a \ -DBUILD_ANDROID_EXAMPLES=OFF \ + -DCMAKE_CXX_STANDARD=14 \ -DBUILD_TESTS=OFF \ -DBUILD_PERF_TESTS=ON \ -DOPENCV_DISABLE_THREAD_SUPPORT=ON \ - -DCMAKE_TOOLCHAIN_FILE=$(readlink -f "${NDK_TOOLCHAIN_FILE}") \ - -DANDROID_ABI=arm64-v8a \ -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON \ - -DWITH_KLEIDICV=OFF +" -ninja -C "${BASE_BUILD_PATH}"/vanilla opencv_perf_imgproc opencv_perf_core +# ------------------------------------------------------------------------------ -cmake -S "${OPENCV_PATH}" \ - -B "${BASE_BUILD_PATH}"/kleidicv \ - -G Ninja \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_STANDARD=14 \ - -DBUILD_ANDROID_EXAMPLES=OFF \ - -DBUILD_TESTS=OFF \ - -DBUILD_PERF_TESTS=ON \ - -DOPENCV_DISABLE_THREAD_SUPPORT=ON \ - -DCMAKE_TOOLCHAIN_FILE=$(readlink -f "${NDK_TOOLCHAIN_FILE}") \ - -DANDROID_ABI=arm64-v8a \ - -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON \ - -DWITH_KLEIDICV=ON \ - -DKLEIDICV_SOURCE_PATH=$(realpath "${KLEIDICV_PATH}") +export BUILD_ID="opencv-vanilla" +export EXTRA_CMAKE_ARGS="\ + ${COMMON_EXTRA_CMAKE_ARGS} \ + -DWITH_KLEIDICV=OFF \ +" + +"${SCRIPT_PATH}"/build-opencv.sh "opencv_perf_imgproc opencv_perf_core" -ninja -C "${BASE_BUILD_PATH}"/kleidicv opencv_perf_imgproc opencv_perf_core +# ------------------------------------------------------------------------------ + +export BUILD_ID="opencv-kleidicv" +export EXTRA_CMAKE_ARGS="\ + ${COMMON_EXTRA_CMAKE_ARGS} \ + -DWITH_KLEIDICV=ON \ + -DKLEIDICV_SOURCE_PATH=${KLEIDICV_SOURCE_PATH} \ +" + +"${SCRIPT_PATH}"/build-opencv.sh "opencv_perf_imgproc opencv_perf_core" + +# ------------------------------------------------------------------------------ if [[ -z "${CUSTOM_CMAKE_OPTIONS:-}" ]]; then exit 0; fi -cmake -S "${OPENCV_PATH}" \ - -B "${BASE_BUILD_PATH}"/kleidicv_custom \ - -G Ninja \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_STANDARD=14 \ - -DBUILD_ANDROID_EXAMPLES=OFF \ - -DBUILD_TESTS=OFF \ - -DBUILD_PERF_TESTS=ON \ - -DOPENCV_DISABLE_THREAD_SUPPORT=ON \ - -DCMAKE_TOOLCHAIN_FILE=$(readlink -f "${NDK_TOOLCHAIN_FILE}") \ - -DANDROID_ABI=arm64-v8a \ - -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON \ - -DWITH_KLEIDICV=ON \ - -DKLEIDICV_SOURCE_PATH=$(realpath "${KLEIDICV_PATH}") \ - ${CUSTOM_CMAKE_OPTIONS} +export BUILD_ID="opencv-kleidicv-${CUSTOM_BUILD_SUFFIX:-custom}" +export EXTRA_CMAKE_ARGS="\ + ${COMMON_EXTRA_CMAKE_ARGS} \ + -DWITH_KLEIDICV=ON \ + -DKLEIDICV_SOURCE_PATH=${KLEIDICV_SOURCE_PATH} \ + ${CUSTOM_CMAKE_OPTIONS} \ +" + +"${SCRIPT_PATH}"/build-opencv.sh "opencv_perf_imgproc opencv_perf_core" -ninja -C "${BASE_BUILD_PATH}"/kleidicv_custom opencv_perf_imgproc opencv_perf_core +# ------------------------------------------------------------------------------ +# End of script +# ------------------------------------------------------------------------------ diff --git a/scripts/benchmark/push.sh b/scripts/benchmark/push.sh index d9c8876ce..76ff6b296 100755 --- a/scripts/benchmark/push.sh +++ b/scripts/benchmark/push.sh @@ -5,7 +5,9 @@ # SPDX-License-Identifier: Apache-2.0 # Environment variables used: -# ADB: adb executable. Must be set. +# ADB: adb executable. Must be set. +# BUILD_ROOT_PATH: Directory of the different builds to push. +# CUSTOM_BUILD_SUFFIX: Try this build suffix for the extra custom build. Defaults to 'custom'. # Note: # Use standard ADB env vars (like ANDROID_SERIAL, ANDROID_ADB_SERVER_ADDRESS and # ANDROID_ADB_SERVER_PORT) to customize ADB calls. @@ -17,21 +19,24 @@ if [[ -z "${ADB:-}" ]]; then exit 1 fi -SCRIPT_PATH="$(realpath "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")" +BENCHMARK_SCRIPT_PATH="$(realpath "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")" +BUILD_ROOT_PATH="${BUILD_ROOT_PATH:-"${BENCHMARK_SCRIPT_PATH}/../../build"}" +CUSTOM_BUILD_SUFFIX="${CUSTOM_BUILD_SUFFIX:-custom}" DEV_DIR=/data/local/tmp -"${ADB}" push "${SCRIPT_PATH}"/build/vanilla/bin/opencv_perf_core ${DEV_DIR}/opencv_perf_core_vanilla -"${ADB}" push "${SCRIPT_PATH}"/build/vanilla/bin/opencv_perf_imgproc ${DEV_DIR}/opencv_perf_imgproc_vanilla +"${ADB}" push "${BUILD_ROOT_PATH}"/opencv-vanilla/bin/opencv_perf_core ${DEV_DIR}/opencv_perf_core_vanilla +"${ADB}" push "${BUILD_ROOT_PATH}"/opencv-vanilla/bin/opencv_perf_imgproc ${DEV_DIR}/opencv_perf_imgproc_vanilla -"${ADB}" push "${SCRIPT_PATH}"/build/kleidicv/bin/opencv_perf_core ${DEV_DIR}/opencv_perf_core_kleidicv -"${ADB}" push "${SCRIPT_PATH}"/build/kleidicv/bin/opencv_perf_imgproc ${DEV_DIR}/opencv_perf_imgproc_kleidicv +"${ADB}" push "${BUILD_ROOT_PATH}"/opencv-kleidicv/bin/opencv_perf_core ${DEV_DIR}/opencv_perf_core_kleidicv +"${ADB}" push "${BUILD_ROOT_PATH}"/opencv-kleidicv/bin/opencv_perf_imgproc ${DEV_DIR}/opencv_perf_imgproc_kleidicv -if [[ -f "${SCRIPT_PATH}"/build/kleidicv_custom/bin/opencv_perf_core && -f "${SCRIPT_PATH}"/build/kleidicv_custom/bin/opencv_perf_imgproc ]]; then - "${ADB}" push "${SCRIPT_PATH}"/build/kleidicv_custom/bin/opencv_perf_core ${DEV_DIR}/opencv_perf_core_custom - "${ADB}" push "${SCRIPT_PATH}"/build/kleidicv_custom/bin/opencv_perf_imgproc ${DEV_DIR}/opencv_perf_imgproc_custom +if [[ -f "${BUILD_ROOT_PATH}"/opencv-kleidicv-${CUSTOM_BUILD_SUFFIX}/bin/opencv_perf_core ]] && \ + [[ -f "${BUILD_ROOT_PATH}"/opencv-kleidicv-${CUSTOM_BUILD_SUFFIX}/bin/opencv_perf_imgproc ]]; then + "${ADB}" push "${BUILD_ROOT_PATH}"/opencv-kleidicv-${CUSTOM_BUILD_SUFFIX}/bin/opencv_perf_core ${DEV_DIR}/opencv_perf_core_custom + "${ADB}" push "${BUILD_ROOT_PATH}"/opencv-kleidicv-${CUSTOM_BUILD_SUFFIX}/bin/opencv_perf_imgproc ${DEV_DIR}/opencv_perf_imgproc_custom fi -"${ADB}" push "${SCRIPT_PATH}"/perf_test_op.sh ${DEV_DIR}/ -"${ADB}" push "${SCRIPT_PATH}"/run_benchmarks_FHD.sh ${DEV_DIR}/ -"${ADB}" push "${SCRIPT_PATH}"/run_benchmarks_4K.sh ${DEV_DIR}/ +"${ADB}" push "${BENCHMARK_SCRIPT_PATH}"/perf_test_op.sh ${DEV_DIR}/ +"${ADB}" push "${BENCHMARK_SCRIPT_PATH}"/run_benchmarks_FHD.sh ${DEV_DIR}/ +"${ADB}" push "${BENCHMARK_SCRIPT_PATH}"/run_benchmarks_4K.sh ${DEV_DIR}/ diff --git a/scripts/build-opencv.sh b/scripts/build-opencv.sh new file mode 100755 index 000000000..85ea0973a --- /dev/null +++ b/scripts/build-opencv.sh @@ -0,0 +1,137 @@ +#!/usr/bin/env bash +# +# SPDX-FileCopyrightText: 2024 Arm Limited and/or its affiliates +# +# SPDX-License-Identifier: Apache-2.0 +# +# Builds a given target for OpenCV. +# +# The build artifacts are placed in the `build` directory. +# +# Arguments: +# 1: Target to build. Defaults to default target'. +# +# To target Android devices the following command can be used: +# BUILD_ID=opencv-android \ +# OPENCV_PATH=/path/to/opencv \ +# CMAKE_TOOLCHAIN_FILE=/path/to/android-ndk/build/cmake/android.toolchain.cmake \ +# EXTRA_CMAKE_ARGS="-DANDROID_ABI=arm64-v8a" \ +# scripts/build-opencv.sh +# +# To target Android devices with KleidiCV the following command can be used: +# BUILD_ID=opencv-android-kleidicv \ +# OPENCV_PATH=/path/to/opencv \ +# CMAKE_TOOLCHAIN_FILE=/path/to/android-ndk/build/cmake/android.toolchain.cmake \ +# EXTRA_CMAKE_ARGS="-DANDROID_ABI=arm64-v8a -DWITH_KLEIDICV=ON" \ +# scripts/benchmark/build-opencv.sh +# +# Options: +# BUILD_ID: Identifier of the build, defaults to 'opencv'. +# BUILD_PATH: Directory for all the files associated with a build. +# CLEAN: Clean builds if set to 'ON'. Defaults to 'OFF'. +# CMAKE: Full path of the CMake executable. +# CMAKE_BUILD_TYPE: Specifies the build type. Defaults to 'Release'. +# CMAKE_CROSSCOMPILING_EMULATOR: If set, it is the full path to an emulator that can run the binary target. +# CMAKE_CXX_FLAGS: General C++ flags for all compiler commands. +# CMAKE_EXE_LINKER_FLAGS: General flags for all linker commands for executables. +# CMAKE_GENERATOR: Generator to use, see cmake documentation for details. Defaults to 'Ninja'. +# CMAKE_SHARED_LINKER_FLAGS: General flags for all linker commands for shared libraries. +# CMAKE_TOOLCHAIN_FILE: If set, it is the full path to the CMake toolchain file. +# CMAKE_VERBOSE_MAKEFILE: Enables verbose logs during builds. Defaults to 'OFF'. +# EXTRA_CMAKE_ARGS: Any additional args to pass to CMake. +# SOURCE_PATH: Path of KleidiCV source directory. Defaults to parent directory of this script. +# OPENCV_PATH: Path of OpenCV source directory. Mandatory! +# ------------------------------------------------------------------------------ + +set -exu + +# ------------------------------------------------------------------------------ +# Automatic configuration +# ------------------------------------------------------------------------------ + +SCRIPT_PATH="$(realpath "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")" + +: "${BUILD_ID:=opencv}" +: "${BUILD_PATH:=${SCRIPT_PATH}/../build/${BUILD_ID}}" +: "${CLEAN:=OFF}" +: "${CMAKE:=cmake}" +: "${CMAKE_BUILD_TYPE:=Release}" +: "${CMAKE_CROSSCOMPILING_EMULATOR:=}" +: "${CMAKE_CXX_FLAGS:=}" +: "${CMAKE_EXE_LINKER_FLAGS:=}" +: "${CMAKE_GENERATOR:=Ninja}" +: "${CMAKE_SHARED_LINKER_FLAGS:=}" +: "${CMAKE_TOOLCHAIN_FILE:=}" +: "${CMAKE_VERBOSE_MAKEFILE:=OFF}" +: "${EXTRA_CMAKE_ARGS:=}" +: "${SOURCE_PATH:="$(realpath "${SCRIPT_PATH}"/../)"}" + +if [[ -z "${OPENCV_PATH:-}" ]]; then + echo "Please specify the local path to a checked out (cloned) OpenCV repo in the OPENCV_PATH env variable" + exit 1 +fi + +IFS=' ' read -r -a CMAKE_TARGETS <<< "${1:-}" +IFS=' ' read -r -a EXTRA_CMAKE_ARGS_ARRAY <<< "${EXTRA_CMAKE_ARGS}" + +# ------------------------------------------------------------------------------ +# Configuration +# ------------------------------------------------------------------------------ + +if [[ "${CLEAN}" == "ON" ]]; then + rm -rf "${BUILD_PATH}" +fi + +mkdir -p "${BUILD_PATH}" +BUILD_PATH="$(realpath "${BUILD_PATH}")" + +cmake_config_args=( + -Wno-dev + -S "${OPENCV_PATH}" + -B "${BUILD_PATH}" + -G "${CMAKE_GENERATOR}" + "-DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE_MAKEFILE}" + "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}" + "-DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}" + "-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}" + "-DCMAKE_CXX_STANDARD=14" + "-DOPENCV_DISABLE_THREAD_SUPPORT=ON" +) + +if [[ -n "${CMAKE_CROSSCOMPILING_EMULATOR}" ]]; then + cmake_config_args+=( + "-DCMAKE_CROSSCOMPILING_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" + ) +fi + +if [[ -n "${CMAKE_TOOLCHAIN_FILE}" ]]; then + cmake_config_args+=( + "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}" + ) +fi + +if [[ -n "${EXTRA_CMAKE_ARGS_ARRAY-}" ]]; then + cmake_config_args+=("${EXTRA_CMAKE_ARGS_ARRAY[@]}") +fi + +"${CMAKE}" "${cmake_config_args[@]}" + +# ------------------------------------------------------------------------------ +# Build +# ------------------------------------------------------------------------------ + +cmake_build_args=( + --build "${BUILD_PATH}" + --parallel +) + +if [[ -n "${CMAKE_TARGETS[*]}" ]]; then + cmake_build_args+=(--target "${CMAKE_TARGETS[@]}") +fi + +"${CMAKE}" "${cmake_build_args[@]}" + +# ------------------------------------------------------------------------------ +# End of script +# ------------------------------------------------------------------------------ diff --git a/scripts/build.sh b/scripts/build.sh index 1d2d86dc0..d57df9f31 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -59,8 +59,7 @@ SCRIPT_PATH="$(realpath "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")" : "${EXTRA_CMAKE_ARGS:=}" : "${SOURCE_PATH:="$(realpath "${SCRIPT_PATH}"/../)"}" -CMAKE_TARGET="${1:-kleidicv}" - +IFS=' ' read -r -a CMAKE_TARGETS <<< "${1:-kleidicv}" IFS=' ' read -r -a EXTRA_CMAKE_ARGS_ARRAY <<< "${EXTRA_CMAKE_ARGS}" # ------------------------------------------------------------------------------ @@ -121,9 +120,12 @@ fi cmake_build_args=( --build "${BUILD_PATH}" --parallel - --target "${CMAKE_TARGET}" ) +if [[ -n "${CMAKE_TARGETS[*]}" ]]; then + cmake_build_args+=(--target "${CMAKE_TARGETS[@]}") +fi + "${CMAKE}" "${cmake_build_args[@]}" # ------------------------------------------------------------------------------ -- GitLab From 0a4943c6d6740fe170895801060108f9218b52ca Mon Sep 17 00:00:00 2001 From: Akos Denke Date: Wed, 12 Jun 2024 13:22:34 +0200 Subject: [PATCH 2/2] Update benchmark run scripts --- scripts/benchmark/perf_test_op.sh | 59 +++++++++------- scripts/benchmark/push.sh | 4 +- scripts/benchmark/run_benchmarks_4K.sh | 92 +++++++++++++------------ scripts/benchmark/run_benchmarks_FHD.sh | 92 +++++++++++++------------ 4 files changed, 132 insertions(+), 115 deletions(-) diff --git a/scripts/benchmark/perf_test_op.sh b/scripts/benchmark/perf_test_op.sh index a06f68b7b..881d6114d 100755 --- a/scripts/benchmark/perf_test_op.sh +++ b/scripts/benchmark/perf_test_op.sh @@ -6,12 +6,13 @@ set -eu -CPU_NUMBER=$1 -THERMAL_ZONE_ID=$2 -DISP_NAME=$3 -PERF_TEST_BINARY_BASENAME=$4 -GTEST_FILTER=$5 -GTEST_PARAM_FILTER=$6 +CUSTOM_BUILD_SUFFIX=$1 +CPU_NUMBER=$2 +THERMAL_ZONE_ID=$3 +DISP_NAME=$4 +PERF_TEST_BINARY_BASENAME=$5 +GTEST_FILTER=$6 +GTEST_PARAM_FILTER=$7 DEV_DIR=/data/local/tmp @@ -30,26 +31,35 @@ wait_for_cooldown() { FNAME=$$ -wait_for_cooldown ->&2 taskset ${CPU_MASK} ${DEV_DIR}/"${PERF_TEST_BINARY_BASENAME}"_vanilla --perf_min_samples=100 --gtest_output=json:${DEV_DIR}/${FNAME}_vanilla --gtest_filter="${GTEST_FILTER}" --gtest_param_filter="${GTEST_PARAM_FILTER}" - -wait_for_cooldown ->&2 taskset ${CPU_MASK} ${DEV_DIR}/"${PERF_TEST_BINARY_BASENAME}"_kleidicv --perf_min_samples=100 --gtest_output=json:${DEV_DIR}/${FNAME}_kleidicv --gtest_filter="${GTEST_FILTER}" --gtest_param_filter="${GTEST_PARAM_FILTER}" - -if [ -f ${DEV_DIR}/"${PERF_TEST_BINARY_BASENAME}"_custom ]; then +run_test() { wait_for_cooldown - >&2 taskset ${CPU_MASK} ${DEV_DIR}/"${PERF_TEST_BINARY_BASENAME}"_custom --perf_min_samples=100 --gtest_output=json:${DEV_DIR}/${FNAME}_custom --gtest_filter="${GTEST_FILTER}" --gtest_param_filter="${GTEST_PARAM_FILTER}" + >&2 taskset ${CPU_MASK} \ + ${DEV_DIR}/"${PERF_TEST_BINARY_BASENAME}"_${1} \ + --perf_min_samples=100 \ + --gtest_output=json:${DEV_DIR}/${FNAME}_${1} \ + --gtest_filter="${GTEST_FILTER}" \ + --gtest_param_filter="${GTEST_PARAM_FILTER}" +} + +run_test vanilla +run_test kleidicv +if [[ -f ${DEV_DIR}/"${PERF_TEST_BINARY_BASENAME}"_kleidicv_$CUSTOM_BUILD_SUFFIX ]]; then + run_test kleidicv_$CUSTOM_BUILD_SUFFIX fi echo ${PREV_FREQ_GOVERNOR} > /sys/devices/system/cpu/cpu${CPU_NUMBER}/cpufreq/scaling_governor if [[ ${CDEV_TRANSITION_COUNT} != $(cat /sys/devices/virtual/thermal/thermal_zone${THERMAL_ZONE_ID}/cdev0/stats/total_trans) ]]; then - >&2 echo CPU throttling happened, exiting... + >&2 echo "BENCHMARK ERROR: CPU throttling happened, exiting..." exit 1 fi if ! grep -q "\"tests\": 1," ${DEV_DIR}/${FNAME}_vanilla; then - >&2 echo More than one test case was triggered, exiting + if grep -q "\"tests\": 0," ${DEV_DIR}/${FNAME}_vanilla; then + >&2 echo "BENCHMARK ERROR: No test case was triggered, exiting..." + else + >&2 echo "BENCHMARK ERROR: More than one test case was triggered, exiting..." + fi exit 1 fi @@ -61,14 +71,17 @@ get_gstddev() { sed -n s/\"gstddev\"://p ${1} | tr -d \" | tr -d ',' | tr -d ' ' } -RES="${DISP_NAME}\t$(get_mean ${DEV_DIR}/${FNAME}_vanilla)\t$(get_gstddev ${DEV_DIR}/${FNAME}_vanilla)" -rm ${DEV_DIR}/${FNAME}_vanilla -RES="${RES}\t$(get_mean ${DEV_DIR}/${FNAME}_kleidicv)\t$(get_gstddev ${DEV_DIR}/${FNAME}_kleidicv)" -rm ${DEV_DIR}/${FNAME}_kleidicv +RES="${DISP_NAME}\t" + +collect_run_results() { + RES+="\t$(get_mean ${DEV_DIR}/${FNAME}_${1})\t$(get_gstddev ${DEV_DIR}/${FNAME}_${1})" + rm ${DEV_DIR}/${FNAME}_${1} +} -if [ -f ${DEV_DIR}/${FNAME}_custom ]; then - RES="${RES}\t$(get_mean ${DEV_DIR}/${FNAME}_custom)\t$(get_gstddev ${DEV_DIR}/${FNAME}_custom)" - rm ${DEV_DIR}/${FNAME}_custom +collect_run_results vanilla +collect_run_results kleidicv +if [[ -f ${DEV_DIR}/${FNAME}_$CUSTOM_BUILD_SUFFIX ]]; then + collect_run_results kleidicv_$CUSTOM_BUILD_SUFFIX fi printf "${RES}" diff --git a/scripts/benchmark/push.sh b/scripts/benchmark/push.sh index 76ff6b296..a905c56d9 100755 --- a/scripts/benchmark/push.sh +++ b/scripts/benchmark/push.sh @@ -33,8 +33,8 @@ DEV_DIR=/data/local/tmp if [[ -f "${BUILD_ROOT_PATH}"/opencv-kleidicv-${CUSTOM_BUILD_SUFFIX}/bin/opencv_perf_core ]] && \ [[ -f "${BUILD_ROOT_PATH}"/opencv-kleidicv-${CUSTOM_BUILD_SUFFIX}/bin/opencv_perf_imgproc ]]; then - "${ADB}" push "${BUILD_ROOT_PATH}"/opencv-kleidicv-${CUSTOM_BUILD_SUFFIX}/bin/opencv_perf_core ${DEV_DIR}/opencv_perf_core_custom - "${ADB}" push "${BUILD_ROOT_PATH}"/opencv-kleidicv-${CUSTOM_BUILD_SUFFIX}/bin/opencv_perf_imgproc ${DEV_DIR}/opencv_perf_imgproc_custom + "${ADB}" push "${BUILD_ROOT_PATH}"/opencv-kleidicv-${CUSTOM_BUILD_SUFFIX}/bin/opencv_perf_core ${DEV_DIR}/opencv_perf_core_kleidicv_${CUSTOM_BUILD_SUFFIX} + "${ADB}" push "${BUILD_ROOT_PATH}"/opencv-kleidicv-${CUSTOM_BUILD_SUFFIX}/bin/opencv_perf_imgproc ${DEV_DIR}/opencv_perf_imgproc_kleidicv_${CUSTOM_BUILD_SUFFIX} fi "${ADB}" push "${BENCHMARK_SCRIPT_PATH}"/perf_test_op.sh ${DEV_DIR}/ diff --git a/scripts/benchmark/run_benchmarks_4K.sh b/scripts/benchmark/run_benchmarks_4K.sh index c49669f31..1c02d51db 100755 --- a/scripts/benchmark/run_benchmarks_4K.sh +++ b/scripts/benchmark/run_benchmarks_4K.sh @@ -9,50 +9,52 @@ set -eu DEV_DIR=/data/local/tmp CPU=7 THERMAL=0 -RES=$(printf 'Operation\tOpenCV\tstd\tKleidiCV\tstd\tKleidiCV_custom\tstd') - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL GRAY2BGR opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_GRAY2BGR)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL GRAY2BGRA opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_GRAY2BGRA)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGR2RGB opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_BGR2RGB)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGRA2RGBA opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_BGRA2RGBA)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGR2RGBA opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_BGR2RGBA)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGR2BGRA opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_BGR2BGRA)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL RGBA2BGR opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_RGBA2BGR)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGRA2BGR opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_BGRA2BGR)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL YUVSP2BGR opencv_perf_imgproc '*CvtMode2*' '(3840x2160, COLOR_YUV2BGR_NV12)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL YUVSP2BGRA opencv_perf_imgproc '*CvtMode2*' '(3840x2160, COLOR_YUV2BGRA_NV12)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL YUVSP2RGB opencv_perf_imgproc '*CvtMode2*' '(3840x2160, COLOR_YUV2RGB_NV12)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL YUVSP2RGBA opencv_perf_imgproc '*CvtMode2*' '(3840x2160, COLOR_YUV2RGBA_NV12)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL RGB2YUV opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_RGB2YUV)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGR2YUV opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_BGR2YUV)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL RGBA2YUV opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, CX_RGBA2YUV)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGRA2YUV opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, CX_BGRA2YUV)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BinaryThreshold opencv_perf_imgproc '*ThreshFixture_Threshold*' '(3840x2160, 8UC1, THRESH_BINARY)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL GaussianBlur3x3 opencv_perf_imgproc '*gaussianBlur3x3*' '(3840x2160, 8UC1, BORDER_REPLICATE)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL GaussianBlur5x5 opencv_perf_imgproc '*gaussianBlur5x5*' '(3840x2160, 8UC1, BORDER_REPLICATE)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Sobel_Gx opencv_perf_imgproc '*Border3x3_sobelFilter*' '(3840x2160, 16SC1, (1, 0), BORDER_REPLICATE)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Sobel_Gy opencv_perf_imgproc '*Border3x3_sobelFilter*' '(3840x2160, 16SC1, (0, 1), BORDER_REPLICATE)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Dilate3x3 opencv_perf_imgproc '*Dilate_big*' '(3840x2160, 8UC1, 3)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Dilate5x5 opencv_perf_imgproc '*Dilate_big*' '(3840x2160, 8UC1, 5)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Dilate17x17 opencv_perf_imgproc '*Dilate_big*' '(3840x2160, 8UC1, 17)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Erode3x3 opencv_perf_imgproc '*Erode_big*' '(3840x2160, 8UC1, 3)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Erode5x5 opencv_perf_imgproc '*Erode_big*' '(3840x2160, 8UC1, 5)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Erode17x17 opencv_perf_imgproc '*Erode_big*' '(3840x2160, 8UC1, 17)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Resize2x2_8b opencv_perf_imgproc '*resizeUpLinearNonExact*' '(8UC1, (1920x1080, 3840x2160))')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Resize2x2_float opencv_perf_imgproc '*resizeUpLinearNonExact*' '(32FC1, (1920x1080, 3840x2160))')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Resize4x4_8b opencv_perf_imgproc '*resizeUpLinearNonExact*' '(8UC1, (960x540, 3840x2160))')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Resize4x4_float opencv_perf_imgproc '*resizeUpLinearNonExact*' '(32FC1, (960x540, 3840x2160))')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Scale_u8 opencv_perf_core '*convertTo*' '(3840x2160, 8UC1, 8UC1, 1, 1.234, 4.567)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Scale_float_1.0 opencv_perf_core '*convertTo*' '(3840x2160, 32FC1, 32FC1, 1, 1, 4.567)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Scale_float opencv_perf_core '*convertTo*' '(3840x2160, 32FC1, 32FC1, 1, 1.234, 4.567)')") +CUSTOM_BUILD_SUFFIX="${CUSTOM_BUILD_SUFFIX:-custom}" + +RES=$(printf "Operation\tOpenCV\tstd\tKleidiCV\tstd\tKleidiCV_$CUSTOM_BUILD_SUFFIX\tstd") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL GRAY2BGR opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_GRAY2BGR)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL GRAY2BGRA opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_GRAY2BGRA)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGR2RGB opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_BGR2RGB)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGRA2RGBA opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_BGRA2RGBA)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGR2RGBA opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_BGR2RGBA)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGR2BGRA opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_BGR2BGRA)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL RGBA2BGR opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_RGBA2BGR)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGRA2BGR opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_BGRA2BGR)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL YUVSP2BGR opencv_perf_imgproc '*CvtMode2*' '(3840x2160, COLOR_YUV2BGR_NV12)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL YUVSP2BGRA opencv_perf_imgproc '*CvtMode2*' '(3840x2160, COLOR_YUV2BGRA_NV12)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL YUVSP2RGB opencv_perf_imgproc '*CvtMode2*' '(3840x2160, COLOR_YUV2RGB_NV12)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL YUVSP2RGBA opencv_perf_imgproc '*CvtMode2*' '(3840x2160, COLOR_YUV2RGBA_NV12)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL RGB2YUV opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_RGB2YUV)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGR2YUV opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, COLOR_BGR2YUV)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL RGBA2YUV opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, CX_RGBA2YUV)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGRA2YUV opencv_perf_imgproc '*cvtColor8u*' '(3840x2160, CX_BGRA2YUV)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BinaryThreshold opencv_perf_imgproc '*ThreshFixture_Threshold*' '(3840x2160, 8UC1, THRESH_BINARY)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL GaussianBlur3x3 opencv_perf_imgproc '*gaussianBlur3x3*' '(3840x2160, 8UC1, BORDER_REPLICATE)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL GaussianBlur5x5 opencv_perf_imgproc '*gaussianBlur5x5*' '(3840x2160, 8UC1, BORDER_REPLICATE)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Sobel_Gx opencv_perf_imgproc '*Border3x3_sobelFilter*' '(3840x2160, 16SC1, (1, 0), BORDER_REPLICATE)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Sobel_Gy opencv_perf_imgproc '*Border3x3_sobelFilter*' '(3840x2160, 16SC1, (0, 1), BORDER_REPLICATE)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Dilate3x3 opencv_perf_imgproc '*Dilate_big*' '(3840x2160, 8UC1, 3)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Dilate5x5 opencv_perf_imgproc '*Dilate_big*' '(3840x2160, 8UC1, 5)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Dilate17x17 opencv_perf_imgproc '*Dilate_big*' '(3840x2160, 8UC1, 17)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Erode3x3 opencv_perf_imgproc '*Erode_big*' '(3840x2160, 8UC1, 3)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Erode5x5 opencv_perf_imgproc '*Erode_big*' '(3840x2160, 8UC1, 5)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Erode17x17 opencv_perf_imgproc '*Erode_big*' '(3840x2160, 8UC1, 17)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Resize2x2_8b opencv_perf_imgproc '*resizeUpLinearNonExact*' '(8UC1, (1920x1080, 3840x2160))')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Resize2x2_float opencv_perf_imgproc '*resizeUpLinearNonExact*' '(32FC1, (1920x1080, 3840x2160))')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Resize4x4_8b opencv_perf_imgproc '*resizeUpLinearNonExact*' '(8UC1, (960x540, 3840x2160))')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Resize4x4_float opencv_perf_imgproc '*resizeUpLinearNonExact*' '(32FC1, (960x540, 3840x2160))')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Scale opencv_perf_core '*convertTo*' '(3840x2160, 8UC1, 8UC1, 1, 1.234, 4.567)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Scale_float_1.0 opencv_perf_core '*convertTo*' '(3840x2160, 32FC1, 32FC1, 1, 1, 4.567)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Scale_float opencv_perf_core '*convertTo*' '(3840x2160, 32FC1, 32FC1, 1, 1.234, 4.567)')") echo "$RES" diff --git a/scripts/benchmark/run_benchmarks_FHD.sh b/scripts/benchmark/run_benchmarks_FHD.sh index da01d28c0..c62f060aa 100755 --- a/scripts/benchmark/run_benchmarks_FHD.sh +++ b/scripts/benchmark/run_benchmarks_FHD.sh @@ -9,50 +9,52 @@ set -eu DEV_DIR=/data/local/tmp CPU=7 THERMAL=0 -RES=$(printf 'Operation\tOpenCV\tstd\tKleidiCV\tstd\tKleidiCV_custom\tstd') - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL GRAY2BGR opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_GRAY2BGR)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL GRAY2BGRA opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_GRAY2BGRA)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGR2RGB opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_BGR2RGB)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGRA2RGBA opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_BGRA2RGBA)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGR2RGBA opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_BGR2RGBA)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGR2BGRA opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_BGR2BGRA)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL RGBA2BGR opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_RGBA2BGR)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGRA2BGR opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_BGRA2BGR)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL YUVSP2BGR opencv_perf_imgproc '*CvtMode2*' '(1920x1080, COLOR_YUV2BGR_NV12)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL YUVSP2BGRA opencv_perf_imgproc '*CvtMode2*' '(1920x1080, COLOR_YUV2BGRA_NV12)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL YUVSP2RGB opencv_perf_imgproc '*CvtMode2*' '(1920x1080, COLOR_YUV2RGB_NV12)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL YUVSP2RGBA opencv_perf_imgproc '*CvtMode2*' '(1920x1080, COLOR_YUV2RGBA_NV12)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL RGB2YUV opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_RGB2YUV)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGR2YUV opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_BGR2YUV)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL RGBA2YUV opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, CX_RGBA2YUV)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BGRA2YUV opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, CX_BGRA2YUV)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL BinaryThreshold opencv_perf_imgproc '*ThreshFixture_Threshold*' '(1920x1080, 8UC1, THRESH_BINARY)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL GaussianBlur3x3 opencv_perf_imgproc '*gaussianBlur3x3*' '(1920x1080, 8UC1, BORDER_REPLICATE)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL GaussianBlur5x5 opencv_perf_imgproc '*gaussianBlur5x5*' '(1920x1080, 8UC1, BORDER_REPLICATE)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Sobel_Gx opencv_perf_imgproc '*Border3x3_sobelFilter*' '(1920x1080, 16SC1, (1, 0), BORDER_REPLICATE)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Sobel_Gy opencv_perf_imgproc '*Border3x3_sobelFilter*' '(1920x1080, 16SC1, (0, 1), BORDER_REPLICATE)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Dilate3x3 opencv_perf_imgproc '*Dilate_big*' '(1920x1080, 8UC1, 3)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Dilate5x5 opencv_perf_imgproc '*Dilate_big*' '(1920x1080, 8UC1, 5)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Dilate17x17 opencv_perf_imgproc '*Dilate_big*' '(1920x1080, 8UC1, 17)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Erode3x3 opencv_perf_imgproc '*Erode_big*' '(1920x1080, 8UC1, 3)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Erode5x5 opencv_perf_imgproc '*Erode_big*' '(1920x1080, 8UC1, 5)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Erode17x17 opencv_perf_imgproc '*Erode_big*' '(1920x1080, 8UC1, 17)')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Resize2x2_8b opencv_perf_imgproc '*resizeUpLinearNonExact*' '(8UC1, (960x540, 1920x1080))')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Resize2x2_float opencv_perf_imgproc '*resizeUpLinearNonExact*' '(32FC1, (960x540, 1920x1080))')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Resize4x4_8b opencv_perf_imgproc '*resizeUpLinearNonExact*' '(8UC1, (480x270, 1920x1080))')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Resize4x4_float opencv_perf_imgproc '*resizeUpLinearNonExact*' '(32FC1, (480x270, 1920x1080))')") - -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Scale_u8 opencv_perf_core '*convertTo*' '(1920x1080, 8UC1, 8UC1, 1, 1.234, 4.567)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Scale_float_1.0 opencv_perf_core '*convertTo*' '(1920x1080, 32FC1, 32FC1, 1, 1, 4.567)')") -RES=$(printf "${RES}\n$(${DEV_DIR}/perf_test_op.sh $CPU $THERMAL Scale_float opencv_perf_core '*convertTo*' '(1920x1080, 32FC1, 32FC1, 1, 1.234, 4.567)')") +CUSTOM_BUILD_SUFFIX="${CUSTOM_BUILD_SUFFIX:-custom}" + +RES=$(printf "Operation\tOpenCV\tstd\tKleidiCV\tstd\tKleidiCV_$CUSTOM_BUILD_SUFFIX\tstd") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL GRAY2BGR opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_GRAY2BGR)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL GRAY2BGRA opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_GRAY2BGRA)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGR2RGB opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_BGR2RGB)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGRA2RGBA opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_BGRA2RGBA)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGR2RGBA opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_BGR2RGBA)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGR2BGRA opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_BGR2BGRA)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL RGBA2BGR opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_RGBA2BGR)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGRA2BGR opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_BGRA2BGR)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL YUVSP2BGR opencv_perf_imgproc '*CvtMode2*' '(1920x1080, COLOR_YUV2BGR_NV12)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL YUVSP2BGRA opencv_perf_imgproc '*CvtMode2*' '(1920x1080, COLOR_YUV2BGRA_NV12)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL YUVSP2RGB opencv_perf_imgproc '*CvtMode2*' '(1920x1080, COLOR_YUV2RGB_NV12)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL YUVSP2RGBA opencv_perf_imgproc '*CvtMode2*' '(1920x1080, COLOR_YUV2RGBA_NV12)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL RGB2YUV opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_RGB2YUV)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGR2YUV opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, COLOR_BGR2YUV)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL RGBA2YUV opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, CX_RGBA2YUV)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BGRA2YUV opencv_perf_imgproc '*cvtColor8u*' '(1920x1080, CX_BGRA2YUV)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL BinaryThreshold opencv_perf_imgproc '*ThreshFixture_Threshold*' '(1920x1080, 8UC1, THRESH_BINARY)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL GaussianBlur3x3 opencv_perf_imgproc '*gaussianBlur3x3*' '(1920x1080, 8UC1, BORDER_REPLICATE)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL GaussianBlur5x5 opencv_perf_imgproc '*gaussianBlur5x5*' '(1920x1080, 8UC1, BORDER_REPLICATE)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Sobel_Gx opencv_perf_imgproc '*Border3x3_sobelFilter*' '(1920x1080, 16SC1, (1, 0), BORDER_REPLICATE)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Sobel_Gy opencv_perf_imgproc '*Border3x3_sobelFilter*' '(1920x1080, 16SC1, (0, 1), BORDER_REPLICATE)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Dilate3x3 opencv_perf_imgproc '*Dilate_big*' '(1920x1080, 8UC1, 3)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Dilate5x5 opencv_perf_imgproc '*Dilate_big*' '(1920x1080, 8UC1, 5)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Dilate17x17 opencv_perf_imgproc '*Dilate_big*' '(1920x1080, 8UC1, 17)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Erode3x3 opencv_perf_imgproc '*Erode_big*' '(1920x1080, 8UC1, 3)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Erode5x5 opencv_perf_imgproc '*Erode_big*' '(1920x1080, 8UC1, 5)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Erode17x17 opencv_perf_imgproc '*Erode_big*' '(1920x1080, 8UC1, 17)')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Resize2x2_8b opencv_perf_imgproc '*resizeUpLinearNonExact*' '(8UC1, (960x540, 1920x1080))')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Resize2x2_float opencv_perf_imgproc '*resizeUpLinearNonExact*' '(32FC1, (960x540, 1920x1080))')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Resize4x4_8b opencv_perf_imgproc '*resizeUpLinearNonExact*' '(8UC1, (480x270, 1920x1080))')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Resize4x4_float opencv_perf_imgproc '*resizeUpLinearNonExact*' '(32FC1, (480x270, 1920x1080))')") + +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Scale opencv_perf_core '*convertTo*' '(1920x1080, 8UC1, 8UC1, 1, 1.234, 4.567)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Scale_float_1.0 opencv_perf_core '*convertTo*' '(1920x1080, 32FC1, 32FC1, 1, 1, 4.567)')") +RES+=$(printf "\n$(${DEV_DIR}/perf_test_op.sh $CUSTOM_BUILD_SUFFIX $CPU $THERMAL Scale_float opencv_perf_core '*convertTo*' '(1920x1080, 32FC1, 32FC1, 1, 1.234, 4.567)')") echo "$RES" -- GitLab