diff options
Diffstat (limited to 'applications/message_handler')
-rw-r--r-- | applications/message_handler/CMakeLists.txt | 13 | ||||
-rw-r--r-- | applications/message_handler/main.cpp | 4 |
2 files changed, 13 insertions, 4 deletions
diff --git a/applications/message_handler/CMakeLists.txt b/applications/message_handler/CMakeLists.txt index 3f87e64..040b27d 100644 --- a/applications/message_handler/CMakeLists.txt +++ b/applications/message_handler/CMakeLists.txt @@ -21,7 +21,7 @@ if (NOT TARGET freertos_kernel) return() endif() -set(MESSAGE_HANDLER_ARENA_SIZE 2000000 CACHE STRING "Size of message handler tensor arena") +set(MESSAGE_HANDLER_ARENA_SIZE 2000000 CACHE STRING "Total size of all message handler tensor arenas") set(MESSAGE_HANDLER_MODEL_0 FALSE CACHE STRING "Path to built in model 0") set(MESSAGE_HANDLER_MODEL_1 FALSE CACHE STRING "Path to built in model 1") set(MESSAGE_HANDLER_MODEL_2 FALSE CACHE STRING "Path to built in model 2") @@ -42,8 +42,17 @@ ethosu_add_executable(message_handler target_include_directories(message_handler PRIVATE ${LINUX_DRIVER_STACK_PATH}/kernel) +# Split total tensor arena equally for each NPU +if (TARGET ethosu_core_driver AND ETHOSU_TARGET_NPU_COUNT GREATER 0) + set(NUM_ARENAS ${ETHOSU_TARGET_NPU_COUNT}) +else() + set(NUM_ARENAS 1) +endif() + +math(EXPR TENSOR_ARENA_SIZE "${MESSAGE_HANDLER_ARENA_SIZE} / ${NUM_ARENAS}") + target_compile_definitions(message_handler PRIVATE - TENSOR_ARENA_SIZE=${MESSAGE_HANDLER_ARENA_SIZE} + TENSOR_ARENA_SIZE=${TENSOR_ARENA_SIZE} $<$<BOOL:${MESSAGE_HANDLER_MODEL_0}>:MODEL_0=${MESSAGE_HANDLER_MODEL_0}> $<$<BOOL:${MESSAGE_HANDLER_MODEL_1}>:MODEL_1=${MESSAGE_HANDLER_MODEL_1}> $<$<BOOL:${MESSAGE_HANDLER_MODEL_2}>:MODEL_2=${MESSAGE_HANDLER_MODEL_2}> diff --git a/applications/message_handler/main.cpp b/applications/message_handler/main.cpp index b527840..8db9e0b 100644 --- a/applications/message_handler/main.cpp +++ b/applications/message_handler/main.cpp @@ -52,14 +52,14 @@ using namespace MessageHandler; ****************************************************************************/ // Nr. of tasks to process inferences with, reserves driver & runs inference (Normally 1 per NPU, but not a must) -#if defined(ETHOSU_NPU_COUNT) +#if defined(ETHOSU) && defined(ETHOSU_NPU_COUNT) && ETHOSU_NPU_COUNT > 0 constexpr size_t NUM_PARALLEL_TASKS = ETHOSU_NPU_COUNT; #else constexpr size_t NUM_PARALLEL_TASKS = 1; #endif // TensorArena static initialisation -constexpr size_t arenaSize = TENSOR_ARENA_SIZE / NUM_PARALLEL_TASKS; +constexpr size_t arenaSize = TENSOR_ARENA_SIZE; __attribute__((section(".bss.tensor_arena"), aligned(16))) uint8_t tensorArena[NUM_PARALLEL_TASKS][arenaSize]; |