aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadik Armagan <sadik.armagan@arm.com>2020-08-25 11:48:00 +0100
committerfinn.williams <finn.williams@arm.com>2020-08-25 13:02:43 +0000
commitab3bd4d48e75f75c1729a177b35aff61ed0fcd4e (patch)
tree8992d946f488ef7d0444ba88712008135b83a375
parent2b1c155d2eeeb9650d49a7baec9b68b4aca72bb1 (diff)
downloadarmnn-ab3bd4d48e75f75c1729a177b35aff61ed0fcd4e.tar.gz
IVGCVSW-5109 'Add SupportsInPlaceComputation to TensorHandleFactories'
* Added functionality to query if TensorHandleFactory supports InPlaceComputation Signed-off-by: Sadik Armagan <sadik.armagan@arm.com> Change-Id: Icf5bfc5f999fc5d03681dcb8cec88d921842458b
-rw-r--r--include/armnn/backends/ITensorHandleFactory.hpp2
-rw-r--r--src/backends/neon/NeonTensorHandleFactory.cpp5
-rw-r--r--src/backends/neon/NeonTensorHandleFactory.hpp2
-rw-r--r--src/backends/neon/test/NeonTensorHandleTests.cpp9
-rw-r--r--src/backends/reference/test/RefTensorHandleTests.cpp9
5 files changed, 27 insertions, 0 deletions
diff --git a/include/armnn/backends/ITensorHandleFactory.hpp b/include/armnn/backends/ITensorHandleFactory.hpp
index 9d8f0cdda7..ae2f44e8c6 100644
--- a/include/armnn/backends/ITensorHandleFactory.hpp
+++ b/include/armnn/backends/ITensorHandleFactory.hpp
@@ -76,6 +76,8 @@ public:
virtual const FactoryId& GetId() const = 0;
+ virtual bool SupportsInPlaceComputation() const { return false; }
+
virtual bool SupportsSubTensors() const = 0;
virtual bool SupportsMapUnmap() const final { return true; }
diff --git a/src/backends/neon/NeonTensorHandleFactory.cpp b/src/backends/neon/NeonTensorHandleFactory.cpp
index ae6ab59efd..1dd83950cd 100644
--- a/src/backends/neon/NeonTensorHandleFactory.cpp
+++ b/src/backends/neon/NeonTensorHandleFactory.cpp
@@ -96,6 +96,11 @@ const FactoryId& NeonTensorHandleFactory::GetId() const
return GetIdStatic();
}
+bool NeonTensorHandleFactory::SupportsInPlaceComputation() const
+{
+ return true;
+}
+
bool NeonTensorHandleFactory::SupportsSubTensors() const
{
return true;
diff --git a/src/backends/neon/NeonTensorHandleFactory.hpp b/src/backends/neon/NeonTensorHandleFactory.hpp
index 41875c988d..954a71451b 100644
--- a/src/backends/neon/NeonTensorHandleFactory.hpp
+++ b/src/backends/neon/NeonTensorHandleFactory.hpp
@@ -61,6 +61,8 @@ public:
const FactoryId& GetId() const override;
+ bool SupportsInPlaceComputation() const override;
+
bool SupportsSubTensors() const override;
MemorySourceFlags GetExportFlags() const override;
diff --git a/src/backends/neon/test/NeonTensorHandleTests.cpp b/src/backends/neon/test/NeonTensorHandleTests.cpp
index 97c7dd3474..3cea29323a 100644
--- a/src/backends/neon/test/NeonTensorHandleTests.cpp
+++ b/src/backends/neon/test/NeonTensorHandleTests.cpp
@@ -697,4 +697,13 @@ BOOST_AUTO_TEST_CASE(NeonTensorHandleFactoryImport)
memoryManager->Release();
}
+BOOST_AUTO_TEST_CASE(NeonTensorHandleSupportsInPlaceComputation)
+{
+ std::shared_ptr<NeonMemoryManager> memoryManager = std::make_shared<NeonMemoryManager>();
+ NeonTensorHandleFactory handleFactory(memoryManager);
+
+ // NeonTensorHandleFactory supports InPlaceComputation
+ ARMNN_ASSERT(handleFactory.SupportsInPlaceComputation());
+}
+
BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/backends/reference/test/RefTensorHandleTests.cpp b/src/backends/reference/test/RefTensorHandleTests.cpp
index 3635a32472..1ef6de9b32 100644
--- a/src/backends/reference/test/RefTensorHandleTests.cpp
+++ b/src/backends/reference/test/RefTensorHandleTests.cpp
@@ -158,6 +158,15 @@ BOOST_AUTO_TEST_CASE(RefTensorHandleGetCapabilities)
BOOST_CHECK(capabilities.empty());
}
+BOOST_AUTO_TEST_CASE(RefTensorHandleSupportsInPlaceComputation)
+{
+ std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>();
+ RefTensorHandleFactory handleFactory(memoryManager);
+
+ // RefTensorHandleFactory does not support InPlaceComputation
+ ARMNN_ASSERT(!(handleFactory.SupportsInPlaceComputation()));
+}
+
#if !defined(__ANDROID__)
// Only run these tests on non Android platforms
BOOST_AUTO_TEST_CASE(CheckSourceType)