aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/Network.cpp
diff options
context:
space:
mode:
authorMike Kelly <mike.kelly@arm.com>2021-06-27 22:39:21 +0100
committermike.kelly <mike.kelly@arm.com>2021-06-30 10:38:30 +0000
commit0d677db72eb7945e304fc49cedf744f0c34ed330 (patch)
treeee85b7f50e4ad9d5e568b46df46777513a2197cd /src/armnn/Network.cpp
parent6f24b1aac9cbf5dfb3918cb59a7e903ddcec420e (diff)
downloadarmnn-0d677db72eb7945e304fc49cedf744f0c34ed330.tar.gz
IVGCVSW-6114 Create multiple LoadedNetworks from one OptimizedNetwork
* Added IOptimizedNetwork constructor that takes another IOptimizedNetwork and a ModelOptions. * Changed PreCompiledLayer to use shared_ptr rather than unique_ptr to store the PreCompiledObject (no interface changes). * Added unit tests to ensure that PreCompiledLayer::Clone() clones the pointer to the PreCompiledObject correctly. Signed-off-by: Mike Kelly <mike.kelly@arm.com> Change-Id: I3ef56055e0d189ffce9e651882d34da16c70a240
Diffstat (limited to 'src/armnn/Network.cpp')
-rw-r--r--src/armnn/Network.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp
index 71f19313b8..74c195f676 100644
--- a/src/armnn/Network.cpp
+++ b/src/armnn/Network.cpp
@@ -543,6 +543,8 @@ void INetwork::Destroy(INetwork* network)
delete network;
}
+IOptimizedNetwork::IOptimizedNetwork(const IOptimizedNetwork& other, const ModelOptions& modelOptions)
+ : pOptimizedNetworkImpl(new OptimizedNetworkImpl(*other.pOptimizedNetworkImpl.get(), modelOptions)) {}
IOptimizedNetwork::IOptimizedNetwork(std::unique_ptr<Graph> graph)
: pOptimizedNetworkImpl(new OptimizedNetworkImpl(std::move(graph))) {}
@@ -2621,6 +2623,13 @@ void NetworkImpl::ExecuteStrategy(IStrategy& strategy) const
};
}
+OptimizedNetworkImpl::OptimizedNetworkImpl(const OptimizedNetworkImpl& other, const ModelOptions& modelOptions)
+ : m_Graph(new Graph(*other.m_Graph.get()))
+ , m_Guid(profiling::ProfilingService::GetNextGuid())
+ , m_ModelOptions(modelOptions)
+{
+}
+
OptimizedNetworkImpl::OptimizedNetworkImpl(std::unique_ptr<Graph> graph)
: m_Graph(std::move(graph)), m_Guid(profiling::ProfilingService::GetNextGuid())
{