aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/layers/Convolution2dLayer.cpp
diff options
context:
space:
mode:
authorFrancis Murtagh <francis.murtagh@arm.com>2021-04-20 16:37:55 +0100
committerFrancis Murtagh <francis.murtagh@arm.com>2021-04-20 16:38:04 +0100
commit4af561666b0ce5c12164447a5f7eb9722abb85f8 (patch)
tree8fc485d875aa91d6920c9104505541fb94b832b6 /src/armnn/layers/Convolution2dLayer.cpp
parentec8b333001808f532d17a7ca2efd563f4181ff40 (diff)
downloadarmnn-4af561666b0ce5c12164447a5f7eb9722abb85f8.tar.gz
IVGCVSW-5816 Constant memory access
* Add new class ManagedConstTensorHandle to Unmap when out of scope * Integrate into existing layers that have constants * Add unit tests Signed-off-by: Francis Murtagh <francis.murtagh@arm.com> Change-Id: I0a05e14e438804b37e9862e76b5ca329483f6b45
Diffstat (limited to 'src/armnn/layers/Convolution2dLayer.cpp')
-rw-r--r--src/armnn/layers/Convolution2dLayer.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/armnn/layers/Convolution2dLayer.cpp b/src/armnn/layers/Convolution2dLayer.cpp
index cf7cf0f129..d7a7a330ef 100644
--- a/src/armnn/layers/Convolution2dLayer.cpp
+++ b/src/armnn/layers/Convolution2dLayer.cpp
@@ -145,12 +145,14 @@ Layer::ConstantTensors Convolution2dLayer::GetConstantTensorsByRef()
void Convolution2dLayer::Accept(ILayerVisitor& visitor) const
{
- ConstTensor weightsTensor(m_Weight->GetTensorInfo(), m_Weight->Map(true)) ;
- Optional<ConstTensor> optionalBiasTensor = EmptyOptional();
+ ManagedConstTensorHandle managedWeight(m_Weight);
+ ConstTensor weightsTensor(managedWeight.GetTensorInfo(), managedWeight.Map());
+ Optional<ConstTensor> optionalBiasTensor = EmptyOptional();
+ ManagedConstTensorHandle managedBias(m_Bias);
if (GetParameters().m_BiasEnabled)
{
- ConstTensor biasTensor(m_Bias->GetTensorInfo(), m_Bias->Map(true));
+ ConstTensor biasTensor(managedBias.GetTensorInfo(), managedBias.Map());
optionalBiasTensor = Optional<ConstTensor>(biasTensor);
}
@@ -159,11 +161,13 @@ void Convolution2dLayer::Accept(ILayerVisitor& visitor) const
void Convolution2dLayer::ExecuteStrategy(IStrategy& strategy) const
{
- std::vector<armnn::ConstTensor> constTensors { {m_Weight->GetTensorInfo(), m_Weight->Map(true)} };
+ ManagedConstTensorHandle managedWeight(m_Weight);
+ std::vector<armnn::ConstTensor> constTensors { { managedWeight.GetTensorInfo(), managedWeight.Map() } };
+ ManagedConstTensorHandle managedBias(m_Bias);
if (GetParameters().m_BiasEnabled)
{
- constTensors.emplace_back(ConstTensor(m_Bias->GetTensorInfo(), m_Bias->Map(true)));
+ constTensors.emplace_back(ConstTensor(managedBias.GetTensorInfo(), managedBias.Map()));
}
strategy.ExecuteStrategy(this, GetParameters(), constTensors, GetName());