aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/Network.cpp
diff options
context:
space:
mode:
authorCathal Corbett <cathal.corbett@arm.com>2021-12-13 13:03:22 +0000
committerCathal Corbett <cathal.corbett@arm.com>2021-12-14 14:09:55 +0000
commit18655b8d326f6109c6fedacf42b46dc4bc942324 (patch)
tree79a4cff6e46ea41f404a693ac3a9de2787498f06 /src/armnn/Network.cpp
parenta097d2a0ed8e30d5aaf6d29ec18d0c39201b7b67 (diff)
downloadarmnn-18655b8d326f6109c6fedacf42b46dc4bc942324.tar.gz
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 <cathal.corbett@arm.com>
Diffstat (limited to 'src/armnn/Network.cpp')
-rw-r--r--src/armnn/Network.cpp31
1 files changed, 31 insertions, 0 deletions
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<BackendId>& 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<BackendId>& backend)
+{
+ // Method use is for backend users.
+ const auto layer = m_Graph->AddLayer<PreCompiledLayer>(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
{