From 4af561666b0ce5c12164447a5f7eb9722abb85f8 Mon Sep 17 00:00:00 2001 From: Francis Murtagh Date: Tue, 20 Apr 2021 16:37:55 +0100 Subject: 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 Change-Id: I0a05e14e438804b37e9862e76b5ca329483f6b45 --- src/armnn/layers/BatchNormalizationLayer.cpp | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'src/armnn/layers/BatchNormalizationLayer.cpp') diff --git a/src/armnn/layers/BatchNormalizationLayer.cpp b/src/armnn/layers/BatchNormalizationLayer.cpp index 680d9e56a0..83ed45aa33 100644 --- a/src/armnn/layers/BatchNormalizationLayer.cpp +++ b/src/armnn/layers/BatchNormalizationLayer.cpp @@ -72,20 +72,31 @@ Layer::ConstantTensors BatchNormalizationLayer::GetConstantTensorsByRef() void BatchNormalizationLayer::Accept(ILayerVisitor& visitor) const { - ConstTensor meanTensor(m_Mean->GetTensorInfo(), m_Mean->Map(true)); - ConstTensor varianceTensor(m_Variance->GetTensorInfo(), m_Variance->Map(true)); - ConstTensor betaTensor(m_Beta->GetTensorInfo(), m_Beta->Map(true)); - ConstTensor gammaTensor(m_Gamma->GetTensorInfo(), m_Gamma->Map(true)); + ManagedConstTensorHandle managedMean(m_Mean); + ManagedConstTensorHandle managedVariance(m_Variance); + ManagedConstTensorHandle managedBeta(m_Beta); + ManagedConstTensorHandle managedGamma(m_Gamma); + + ConstTensor meanTensor(managedMean.GetTensorInfo(), managedMean.Map()); + ConstTensor varianceTensor(managedVariance.GetTensorInfo(), managedVariance.Map()); + ConstTensor betaTensor(managedBeta.GetTensorInfo(), managedBeta.Map()); + ConstTensor gammaTensor(managedGamma.GetTensorInfo(), managedGamma.Map()); + visitor.VisitBatchNormalizationLayer( this, GetParameters(), meanTensor, varianceTensor, betaTensor, gammaTensor, GetName()); } void BatchNormalizationLayer::ExecuteStrategy(IStrategy& strategy) const { - std::vector constTensors { {m_Mean->GetTensorInfo(), m_Mean->Map(true)}, - {m_Variance->GetTensorInfo(), m_Variance->Map(true)}, - {m_Beta->GetTensorInfo(), m_Beta->Map(true)}, - {m_Gamma->GetTensorInfo(), m_Gamma->Map(true)} }; + ManagedConstTensorHandle managedMean(m_Mean); + ManagedConstTensorHandle managedVariance(m_Variance); + ManagedConstTensorHandle managedBeta(m_Beta); + ManagedConstTensorHandle managedGamma(m_Gamma); + + std::vector constTensors { { managedMean.GetTensorInfo(), managedMean.Map() }, + { managedVariance.GetTensorInfo(), managedVariance.Map() }, + { managedBeta.GetTensorInfo(), managedBeta.Map() }, + { managedGamma.GetTensorInfo(), managedGamma.Map() } }; strategy.ExecuteStrategy(this, GetParameters(), constTensors, GetName()); } -- cgit v1.2.1