aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJames Conroy <james.conroy@arm.com>2019-10-25 09:44:14 +0100
committerMatteo Martincigh <matteo.martincigh@arm.com>2019-10-25 12:03:51 +0000
commit57d10b7f976b4eddee64e15d563bd040f3331702 (patch)
tree156c68b1c7974f4e86ad33bd93ceb65571688c2a /src
parent8b20065e8e139901f09e2da1a761c6225048102a (diff)
downloadarmnn-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')
-rw-r--r--src/backends/backendsCommon/test/EndToEndTestImpl.hpp12
-rw-r--r--src/backends/neon/NeonTensorHandleFactory.cpp8
-rw-r--r--src/backends/neon/NeonTensorHandleFactory.hpp6
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