2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // See LICENSE file in the project root for full license information.
6 #include "RefDepthwiseConvolution2dFloat32Workload.hpp"
8 #include "ConvImpl.hpp"
9 #include "RefWorkloadUtils.hpp"
11 #include "Profiling.hpp"
15 RefDepthwiseConvolution2dFloat32Workload::RefDepthwiseConvolution2dFloat32Workload(
16 const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info)
17 : Float32Workload<DepthwiseConvolution2dQueueDescriptor>(descriptor, info),
18 m_Weight(std::make_unique<ScopedCpuTensorHandle>(*(descriptor.m_Weight))),
19 m_Bias(descriptor.m_Parameters.m_BiasEnabled
20 ? std::make_unique<ScopedCpuTensorHandle>(*(descriptor.m_Bias)) : nullptr) {}
22 void RefDepthwiseConvolution2dFloat32Workload::Execute() const
24 ARMNN_SCOPED_PROFILING_EVENT(Compute::CpuRef, "RefDepthwiseConvolution2dFloat32Workload_Execute");
26 float* outputData = GetOutputTensorDataFloat(0, m_Data);
27 const float* inputData = GetInputTensorDataFloat(0, m_Data);
28 const float* weightData = m_Weight->template GetConstTensor<float>();
29 const float* biasData = m_Data.m_Parameters.m_BiasEnabled ?
30 m_Bias->template GetConstTensor<float>() : nullptr;
31 const TensorInfo& filterInfo = m_Weight->GetTensorInfo();
33 ConvImpl<armnn::DepthwiseConvolution2dQueueDescriptor, float, float, float>
34 (m_Data, inputData, 0.0f, 0, weightData, 0.0f, 0, biasData, outputData, 0.0f, 0, filterInfo, true);