From f309c200b5264159a0400de84b73bd5fa0a4c18b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Nilsson?= Date: Tue, 5 Mar 2024 11:37:00 +0100 Subject: Update TFLM build configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Renames build flags (TFLU_*->TFLM_*). - Fix generator expressions in add_compile_definitions. - Adds new build flag TFLM_OPTIMIZE_KERNELS_FOR. This is a new flag in TFLM, which is currently needed for CMSIS-NN Transpose conv. Since TFLM's own build files are not used it need to be set explicitly here. Change-Id: I8ff01caabfc1c5d2fcc3fa36fcbd153525d93258 Signed-off-by: Måns Nilsson --- tflite_micro.cmake | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/tflite_micro.cmake b/tflite_micro.cmake index 2b8a9cc..9fc8aad 100644 --- a/tflite_micro.cmake +++ b/tflite_micro.cmake @@ -1,5 +1,5 @@ # -# SPDX-FileCopyrightText: Copyright 2021-2023 Arm Limited and/or its affiliates +# SPDX-FileCopyrightText: Copyright 2021-2024 Arm Limited and/or its affiliates # # SPDX-License-Identifier: Apache-2.0 # @@ -18,9 +18,11 @@ add_library(tflu STATIC) -set(TFLU_PATH "${TENSORFLOW_PATH}/tensorflow/lite/micro") -set(TFLU_BUILD_TYPE "release" CACHE STRING "Tensorflow Lite Mirco build type, can be release or debug") -set(TFLU_OPTIMIZATION_LEVEL "-O2" CACHE STRING "Tensorflow Lite Micro kernel optimization level") +# Tensorflow Lite Micro (TFLM) build variables. +set(TFLM_PATH "${TENSORFLOW_PATH}/tensorflow/lite/micro") +set(TFLM_BUILD_TYPE "release" CACHE STRING "TFLM build type, can be release, release_with_logs or debug") +set(TFLM_OPTIMIZATION_LEVEL "-O2" CACHE STRING "TFLM kernel optimization level") +set(TFLM_OPTIMIZE_KERNELS_FOR "speed" CACHE STRING "TFLM kernel implementation optimization type, can be speed or size") ############################################################################# # Helpers @@ -132,10 +134,10 @@ if (NOT ${CORE_SOFTWARE_ACCELERATOR} STREQUAL "CPU") add_subdirectory(${CMSIS_NN_PATH} cmsis_nn) target_compile_options(cmsis-nn PRIVATE - ${TFLU_OPTIMIZATION_LEVEL}) + ${TFLM_OPTIMIZATION_LEVEL}) tensorflow_target_sources_glob(tflu GLOB TRUE - ${TFLU_PATH}/kernels/cmsis_nn/*.cc) + ${TFLM_PATH}/kernels/cmsis_nn/*.cc) target_include_directories(tflu PUBLIC ${CMSIS_NN_PATH}) @@ -153,7 +155,7 @@ endif() if(TARGET ethosu_core_driver) tensorflow_target_sources_glob(tflu GLOB TRUE - ${TFLU_PATH}/kernels/ethos_u/*.cc) + ${TFLM_PATH}/kernels/ethos_u/*.cc) target_link_libraries(tflu PUBLIC ethosu_core_driver) @@ -164,10 +166,10 @@ endif() ############################################################################# tensorflow_target_sources_glob(tflu GLOB TRUE - ${TFLU_PATH}/cortex_m_generic/*.cc) + ${TFLM_PATH}/cortex_m_generic/*.cc) target_include_directories(tflu PRIVATE - ${TFLU_PATH}/cortex_m_generic) + ${TFLM_PATH}/cortex_m_generic) # For DWT/PMU counters target_link_libraries(tflu PRIVATE cmsis_device) @@ -183,30 +185,32 @@ endif() ############################################################################# tensorflow_target_sources_glob(tflu GLOB TRUE - ${TFLU_PATH}/*.cc - ${TFLU_PATH}/arena_allocator/*.cc - ${TFLU_PATH}/memory_planner/*.cc - ${TFLU_PATH}/kernels/*.cc - ${TFLU_PATH}/tflite_bridge/*.cc) + ${TFLM_PATH}/*.cc + ${TFLM_PATH}/arena_allocator/*.cc + ${TFLM_PATH}/memory_planner/*.cc + ${TFLM_PATH}/kernels/*.cc + ${TFLM_PATH}/tflite_bridge/*.cc) tensorflow_target_sources_glob(tflu GLOB_RECURSE FALSE - ${TFLU_PATH}/../c/*.cc - ${TFLU_PATH}/../core/*.cc - ${TFLU_PATH}/../core/api/*.cc - ${TFLU_PATH}/../kernels/*.cc - ${TFLU_PATH}/../schema/*.cc) + ${TFLM_PATH}/../c/*.cc + ${TFLM_PATH}/../core/*.cc + ${TFLM_PATH}/../core/api/*.cc + ${TFLM_PATH}/../kernels/*.cc + ${TFLM_PATH}/../schema/*.cc) target_include_directories(tflu PUBLIC ${TENSORFLOW_PATH}) target_compile_definitions(tflu PUBLIC TF_LITE_STATIC_MEMORY - $<$:"NDEBUG;TF_LITE_STRIP_ERROR_STRINGS"> - $<$:"NDEBUG">) + $<$:NDEBUG;TF_LITE_STRIP_ERROR_STRINGS> + $<$:NDEBUG> + $<$:KERNELS_OPTIMIZED_FOR_SPEED> + $<$:KERNELS_OPTIMIZED_FOR_SIZE>) target_compile_options(tflu PRIVATE - ${TFLU_OPTIMIZATION_LEVEL} + ${TFLM_OPTIMIZATION_LEVEL} -fno-unwind-tables -ffunction-sections -fdata-sections -- cgit v1.2.1