From a3dc95ec2b0ac9e7f87dd32d03679a4b2a9b5d2a Mon Sep 17 00:00:00 2001 From: Ryan OShea Date: Mon, 20 Mar 2023 11:10:40 +0000 Subject: Improve reusability of code that is defined out by cmake build paths * Added new ARMNN_STUB_PROFILING and ARMNN_DISABLE_DYNAMIC_BACKEND defines to replace BUILD_BARE_METAL and BUILD_EXECUTE_NETWORK_STATIC * Add new CMake variables to disable sample apps and dynamic backends * Improve BUILD_SHARED_LIBS CMake variable * Add new archive output location to various libraries so that the static libraries appear in the same location as the shared libraries * Fixes for bare metal build * Add ARMNN_DISABLE_FILE_SYSTEM defines to missing locations Signed-off-by: Ryan OShea Change-Id: I1db9a8f483e7134bd261294b35240cf21b150d45 --- src/armnn/Network.cpp | 2 ++ src/armnn/Runtime.cpp | 10 +++++----- src/armnnDeserializer/CMakeLists.txt | 7 ++++++- src/armnnSerializer/CMakeLists.txt | 26 ++++++++++++++------------ src/armnnTestUtils/CMakeLists.txt | 13 +++++-------- src/armnnTfLiteParser/CMakeLists.txt | 8 ++++---- src/backends/backends.cmake | 17 +++++++++-------- src/backends/backendsCommon/CMakeLists.txt | 2 +- src/backends/dynamic/reference/CMakeLists.txt | 4 ---- src/backends/reference/workloads/Debug.cpp | 2 ++ src/timelineDecoder/CMakeLists.txt | 1 + 11 files changed, 49 insertions(+), 43 deletions(-) (limited to 'src') diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp index a069585216..b768ea888f 100644 --- a/src/armnn/Network.cpp +++ b/src/armnn/Network.cpp @@ -1950,8 +1950,10 @@ IOptimizedNetworkPtr Optimize(const Graph& inGraph, // Setup the output file path try { +#if !defined(ARMNN_DISABLE_FILESYSTEM) auto result = armnnUtils::Filesystem::CreateDirectory("/ArmNNIntermediateLayerOutputs"); ARMNN_LOG(info) << "Intermediate tensors will be written to: " << result; +#endif Optimizer::Pass(optGraph, MakeOptimizations(InsertDebugToFileLayer())); } catch (const armnn::RuntimeException& e) diff --git a/src/armnn/Runtime.cpp b/src/armnn/Runtime.cpp index ff64e856f4..f71fad1f35 100644 --- a/src/armnn/Runtime.cpp +++ b/src/armnn/Runtime.cpp @@ -20,7 +20,7 @@ #include #include -#if !defined(ARMNN_BUILD_BARE_METAL) && !defined(ARMNN_EXECUTE_NETWORK_STATIC) +#if !defined(ARMNN_DISABLE_DYNAMIC_BACKENDS) #include #endif @@ -337,7 +337,7 @@ RuntimeImpl::RuntimeImpl(const IRuntime::CreationOptions& options) throw RuntimeException( "It is not possible to enable timeline reporting without profiling being enabled"); } -#if !defined(ARMNN_BUILD_BARE_METAL) && !defined(ARMNN_EXECUTE_NETWORK_STATIC) +#if !defined(ARMNN_DISABLE_DYNAMIC_BACKENDS) // Load any available/compatible dynamic backend before the runtime // goes through the backend registry LoadDynamicBackends(options.m_DynamicBackendsPath); @@ -357,7 +357,7 @@ RuntimeImpl::RuntimeImpl(const IRuntime::CreationOptions& options) if (customAllocatorMapIterator != options.m_CustomAllocatorMap.end() && customAllocatorMapIterator->second == nullptr) { -#if !defined(ARMNN_BUILD_BARE_METAL) && !defined(ARMNN_EXECUTE_NETWORK_STATIC) +#if !defined(ARMNN_DISABLE_DYNAMIC_BACKENDS) // We need to manually clean up the dynamic backends before throwing an exception. DynamicBackendUtils::DeregisterDynamicBackends(m_DeviceSpec.GetDynamicBackends()); m_DeviceSpec.ClearDynamicBackends(); @@ -584,7 +584,7 @@ RuntimeImpl::~RuntimeImpl() << std::endl; } } -#if !defined(ARMNN_BUILD_BARE_METAL) && !defined(ARMNN_EXECUTE_NETWORK_STATIC) +#if !defined(ARMNN_DISABLE_DYNAMIC_BACKENDS) // Clear all dynamic backends. DynamicBackendUtils::DeregisterDynamicBackends(m_DeviceSpec.GetDynamicBackends()); m_DeviceSpec.ClearDynamicBackends(); @@ -769,7 +769,7 @@ void RuntimeImpl::RegisterDebugCallback(NetworkId networkId, const DebugCallback loadedNetwork->RegisterDebugCallback(func); } -#if !defined(ARMNN_BUILD_BARE_METAL) && !defined(ARMNN_EXECUTE_NETWORK_STATIC) +#if !defined(ARMNN_DISABLE_DYNAMIC_BACKENDS) void RuntimeImpl::LoadDynamicBackends(const std::string& overrideBackendPath) { // Get the paths where to load the dynamic backends from diff --git a/src/armnnDeserializer/CMakeLists.txt b/src/armnnDeserializer/CMakeLists.txt index 630eb370df..e77235881f 100755 --- a/src/armnnDeserializer/CMakeLists.txt +++ b/src/armnnDeserializer/CMakeLists.txt @@ -29,12 +29,17 @@ if(BUILD_ARMNN_DESERIALIZER) Deserializer.hpp Deserializer.cpp ) - +if(BUILD_SHARED_LIBS) add_library_ex(armnnDeserializer SHARED ${armnn_deserializer_sources}) +else() + add_library_ex(armnnDeserializer STATIC ${armnn_deserializer_sources}) +endif() include_directories(SYSTEM "${FLATBUFFERS_INCLUDE_PATH}") set_target_properties(armnnDeserializer PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + set_target_properties(armnnDeserializer PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + target_include_directories(armnnDeserializer PRIVATE ../armnn) target_include_directories(armnnDeserializer PRIVATE ../armnnUtils) target_include_directories(armnnDeserializer PRIVATE ../../generated) diff --git a/src/armnnSerializer/CMakeLists.txt b/src/armnnSerializer/CMakeLists.txt index 01c51e65d7..20faae955e 100755 --- a/src/armnnSerializer/CMakeLists.txt +++ b/src/armnnSerializer/CMakeLists.txt @@ -36,28 +36,30 @@ if(BUILD_ARMNN_SERIALIZER) ../armnnDeserializer/Deserializer.cpp ) - if(BUILD_BARE_METAL OR EXECUTE_NETWORK_STATIC) - add_library_ex(armnnSerializer STATIC ${armnn_serializer_sources}) - else() + include_directories(SYSTEM "${FLATBUFFERS_INCLUDE_PATH}") + + if(BUILD_SHARED_LIBS) # We're going to export both a STATIC library and a SHARED library here. # In some instances it's easier to include the serializer directly into # the target executable or library rather than have yet another .so. add_library(armnnSerializer-static STATIC ${armnn_serializer_sources}) add_library_ex(armnnSerializer SHARED ${armnn_serializer_sources}) - endif() - include_directories(SYSTEM "${FLATBUFFERS_INCLUDE_PATH}") - - set_target_properties(armnnSerializer PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) - target_include_directories(armnnSerializer PRIVATE ../armnn) - target_include_directories(armnnSerializer PRIVATE ../armnnUtils) - target_include_directories(armnnSerializer PRIVATE ../../generated) - if (NOT BARE_METAL AND NOT EXECUTE_NETWORK_STATIC) target_include_directories(armnnSerializer-static PRIVATE ../armnn) target_include_directories(armnnSerializer-static PRIVATE ../armnnUtils) target_include_directories(armnnSerializer-static PRIVATE ../../generated) + + set_target_properties(armnnSerializer PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + set_target_properties(armnnSerializer-static PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + else() + add_library_ex(armnnSerializer STATIC ${armnn_serializer_sources}) + set_target_properties(armnnSerializer PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) endif() + target_include_directories(armnnSerializer PRIVATE ../armnn) + target_include_directories(armnnSerializer PRIVATE ../armnnUtils) + target_include_directories(armnnSerializer PRIVATE ../../generated) + list(APPEND armnn_serializer_sources ArmnnSchema_generated.h ) @@ -66,7 +68,7 @@ if(BUILD_ARMNN_SERIALIZER) target_include_directories(armnnSerializer SYSTEM PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries(armnnSerializer armnn ${FLATBUFFERS_LIBRARY}) - if (NOT BARE_METAL AND NOT EXECUTE_NETWORK_STATIC) + if (BUILD_SHARED_LIBS) install(TARGETS armnnSerializer-static EXPORT armnn-targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/src/armnnTestUtils/CMakeLists.txt b/src/armnnTestUtils/CMakeLists.txt index a4333cf306..b2f31245b7 100755 --- a/src/armnnTestUtils/CMakeLists.txt +++ b/src/armnnTestUtils/CMakeLists.txt @@ -31,23 +31,20 @@ list(APPEND armnnTestUtils_sources TestUtils.hpp ) -if(NOT BUILD_BARE_METAL AND NOT EXECUTE_NETWORK_STATIC) list(APPEND armnnTestUtils_sources UnitTests.cpp UnitTests.hpp ) -endif() - -if(BUILD_BARE_METAL) - add_library_ex(armnnTestUtils STATIC ${armnnTestUtils_sources}) -elseif(EXECUTE_NETWORK_STATIC) - add_library_ex(armnnTestUtils OBJECT ${armnnTestUtils_sources}) -else() +if(BUILD_SHARED_LIBS) add_library_ex(armnnTestUtils SHARED ${armnnTestUtils_sources}) +else() + add_library_ex(armnnTestUtils STATIC ${armnnTestUtils_sources}) endif() set_target_properties(armnnTestUtils PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) +set_target_properties(armnnTestUtils PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + target_include_directories(armnnTestUtils PUBLIC diff --git a/src/armnnTfLiteParser/CMakeLists.txt b/src/armnnTfLiteParser/CMakeLists.txt index 6096d1bf8c..782aa1ccee 100755 --- a/src/armnnTfLiteParser/CMakeLists.txt +++ b/src/armnnTfLiteParser/CMakeLists.txt @@ -11,14 +11,15 @@ if(BUILD_TF_LITE_PARSER) TfLiteParser.cpp ) - if(EXECUTE_NETWORK_STATIC) - add_library_ex(armnnTfLiteParser OBJECT ${armnn_tf_lite_parser_sources}) - else() + if(BUILD_SHARED_LIBS) add_library_ex(armnnTfLiteParser SHARED ${armnn_tf_lite_parser_sources}) + else() + add_library_ex(armnnTfLiteParser STATIC ${armnn_tf_lite_parser_sources}) endif() include_directories(SYSTEM "${FLATBUFFERS_INCLUDE_PATH}") set_target_properties(armnnTfLiteParser PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + set_target_properties(armnnTfLiteParser PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) target_include_directories(armnnTfLiteParser PRIVATE ../armnn) target_include_directories(armnnTfLiteParser PRIVATE ../armnnUtils) target_include_directories(armnnTfLiteParser SYSTEM PRIVATE "${TF_LITE_SCHEMA_INCLUDE_PATH}") @@ -66,7 +67,6 @@ if(BUILD_TF_LITE_PARSER) endif() set_target_properties(armnnTfLiteParser PROPERTIES VERSION ${TFLITE_PARSER_LIB_VERSION} SOVERSION ${TFLITE_PARSER_LIB_SOVERSION} ) - install(TARGETS armnnTfLiteParser LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/src/backends/backends.cmake b/src/backends/backends.cmake index aca3b63ca9..98af2716e3 100644 --- a/src/backends/backends.cmake +++ b/src/backends/backends.cmake @@ -19,11 +19,12 @@ foreach(includeFile ${backendIncludes}) message(STATUS "Including backend into the build: ${includeFile}") include(${includeFile}) endforeach() - -# parse dynamic backend sub-directories -file(GLOB dynamicBackendDirs ${PROJECT_SOURCE_DIR}/src/backends/dynamic/*) -foreach(dynamicBackendDir ${dynamicBackendDirs}) - if (EXISTS ${dynamicBackendDir} AND IS_DIRECTORY ${dynamicBackendDir}) - add_subdirectory(${dynamicBackendDir}) - endif() -endforeach() +if(NOT DISABLE_DYNAMIC_BACKENDS) + # parse dynamic backend sub-directories + file(GLOB dynamicBackendDirs ${PROJECT_SOURCE_DIR}/src/backends/dynamic/*) + foreach(dynamicBackendDir ${dynamicBackendDirs}) + if (EXISTS ${dynamicBackendDir} AND IS_DIRECTORY ${dynamicBackendDir}) + add_subdirectory(${dynamicBackendDir}) + endif() + endforeach() +endif() diff --git a/src/backends/backendsCommon/CMakeLists.txt b/src/backends/backendsCommon/CMakeLists.txt index 28ff205d6e..977067b48f 100644 --- a/src/backends/backendsCommon/CMakeLists.txt +++ b/src/backends/backendsCommon/CMakeLists.txt @@ -3,7 +3,7 @@ # SPDX-License-Identifier: MIT # -if(NOT BUILD_BARE_METAL AND NOT EXECUTE_NETWORK_STATIC) +if(NOT DISABLE_DYNAMIC_BACKENDS) list(APPEND armnnBackendsCommon_sources DynamicBackend.cpp DynamicBackend.hpp diff --git a/src/backends/dynamic/reference/CMakeLists.txt b/src/backends/dynamic/reference/CMakeLists.txt index fe875282f5..acf53383a1 100644 --- a/src/backends/dynamic/reference/CMakeLists.txt +++ b/src/backends/dynamic/reference/CMakeLists.txt @@ -3,7 +3,6 @@ # SPDX-License-Identifier: MIT # -if((NOT BUILD_BARE_METAL) AND (NOT EXECUTE_NETWORK_STATIC)) # File needed to wrap the existing backend into a dynamic one list(APPEND armnnRefDynamicBackend_sources @@ -32,6 +31,3 @@ target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/prof target_include_directories(Arm_CpuRef_backend PRIVATE ${PROJECT_SOURCE_DIR}/profiling/client/include) set_target_properties(Arm_CpuRef_backend PROPERTIES PREFIX "") target_link_libraries(Arm_CpuRef_backend armnn) - -# BUILD_BARE_METAL && EXECUTE_NETWORK_STATIC -endif() diff --git a/src/backends/reference/workloads/Debug.cpp b/src/backends/reference/workloads/Debug.cpp index f4f9792fc1..50aecc8b66 100644 --- a/src/backends/reference/workloads/Debug.cpp +++ b/src/backends/reference/workloads/Debug.cpp @@ -103,10 +103,12 @@ void Debug(const TensorInfo& inputInfo, { if (outputsToFile) { +#if !defined(ARMNN_DISABLE_FILESYSTEM) fs::path tmpDir = fs::temp_directory_path(); std::ofstream out(tmpDir.generic_string() + "/ArmNNIntermediateLayerOutputs/" + layerName + ".numpy"); PrintOutput(inputInfo, inputData, guid, layerName, slotIndex, out); out.close(); +#endif } else { diff --git a/src/timelineDecoder/CMakeLists.txt b/src/timelineDecoder/CMakeLists.txt index 3aabf5be76..0f15771a3e 100644 --- a/src/timelineDecoder/CMakeLists.txt +++ b/src/timelineDecoder/CMakeLists.txt @@ -22,6 +22,7 @@ if(BUILD_TIMELINE_DECODER) add_library_ex(timelineDecoderJson SHARED ${timelineDecoderJson_sources}) set_target_properties(timelineDecoderJson PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + set_target_properties(timelineDecoderJson PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) set_target_properties(timelineDecoderJson PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} ) target_link_libraries(timelineDecoderJson armnn) -- cgit v1.2.1