blob: 2eef5f33db050ea59aa36c5edc7879d1147adb64 [file] [log] [blame]
Derek Lamberti5f400d62019-03-25 15:41:58 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "RefQuantizeWorkload.hpp"
7
Keith Davis5e51cd82020-01-29 16:52:59 +00008#include "RefWorkloadUtils.hpp"
9
Derek Lamberti5f400d62019-03-25 15:41:58 +000010#include <armnn/TypesUtils.hpp>
11
12
13namespace armnn
14{
15
16namespace
17{
18
Keith Davis5e51cd82020-01-29 16:52:59 +000019void QuantizeImpl(Decoder<float>& in, Encoder<float>& out, size_t numValues)
Derek Lamberti5f400d62019-03-25 15:41:58 +000020{
Keith Davis5e51cd82020-01-29 16:52:59 +000021 for (unsigned int i = 0; i < numValues; i++)
Derek Lamberti5f400d62019-03-25 15:41:58 +000022 {
Keith Davis5e51cd82020-01-29 16:52:59 +000023 in[i];
24 out[i];
25 out.Set(in.Get());
Derek Lamberti5f400d62019-03-25 15:41:58 +000026 }
27}
28
29} //namespace
30
31RefQuantizeWorkload::RefQuantizeWorkload(const QuantizeQueueDescriptor& descriptor, const WorkloadInfo &info)
32 : BaseWorkload(descriptor, info)
33 , m_NumElements(info.m_InputTensorInfos[0].GetNumElements())
Derek Lamberti5f400d62019-03-25 15:41:58 +000034{
35}
36
Keith Davis5e51cd82020-01-29 16:52:59 +000037void RefQuantizeWorkload::PostAllocationConfigure()
38{
39 const TensorInfo& inputInfo = armnn::GetTensorInfo(m_Data.m_Inputs[0]);
40 m_InputDecoder = MakeDecoder<float>(inputInfo);
41
42 const TensorInfo& outputInfo = armnn::GetTensorInfo(m_Data.m_Outputs[0]);
43 m_OutputEncoder = MakeEncoder<float>(outputInfo);
44}
45
Derek Lamberti5f400d62019-03-25 15:41:58 +000046void RefQuantizeWorkload::Execute() const
47{
Keith Davis5e51cd82020-01-29 16:52:59 +000048 m_InputDecoder->Reset(m_Data.m_Inputs[0]->Map());
49 m_OutputEncoder->Reset(m_Data.m_Outputs[0]->Map());
Derek Lamberti5f400d62019-03-25 15:41:58 +000050
Keith Davis5e51cd82020-01-29 16:52:59 +000051 QuantizeImpl(*m_InputDecoder, *m_OutputEncoder, m_NumElements);
Derek Lamberti5f400d62019-03-25 15:41:58 +000052}
53
54} //namespace armnn