From: Colm Donelan Date: Wed, 3 Jun 2020 07:00:28 +0000 (+0100) Subject: IVGCVSW-4915 Improving messages around SAMPLE_DYNAMIC_BACKEND_ENABLED X-Git-Tag: submit/tizen/20210421.062230~492 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0dbe00a9c6fdfc20a3d7815b05269da0e8df7b0a;p=platform%2Fupstream%2Farmnn.git IVGCVSW-4915 Improving messages around SAMPLE_DYNAMIC_BACKEND_ENABLED * If SAMPLE_DYNAMIC_BACKEND_ENABLED is enabled but DYNAMIC_BACKEND_PATHS is not set then the user gets failing tests cases with no clear idea what has gone wrong. Explicitly failing when DYNAMIC_BACKEND_PATHS has not been set. * Adding an FAQ entry describing how the user can get confused by our documented usage of CMake. Signed-off-by: Colm Donelan Change-Id: Ic11e14a971f53a6454962354ff728365ccc9de6d --- diff --git a/cmake/GlobalConfig.cmake b/cmake/GlobalConfig.cmake index 6aa6321..650d409 100644 --- a/cmake/GlobalConfig.cmake +++ b/cmake/GlobalConfig.cmake @@ -26,6 +26,7 @@ option(FLATC_DIR "Path to Flatbuffers compiler" OFF) option(TF_LITE_GENERATED_PATH "Tensorflow lite generated C++ schema location" OFF) option(FLATBUFFERS_ROOT "Location where the flatbuffers 'include' and 'lib' folders to be found" Off) option(DYNAMIC_BACKEND_PATHS "Colon seperated list of paths where to load the dynamic backends from" "") +option(SAMPLE_DYNAMIC_BACKEND "Include the sample dynamic backend and its tests in the build" OFF) option(BUILD_GATORD_MOCK "Build the Gatord simulator for external profiling testing." ON) option(BUILD_TIMELINE_DECODER "Build the Timeline Decoder for external profiling." ON) option(SHARED_BOOST "Use dynamic linking for boost libraries" OFF) diff --git a/docs/FAQ.md b/docs/FAQ.md index 1df82e8..918f4e1 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -20,3 +20,8 @@ Segmentation fault following a failed call to armnn::Optimize using CpuRef backe In some error scenarios of calls to armnn::Optimize a null pointer may be returned. This contravenes the function documentation however, it can happen. Users are advised to check the value returned from the function as a precaution. If you encounter this problem and are able to isolate it consider contributing a solution. + +Adding or removing -Dxxx options when building ArmNN does not always work. +--------------------------------------------------------- + +ArmNN uses CMake for build configuration. CMake uses a cumulative cache of user options. That is, setting a value once on a cmake command line will be persisted until either you explicitly change the value or delete the cache. To delete the cache in ArmNN you must delete the build directory. diff --git a/src/backends/backendsCommon/test/DynamicBackendTests.hpp b/src/backends/backendsCommon/test/DynamicBackendTests.hpp index 6371e53..16c2f0d 100644 --- a/src/backends/backendsCommon/test/DynamicBackendTests.hpp +++ b/src/backends/backendsCommon/test/DynamicBackendTests.hpp @@ -1439,11 +1439,15 @@ void CreateReferenceDynamicBackendTestImpl() void CreateSampleDynamicBackendTestImpl() { using namespace armnn; - // Using the path override in CreationOptions to load the reference dynamic backend IRuntime::CreationOptions creationOptions; - IRuntimePtr runtime = IRuntime::Create(creationOptions); + // If m_DynamicBackendsPath is an empty string then we know this test will fail. + if(creationOptions.m_DynamicBackendsPath.empty()) + { + BOOST_FAIL("No dynamic backends paths have been set. Ensure DYNAMIC_BACKEND_PATHS is set at compile time."); + } + IRuntimePtr runtime = IRuntime::Create(creationOptions); const BackendRegistry& backendRegistry = BackendRegistryInstance(); BOOST_TEST(backendRegistry.Size() >= 1); @@ -1506,6 +1510,12 @@ void SampleDynamicBackendEndToEndTestImpl() using namespace boost::filesystem; // Create runtime in which test will run IRuntime::CreationOptions options; + // If m_DynamicBackendsPath is an empty string then we know this test will fail. + if(options.m_DynamicBackendsPath.empty()) + { + BOOST_FAIL("No dynamic backends paths have been set. Ensure DYNAMIC_BACKEND_PATHS is set at compile time."); + } + IRuntimePtr runtime(IRuntime::Create(options)); // Builds up the structure of the network.