blob: 62881daaf75abeed69c991ea773f1df213b97ed2 [file] [log] [blame]
Sadik Armagan0c3ea5b2021-02-03 09:29:30 +00001//
2// Copyright © 2020 Samsung Electronics Co Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "RefReduceWorkload.hpp"
7
8#include "Reduce.hpp"
9#include "RefWorkloadUtils.hpp"
10#include "BaseIterator.hpp"
11#include "Profiling.hpp"
12
13namespace armnn
14{
15
16RefReduceWorkload::RefReduceWorkload(
17 const ReduceQueueDescriptor& descriptor,
18 const WorkloadInfo& info)
Finn Williams73c547d2022-02-15 20:47:34 +000019 : RefBaseWorkload<ReduceQueueDescriptor>(descriptor, info) {}
Sadik Armagan0c3ea5b2021-02-03 09:29:30 +000020
21void RefReduceWorkload::Execute() const
22{
Finn Williamsb8181f72021-04-07 10:23:21 +010023 Execute(m_Data.m_Inputs, m_Data.m_Outputs);
24}
25
26void RefReduceWorkload::ExecuteAsync(WorkingMemDescriptor &workingMemDescriptor)
27{
28 Execute(workingMemDescriptor.m_Inputs, workingMemDescriptor.m_Outputs);
29}
30
31void RefReduceWorkload::Execute(std::vector<ITensorHandle*> inputs, std::vector<ITensorHandle*> outputs) const
32{
Sadik Armagan0c3ea5b2021-02-03 09:29:30 +000033 ARMNN_SCOPED_PROFILING_EVENT(Compute::CpuRef, "RefReduceWorkload_Execute");
34
Finn Williamsb8181f72021-04-07 10:23:21 +010035 const TensorInfo& inputInfo = GetTensorInfo(inputs[0]);
36 const TensorInfo& outputInfo = GetTensorInfo(outputs[0]);
Sadik Armagan0c3ea5b2021-02-03 09:29:30 +000037
Finn Williamsb8181f72021-04-07 10:23:21 +010038 std::unique_ptr<Decoder<float>> decoderPtr = MakeDecoder<float>(inputInfo, inputs[0]->Map());
Sadik Armagan0c3ea5b2021-02-03 09:29:30 +000039 Decoder<float>& decoder = *decoderPtr;
40
Finn Williamsb8181f72021-04-07 10:23:21 +010041 std::unique_ptr<Encoder<float>> encoderPtr = MakeEncoder<float>(outputInfo, outputs[0]->Map());
Sadik Armagan0c3ea5b2021-02-03 09:29:30 +000042 Encoder<float>& encoder = *encoderPtr;
43
44 Reduce(inputInfo,
45 outputInfo,
46 decoder,
47 encoder,
48 m_Data.m_Parameters.m_vAxis,
49 m_Data.m_Parameters.m_ReduceOperation);
50}
51
52} //namespace armnn