From 18655b8d326f6109c6fedacf42b46dc4bc942324 Mon Sep 17 00:00:00 2001 From: Cathal Corbett Date: Mon, 13 Dec 2021 13:03:22 +0000 Subject: IVGCVSW-6630 Add new method AddPrecompiledLayer() to INetwork * Add new method AddPrecompiledLayer() to INetwork with Comments noting it is for backend users. * Added unit test to SubgraphViewTests.cpp. * Bug fix and code refactor in Graph.cpp specifically around Graph::SubstituteSubgraph(SubgraphView& subgraph, IConnectableLayer* substituteLayer) Change-Id: If2d816e5109e48ce920bf92d8823b39130c23a16 Signed-off-by: Cathal Corbett --- src/armnn/Network.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/armnn/Network.cpp') diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp index 54d9ae2028..c6f3f914b5 100644 --- a/src/armnn/Network.cpp +++ b/src/armnn/Network.cpp @@ -214,6 +214,13 @@ IConnectableLayer* INetwork::AddPooling3dLayer(const Pooling3dDescriptor& poolin return pNetworkImpl->AddPooling3dLayer(pooling3dDescriptor, name); } +IConnectableLayer* INetwork::AddPrecompiledLayer(const PreCompiledDescriptor& preCompiledDescriptor, + CompiledBlobPtr& compiledBlobPtr, + const Optional& backend) +{ + return pNetworkImpl->AddPrecompiledLayer(preCompiledDescriptor, compiledBlobPtr, backend); +} + IConnectableLayer* INetwork::AddActivationLayer(const ActivationDescriptor& activationDescriptor, const char* name) { @@ -2763,6 +2770,30 @@ IConnectableLayer* NetworkImpl::AddUnidirectionalSequenceLstmLayer( return layer; } +IConnectableLayer* NetworkImpl::AddPrecompiledLayer(const PreCompiledDescriptor& preCompiledDescriptor, + CompiledBlobPtr& compiledBlobPtr, + const Optional& backend) +{ + // Method use is for backend users. + const auto layer = m_Graph->AddLayer(preCompiledDescriptor, "pre-compiled"); + + // Assign the pre-compiled object to layer + // Pass only one compiled network, Arm NN does not handle multiple + // pre-compiled objects in a single pre-compiled layer currently + layer->SetPreCompiledObject(std::move(compiledBlobPtr)); + + if (backend.has_value()) + { + layer->SetBackendId(backend.value()); + } + else + { + layer->SetBackendId(layer->GetBackendHint().value()); + } + + return layer; +} + ARMNN_NO_DEPRECATE_WARN_BEGIN void NetworkImpl::Accept(ILayerVisitor& visitor) const { -- cgit v1.2.1