blob: 00d849c603cea9ac8d6e02a7f1a7369c61fa43f7 [file] [log] [blame]
Jim Flynn983daec2019-05-29 16:20:16 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "ClDequantizeWorkload.hpp"
7#include "ClWorkloadUtils.hpp"
8
9#include <aclCommon/ArmComputeTensorUtils.hpp>
Jan Eilers3c9e0452020-04-10 13:00:44 +010010#include <armnn/utility/PolymorphicDowncast.hpp>
James Conroy1f58f032021-04-27 17:13:27 +010011#include <backendsCommon/TensorHandle.hpp>
Jim Flynn983daec2019-05-29 16:20:16 +010012
13#include <arm_compute/core/Types.h>
14
15#include <cl/ClLayerSupport.hpp>
16#include <cl/ClTensorHandle.hpp>
17
Jim Flynn983daec2019-05-29 16:20:16 +010018namespace armnn
19{
20using namespace armcomputetensorutils;
21
22arm_compute::Status ClDequantizeWorkloadValidate(const TensorInfo& input, const TensorInfo& output)
23{
24 const arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);
25 const arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);
26
27 return arm_compute::CLDequantizationLayer::validate(&aclInputInfo, &aclOutputInfo);
28}
29
30ClDequantizeWorkload::ClDequantizeWorkload(const DequantizeQueueDescriptor& descriptor,
Sadik Armagane9444752020-12-02 11:28:58 +000031 const WorkloadInfo& workloadInfo,
32 const arm_compute::CLCompileContext& clCompileContext)
Jim Flynn983daec2019-05-29 16:20:16 +010033 : BaseWorkload<DequantizeQueueDescriptor>(descriptor, workloadInfo)
34{
Keith Davisa8565012020-02-14 12:22:40 +000035 m_Data.ValidateInputsOutputs("ClDequantizeWorkload", 1, 1);
36
Jan Eilers3c9e0452020-04-10 13:00:44 +010037 arm_compute::ICLTensor& input = armnn::PolymorphicPointerDowncast<IClTensorHandle>(
Jim Flynn983daec2019-05-29 16:20:16 +010038 m_Data.m_Inputs[0])->GetTensor();
39
Jan Eilers3c9e0452020-04-10 13:00:44 +010040 arm_compute::ICLTensor& output = armnn::PolymorphicPointerDowncast<IClTensorHandle>(
Jim Flynn983daec2019-05-29 16:20:16 +010041 m_Data.m_Outputs[0])->GetTensor();
42
43 m_Layer.reset(new arm_compute::CLDequantizationLayer());
Kevin May9f6862d2021-10-22 15:42:28 +010044 {
45 ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "ClDequantizeWorkload_configure");
46 m_Layer->configure(clCompileContext, &input, &output);
47 }
Jim Flynn983daec2019-05-29 16:20:16 +010048 m_Layer->prepare();
49}
50
51void ClDequantizeWorkload::Execute() const
52{
53 if (m_Layer)
54 {
Keith Davisbcd860a2021-08-05 14:20:33 +010055 ARMNN_SCOPED_PROFILING_EVENT_CL_GUID("ClDequantizeWorkload_Execute", this->GetGuid());
Jim Flynn983daec2019-05-29 16:20:16 +010056 m_Layer->run();
57 }
58}
59
60} // namespace armnn