From: James Conroy Date: Fri, 25 Oct 2019 08:44:14 +0000 (+0100) Subject: IVGCVSW-3962 Return 0 for Neon GetExportFlags() X-Git-Tag: submit/tizen/20200316.035456~115 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=57d10b7f976b4eddee64e15d563bd040f3331702;p=platform%2Fupstream%2Farmnn.git IVGCVSW-3962 Return 0 for Neon GetExportFlags() * Fixes issue where MemImport workload was being inserted into a graph when changing from a NEON to Ref workload. A MemCopy will now be performed instead. * Improves existing ImportAlignedPointerTest by adding check for expected output. Signed-off-by: James Conroy Change-Id: I606dbbe0166731c62fbe4cc1966c558ade66d6bb --- diff --git a/src/backends/backendsCommon/test/EndToEndTestImpl.hpp b/src/backends/backendsCommon/test/EndToEndTestImpl.hpp index efaffb9..ee9d2bc 100644 --- a/src/backends/backendsCommon/test/EndToEndTestImpl.hpp +++ b/src/backends/backendsCommon/test/EndToEndTestImpl.hpp @@ -369,6 +369,11 @@ inline void ImportAlignedPointerTest(std::vector backends) std::vector outputData(4); + std::vector expectedOutput + { + 1.0f, 4.0f, 9.0f, 16.0f + }; + InputTensors inputTensors { {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}, @@ -378,8 +383,6 @@ inline void ImportAlignedPointerTest(std::vector backends) {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())} }; - // The result of the inference is not important, just the fact that there - // should not be CopyMemGeneric workloads. runtime->GetProfiler(netId)->EnableProfiling(true); // Do the inference @@ -394,12 +397,17 @@ inline void ImportAlignedPointerTest(std::vector backends) // Contains ActivationWorkload std::size_t found = dump.find("ActivationWorkload"); BOOST_TEST(found != std::string::npos); + // Contains SyncMemGeneric found = dump.find("SyncMemGeneric"); BOOST_TEST(found != std::string::npos); + // Does not contain CopyMemGeneric found = dump.find("CopyMemGeneric"); BOOST_TEST(found == std::string::npos); + + // Check output is as expected + BOOST_TEST(outputData == expectedOutput); } inline void ImportOnlyWorkload(std::vector backends) diff --git a/src/backends/neon/NeonTensorHandleFactory.cpp b/src/backends/neon/NeonTensorHandleFactory.cpp index 4ccbb7b..80f46d2 100644 --- a/src/backends/neon/NeonTensorHandleFactory.cpp +++ b/src/backends/neon/NeonTensorHandleFactory.cpp @@ -60,7 +60,7 @@ std::unique_ptr NeonTensorHandleFactory::CreateTensorHandle(const } // If we are not Managing the Memory then we must be importing tensorHandle->SetImportEnabledFlag(!IsMemoryManaged); - tensorHandle->SetImportFlags(m_ImportFlags); + tensorHandle->SetImportFlags(GetImportFlags()); return tensorHandle; } @@ -76,7 +76,7 @@ std::unique_ptr NeonTensorHandleFactory::CreateTensorHandle(const } // If we are not Managing the Memory then we must be importing tensorHandle->SetImportEnabledFlag(!IsMemoryManaged); - tensorHandle->SetImportFlags(m_ImportFlags); + tensorHandle->SetImportFlags(GetImportFlags()); return tensorHandle; } @@ -99,12 +99,12 @@ bool NeonTensorHandleFactory::SupportsSubTensors() const MemorySourceFlags NeonTensorHandleFactory::GetExportFlags() const { - return m_ExportFlags; + return 0; } MemorySourceFlags NeonTensorHandleFactory::GetImportFlags() const { - return m_ImportFlags; + return static_cast(MemorySource::Malloc); } } // namespace armnn diff --git a/src/backends/neon/NeonTensorHandleFactory.hpp b/src/backends/neon/NeonTensorHandleFactory.hpp index d9b6404..8a8ac5c 100644 --- a/src/backends/neon/NeonTensorHandleFactory.hpp +++ b/src/backends/neon/NeonTensorHandleFactory.hpp @@ -17,9 +17,7 @@ class NeonTensorHandleFactory : public ITensorHandleFactory { public: NeonTensorHandleFactory(std::weak_ptr mgr) - : m_MemoryManager(mgr), - m_ImportFlags(static_cast(MemorySource::Malloc)), - m_ExportFlags(static_cast(MemorySource::Malloc)) + : m_MemoryManager(mgr) {} std::unique_ptr CreateSubTensorHandle(ITensorHandle& parent, @@ -50,8 +48,6 @@ public: private: mutable std::shared_ptr m_MemoryManager; - MemorySourceFlags m_ImportFlags; - MemorySourceFlags m_ExportFlags; }; } // namespace armnn