aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon/test/mockBackend
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/backendsCommon/test/mockBackend')
-rw-r--r--src/backends/backendsCommon/test/mockBackend/MockImportBackend.cpp115
-rw-r--r--src/backends/backendsCommon/test/mockBackend/MockImportBackend.hpp53
-rw-r--r--src/backends/backendsCommon/test/mockBackend/MockImportLayerSupport.hpp46
3 files changed, 214 insertions, 0 deletions
diff --git a/src/backends/backendsCommon/test/mockBackend/MockImportBackend.cpp b/src/backends/backendsCommon/test/mockBackend/MockImportBackend.cpp
new file mode 100644
index 0000000000..ebe94348fc
--- /dev/null
+++ b/src/backends/backendsCommon/test/mockBackend/MockImportBackend.cpp
@@ -0,0 +1,115 @@
+//
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "MockImportBackend.hpp"
+#include "MockImportLayerSupport.hpp"
+
+#include <armnn/BackendRegistry.hpp>
+#include <armnn/backends/IBackendContext.hpp>
+#include <armnn/backends/IMemoryManager.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
+
+#include <reference/RefWorkloadFactory.hpp>
+#include <reference/RefTensorHandleFactory.hpp>
+
+#include <Optimizer.hpp>
+
+namespace armnn
+{
+
+MockImportBackendInitialiser::MockImportBackendInitialiser()
+{
+ BackendRegistryInstance().Register(MockImportBackend::GetIdStatic(),
+ []()
+ {
+ return IBackendInternalUniquePtr(new MockImportBackend);
+ });
+}
+
+MockImportBackendInitialiser::~MockImportBackendInitialiser()
+{
+ try
+ {
+ BackendRegistryInstance().Deregister(MockImportBackend::GetIdStatic());
+ }
+ catch (...)
+ {
+ std::cerr << "could not deregister mock import backend" << std::endl;
+ }
+}
+
+const BackendId& MockImportBackend::GetIdStatic()
+{
+ static const BackendId s_Id{ MockImportBackendId() };
+ return s_Id;
+}
+
+IBackendInternal::IWorkloadFactoryPtr MockImportBackend::CreateWorkloadFactory(
+ const IBackendInternal::IMemoryManagerSharedPtr& memoryManager) const
+{
+ return std::make_unique<RefWorkloadFactory>(PolymorphicPointerDowncast<RefMemoryManager>(memoryManager));
+}
+
+IBackendInternal::IWorkloadFactoryPtr MockImportBackend::CreateWorkloadFactory(
+ class TensorHandleFactoryRegistry& tensorHandleFactoryRegistry) const
+{
+ auto memoryManager = std::make_shared<RefMemoryManager>();
+
+ tensorHandleFactoryRegistry.RegisterMemoryManager(memoryManager);
+ tensorHandleFactoryRegistry.RegisterFactory(std::make_unique<RefTensorHandleFactory>(memoryManager));
+
+ return std::make_unique<RefWorkloadFactory>(PolymorphicPointerDowncast<RefMemoryManager>(memoryManager));
+}
+
+IBackendInternal::IBackendContextPtr MockImportBackend::CreateBackendContext(const IRuntime::CreationOptions&) const
+{
+ return IBackendContextPtr{};
+}
+
+IBackendInternal::IBackendProfilingContextPtr MockImportBackend::CreateBackendProfilingContext(
+ const IRuntime::CreationOptions&, IBackendProfilingPtr&)
+{
+ return IBackendProfilingContextPtr{};
+}
+
+IBackendInternal::IMemoryManagerUniquePtr MockImportBackend::CreateMemoryManager() const
+{
+ return std::make_unique<RefMemoryManager>();
+}
+
+IBackendInternal::Optimizations MockImportBackend::GetOptimizations() const
+{
+ return Optimizations{};
+}
+
+IBackendInternal::ILayerSupportSharedPtr MockImportBackend::GetLayerSupport() const
+{
+ static ILayerSupportSharedPtr layerSupport{new MockImportLayerSupport};
+ return layerSupport;
+}
+
+OptimizationViews MockImportBackend::OptimizeSubgraphView(const SubgraphView& subgraph) const
+{
+ OptimizationViews optimizationViews;
+
+ optimizationViews.AddUntouchedSubgraph(SubgraphView(subgraph));
+
+ return optimizationViews;
+}
+
+std::vector<ITensorHandleFactory::FactoryId> MockImportBackend::GetHandleFactoryPreferences() const
+{
+ return std::vector<ITensorHandleFactory::FactoryId> { RefTensorHandleFactory::GetIdStatic() };
+}
+
+void MockImportBackend::RegisterTensorHandleFactories(class TensorHandleFactoryRegistry& registry)
+{
+ auto memoryManager = std::make_shared<RefMemoryManager>();
+
+ registry.RegisterMemoryManager(memoryManager);
+ registry.RegisterFactory(std::make_unique<RefTensorHandleFactory>(memoryManager));
+}
+
+} // namespace armnn
diff --git a/src/backends/backendsCommon/test/mockBackend/MockImportBackend.hpp b/src/backends/backendsCommon/test/mockBackend/MockImportBackend.hpp
new file mode 100644
index 0000000000..ecc661f43b
--- /dev/null
+++ b/src/backends/backendsCommon/test/mockBackend/MockImportBackend.hpp
@@ -0,0 +1,53 @@
+//
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+
+#include <armnn/backends/IBackendInternal.hpp>
+
+namespace armnn
+{
+
+constexpr const char* MockImportBackendId() { return "MockRef"; }
+
+class MockImportBackendInitialiser
+{
+public:
+ MockImportBackendInitialiser();
+ ~MockImportBackendInitialiser();
+};
+
+class MockImportBackend : public IBackendInternal
+{
+public:
+ MockImportBackend() = default;
+ ~MockImportBackend() = default;
+
+ static const BackendId& GetIdStatic();
+ const BackendId& GetId() const override { return GetIdStatic(); }
+
+ IBackendInternal::IMemoryManagerUniquePtr CreateMemoryManager() const override;
+
+ IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory(
+ const IBackendInternal::IMemoryManagerSharedPtr& memoryManager = nullptr) const override;
+
+ IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory(
+ class TensorHandleFactoryRegistry& tensorHandleFactoryRegistry) const override;
+
+ IBackendInternal::IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const override;
+
+ IBackendInternal::IBackendProfilingContextPtr CreateBackendProfilingContext(
+ const IRuntime::CreationOptions& creationOptions, IBackendProfilingPtr& backendProfiling) override;
+
+ IBackendInternal::Optimizations GetOptimizations() const override;
+ IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override;
+
+ OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const override;
+
+ std::vector<ITensorHandleFactory::FactoryId> GetHandleFactoryPreferences() const override;
+
+ void RegisterTensorHandleFactories(class TensorHandleFactoryRegistry& registry) override;
+};
+
+} // namespace armnn
diff --git a/src/backends/backendsCommon/test/mockBackend/MockImportLayerSupport.hpp b/src/backends/backendsCommon/test/mockBackend/MockImportLayerSupport.hpp
new file mode 100644
index 0000000000..75e637efdf
--- /dev/null
+++ b/src/backends/backendsCommon/test/mockBackend/MockImportLayerSupport.hpp
@@ -0,0 +1,46 @@
+//
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+
+#include <armnn/utility/IgnoreUnused.hpp>
+
+#include <backendsCommon/LayerSupportBase.hpp>
+
+namespace armnn
+{
+
+class MockImportLayerSupport : public LayerSupportBase
+{
+public:
+ bool IsAdditionSupported(const TensorInfo& input0,
+ const TensorInfo& input1,
+ const TensorInfo& output,
+ Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override
+ {
+ IgnoreUnused(input0);
+ IgnoreUnused(input1);
+ IgnoreUnused(output);
+ IgnoreUnused(reasonIfUnsupported);
+ return true;
+ }
+
+ bool IsInputSupported(const TensorInfo& input,
+ Optional<std::string&> reasonIfUnsupported) const override
+ {
+ IgnoreUnused(input);
+ IgnoreUnused(reasonIfUnsupported);
+ return true;
+ }
+
+ bool IsOutputSupported(const TensorInfo& output,
+ Optional<std::string&> reasonIfUnsupported) const override
+ {
+ IgnoreUnused(output);
+ IgnoreUnused(reasonIfUnsupported);
+ return true;
+ }
+};
+
+} // namespace armnn