aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPer Åstrand <per.astrand@arm.com>2020-06-30 10:33:58 +0200
committerPer Åstrand <per.astrand@arm.com>2020-07-02 13:57:39 +0200
commit94ca3558d648c69ee1b5d7771247763a9fdd9514 (patch)
tree0de9596e346ff446a214d2798b49cc9972df58ff
parent3f6e07ac33c7bd320527e556d8a9fdbd343c1a91 (diff)
downloadethos-u-core-software-94ca3558d648c69ee1b5d7771247763a9fdd9514.tar.gz
MLBEDSW-2059 Add option for accelerator
Add cmake option to select which accelerator backend is to be built for tensorflow. Change-Id: Ice06317e1f8b8601f3f077da9d2ef2625b6b2909
-rw-r--r--CMakeLists.txt16
-rw-r--r--tensorflow.cmake8
2 files changed, 16 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 90f4319..22a039b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -29,8 +29,9 @@ set(CMSIS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmsis" CACHE PATH "Path to CMSIS.")
set(CORE_DRIVER_PATH "${CMAKE_CURRENT_SOURCE_DIR}/core_driver" CACHE PATH "Path to core driver.")
set(TENSORFLOW_PATH "${CMAKE_CURRENT_SOURCE_DIR}/tensorflow" CACHE PATH "Path to Tensorflow.")
-# Enable NPU backend
-set(CORE_SOFTWARE_BACKEND "NPU" CACHE STRING "Enable NPU backend. (None, NPU)")
+# Select accelerator for tensorflow
+set(CORE_SOFTWARE_ACCELERATOR "NPU" CACHE STRING "Set NPU backend for TFLU")
+set_property(CACHE CORE_SOFTWARE_ACCELERATOR PROPERTY STRINGS CPU CMSIS-NN NPU)
# Define build options
set(CORE_SOFTWARE_RTOS "None" CACHE STRING "Select RTOS to include. (None, MbedOS, FreeRTOS, Zephyr)")
@@ -38,17 +39,20 @@ set(CORE_SOFTWARE_RTOS "None" CACHE STRING "Select RTOS to include. (None, MbedO
#
# Build
#
+add_library(ethosu_core INTERFACE)
# Build CMSIS
include(cmsis.cmake)
# Build core driver
-set(ETHOSU_PMU_INTERACTIVE OFF)
-add_subdirectory(${CORE_DRIVER_PATH} core_driver)
+if (CORE_SOFTWARE_ACCELERATOR STREQUAL "NPU")
+ set(ETHOSU_PMU_INTERACTIVE OFF)
+ add_subdirectory(${CORE_DRIVER_PATH} core_driver)
+ target_link_libraries(ethosu_core INTERFACE ethosu_core_driver)
+endif()
# Build Tensorflow library
include(tensorflow.cmake)
# Merge libraries into static library
-add_library(ethosu_core INTERFACE)
-target_link_libraries(ethosu_core INTERFACE tflu cmsis_device ethosu_core_driver)
+target_link_libraries(ethosu_core INTERFACE tflu cmsis_device)
diff --git a/tensorflow.cmake b/tensorflow.cmake
index 312b783..d252252 100644
--- a/tensorflow.cmake
+++ b/tensorflow.cmake
@@ -35,10 +35,14 @@ set(TFLU_PATH "${TENSORFLOW_PATH}/tensorflow/lite/micro")
set(TFLU_GENDIR ${CMAKE_CURRENT_BINARY_DIR}/tensorflow/)
set(TFLU_TARGET "lib")
set(TFLU_TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR}${CPU_FEATURES})
-set(TFLU_ETHOSU_LIBS $<TARGET_FILE:ethosu_core_driver>)
-if(CORE_SOFTWARE_BACKEND STREQUAL NPU)
+if(CORE_SOFTWARE_ACCELERATOR STREQUAL NPU)
+ set(TFLU_ETHOSU_LIBS $<TARGET_FILE:ethosu_core_driver>)
+ # Set preference for ethos-u over cmsis-nn
+ list(APPEND TFLU_TAGS "cmsis-nn")
list(APPEND TFLU_TAGS "ethos-u")
+elseif(CORE_SOFTWARE_ACCELERATOR STREQUAL CMSIS-NN)
+ list(APPEND TFLU_TAGS "cmsis-nn")
endif()
string(JOIN TFLU_TAGS " " TFLU_TAGS)