aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>2022-01-13 11:47:35 +0000
committerJim Flynn <jim.flynn@arm.com>2022-01-25 10:29:07 +0000
commit1c52a3863b0bdc9b474a7bc6caf8428ca0dec91a (patch)
tree242d7da732d6bb1584492d0b598c16af65df7c21
parent7740045352a0d4e90011bcf472c069bd537cba72 (diff)
downloadarmnn-1c52a3863b0bdc9b474a7bc6caf8428ca0dec91a.tar.gz
IVGCVSW-6676 Register CopyAndImportFactoryPairs to RefBackend and unit tests
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: I9d695418fe240b7115a1c624abcd459f1459301b
-rw-r--r--src/armnn/test/TensorHandleStrategyTest.cpp2
-rw-r--r--src/backends/reference/RefBackend.cpp15
-rw-r--r--src/backends/reference/backend.mk1
-rw-r--r--src/backends/reference/test/CMakeLists.txt1
-rw-r--r--src/backends/reference/test/RefBackendTests.cpp38
5 files changed, 54 insertions, 3 deletions
diff --git a/src/armnn/test/TensorHandleStrategyTest.cpp b/src/armnn/test/TensorHandleStrategyTest.cpp
index 374479b941..c591fffa43 100644
--- a/src/armnn/test/TensorHandleStrategyTest.cpp
+++ b/src/armnn/test/TensorHandleStrategyTest.cpp
@@ -402,7 +402,7 @@ TEST_CASE("RegisterCopyAndImportFactoryPairTest")
// Get mathing import factory id correctly
CHECK((registry.GetMatchingImportFactoryId(copyId) == importId));
- // Return empty id when Invailid Id is given
+ // Return empty id when Invalid Id is given
CHECK((registry.GetMatchingImportFactoryId("InvalidFactoryId") == ""));
}
diff --git a/src/backends/reference/RefBackend.cpp b/src/backends/reference/RefBackend.cpp
index ad52434ef8..c38d6b6710 100644
--- a/src/backends/reference/RefBackend.cpp
+++ b/src/backends/reference/RefBackend.cpp
@@ -38,7 +38,12 @@ IBackendInternal::IWorkloadFactoryPtr RefBackend::CreateWorkloadFactory(
auto memoryManager = std::make_shared<RefMemoryManager>();
tensorHandleFactoryRegistry.RegisterMemoryManager(memoryManager);
- tensorHandleFactoryRegistry.RegisterFactory(std::make_unique<RefTensorHandleFactory>(memoryManager));
+
+ std::unique_ptr<RefTensorHandleFactory> factory = std::make_unique<RefTensorHandleFactory>(memoryManager);
+ // Register copy and import factory pair
+ tensorHandleFactoryRegistry.RegisterCopyAndImportFactoryPair(factory->GetId(), factory->GetId());
+ // Register the factory
+ tensorHandleFactoryRegistry.RegisterFactory(std::move(factory));
return std::make_unique<RefWorkloadFactory>(PolymorphicPointerDowncast<RefMemoryManager>(memoryManager));
}
@@ -84,7 +89,13 @@ void RefBackend::RegisterTensorHandleFactories(class TensorHandleFactoryRegistry
auto memoryManager = std::make_shared<RefMemoryManager>();
registry.RegisterMemoryManager(memoryManager);
- registry.RegisterFactory(std::make_unique<RefTensorHandleFactory>(memoryManager));
+
+ std::unique_ptr<RefTensorHandleFactory> factory = std::make_unique<RefTensorHandleFactory>(memoryManager);
+
+ // Register copy and import factory pair
+ registry.RegisterCopyAndImportFactoryPair(factory->GetId(), factory->GetId());
+ // Register the factory
+ registry.RegisterFactory(std::move(factory));
}
std::unique_ptr<ICustomAllocator> RefBackend::GetDefaultAllocator() const
diff --git a/src/backends/reference/backend.mk b/src/backends/reference/backend.mk
index 0ddb16a23b..33e161c6d8 100644
--- a/src/backends/reference/backend.mk
+++ b/src/backends/reference/backend.mk
@@ -133,6 +133,7 @@ ifeq ($(ARMNN_REF_ENABLED),1)
BACKEND_TEST_SOURCES := \
test/ArgMinMaxTests.cpp \
+ test/RefBackendTests.cpp \
test/RefCreateWorkloadTests.cpp \
test/RefDetectionPostProcessTests.cpp \
test/RefEndToEndTests.cpp \
diff --git a/src/backends/reference/test/CMakeLists.txt b/src/backends/reference/test/CMakeLists.txt
index d5ce3553f1..9d6572a4af 100644
--- a/src/backends/reference/test/CMakeLists.txt
+++ b/src/backends/reference/test/CMakeLists.txt
@@ -5,6 +5,7 @@
list(APPEND armnnRefBackendUnitTests_sources
ArgMinMaxTests.cpp
+ RefBackendTests.cpp
RefCreateWorkloadTests.cpp
RefDetectionPostProcessTests.cpp
RefEndToEndTests.cpp
diff --git a/src/backends/reference/test/RefBackendTests.cpp b/src/backends/reference/test/RefBackendTests.cpp
new file mode 100644
index 0000000000..5154ea4c8f
--- /dev/null
+++ b/src/backends/reference/test/RefBackendTests.cpp
@@ -0,0 +1,38 @@
+//
+// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include <reference/RefBackend.hpp>
+#include <reference/RefTensorHandleFactory.hpp>
+
+#include <doctest/doctest.h>
+
+using namespace armnn;
+
+TEST_SUITE("RefBackendTests")
+{
+TEST_CASE("RefRegisterTensorHandleFactoriesMatchingImportFactoryId")
+{
+ auto refBackend = std::make_unique<RefBackend>();
+ TensorHandleFactoryRegistry registry;
+ refBackend->RegisterTensorHandleFactories(registry);
+
+ // When calling RegisterTensorHandleFactories, CopyAndImportFactoryPair is registered
+ // Get matching import factory id correctly
+ CHECK((registry.GetMatchingImportFactoryId(RefTensorHandleFactory::GetIdStatic()) ==
+ RefTensorHandleFactory::GetIdStatic()));
+}
+
+TEST_CASE("RefCreateWorkloadFactoryMatchingImportFactoryId")
+{
+ auto refBackend = std::make_unique<RefBackend>();
+ TensorHandleFactoryRegistry registry;
+ refBackend->CreateWorkloadFactory(registry);
+
+ // When calling CreateWorkloadFactory, CopyAndImportFactoryPair is registered
+ // Get matching import factory id correctly
+ CHECK((registry.GetMatchingImportFactoryId(RefTensorHandleFactory::GetIdStatic()) ==
+ RefTensorHandleFactory::GetIdStatic()));
+}
+}