diff options
author | James Conroy <james.conroy@arm.com> | 2019-10-25 09:44:14 +0100 |
---|---|---|
committer | Matteo Martincigh <matteo.martincigh@arm.com> | 2019-10-25 12:03:51 +0000 |
commit | 57d10b7f976b4eddee64e15d563bd040f3331702 (patch) | |
tree | 156c68b1c7974f4e86ad33bd93ceb65571688c2a /src/backends | |
parent | 8b20065e8e139901f09e2da1a761c6225048102a (diff) | |
download | armnn-57d10b7f976b4eddee64e15d563bd040f3331702.tar.gz |
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 <james.conroy@arm.com>
Change-Id: I606dbbe0166731c62fbe4cc1966c558ade66d6bb
Diffstat (limited to 'src/backends')
-rw-r--r-- | src/backends/backendsCommon/test/EndToEndTestImpl.hpp | 12 | ||||
-rw-r--r-- | src/backends/neon/NeonTensorHandleFactory.cpp | 8 | ||||
-rw-r--r-- | src/backends/neon/NeonTensorHandleFactory.hpp | 6 |
3 files changed, 15 insertions, 11 deletions
diff --git a/src/backends/backendsCommon/test/EndToEndTestImpl.hpp b/src/backends/backendsCommon/test/EndToEndTestImpl.hpp index efaffb9b67..ee9d2bc026 100644 --- a/src/backends/backendsCommon/test/EndToEndTestImpl.hpp +++ b/src/backends/backendsCommon/test/EndToEndTestImpl.hpp @@ -369,6 +369,11 @@ inline void ImportAlignedPointerTest(std::vector<BackendId> backends) std::vector<float> outputData(4); + std::vector<float> 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<BackendId> 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<BackendId> 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<BackendId> backends) diff --git a/src/backends/neon/NeonTensorHandleFactory.cpp b/src/backends/neon/NeonTensorHandleFactory.cpp index 4ccbb7b64f..80f46d2237 100644 --- a/src/backends/neon/NeonTensorHandleFactory.cpp +++ b/src/backends/neon/NeonTensorHandleFactory.cpp @@ -60,7 +60,7 @@ std::unique_ptr<ITensorHandle> 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<ITensorHandle> 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<MemorySourceFlags>(MemorySource::Malloc); } } // namespace armnn diff --git a/src/backends/neon/NeonTensorHandleFactory.hpp b/src/backends/neon/NeonTensorHandleFactory.hpp index d9b64045e6..8a8ac5cdcb 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<NeonMemoryManager> mgr) - : m_MemoryManager(mgr), - m_ImportFlags(static_cast<MemorySourceFlags>(MemorySource::Malloc)), - m_ExportFlags(static_cast<MemorySourceFlags>(MemorySource::Malloc)) + : m_MemoryManager(mgr) {} std::unique_ptr<ITensorHandle> CreateSubTensorHandle(ITensorHandle& parent, @@ -50,8 +48,6 @@ public: private: mutable std::shared_ptr<NeonMemoryManager> m_MemoryManager; - MemorySourceFlags m_ImportFlags; - MemorySourceFlags m_ExportFlags; }; } // namespace armnn |