blob: 38c6017a58f4d5182267854313e11f23639fc870 [file] [log] [blame]
James Conroy4d1ff582019-06-10 17:06:39 +01001//
Mike Kelly7cbe7812023-07-25 17:37:33 +01002// Copyright © 2019,2021-2023 Arm Ltd and Contributors. All rights reserved.
James Conroy4d1ff582019-06-10 17:06:39 +01003// SPDX-License-Identifier: MIT
4//
5
6#include "RefMeanWorkload.hpp"
7
Sadik Armagan0c3ea5b2021-02-03 09:29:30 +00008#include "Reduce.hpp"
James Conroy4d1ff582019-06-10 17:06:39 +01009#include "RefWorkloadUtils.hpp"
10
11#include "Profiling.hpp"
12
13#include <vector>
14
15namespace armnn
16{
17
18RefMeanWorkload::RefMeanWorkload(const MeanQueueDescriptor& descriptor, const WorkloadInfo& info)
Finn Williams73c547d2022-02-15 20:47:34 +000019 :RefBaseWorkload<MeanQueueDescriptor>(descriptor, info) {}
James Conroy4d1ff582019-06-10 17:06:39 +010020
21void RefMeanWorkload::Execute() const
22{
Finn Williamsb8181f72021-04-07 10:23:21 +010023 Execute(m_Data.m_Inputs, m_Data.m_Outputs);
24}
25
Matthew Sloyan2d213a72022-06-30 17:13:04 +010026void RefMeanWorkload::ExecuteAsync(ExecutionData& executionData)
Finn Williamsb8181f72021-04-07 10:23:21 +010027{
Matthew Sloyan2d213a72022-06-30 17:13:04 +010028 WorkingMemDescriptor* workingMemDescriptor = static_cast<WorkingMemDescriptor*>(executionData.m_Data);
29 Execute(workingMemDescriptor->m_Inputs, workingMemDescriptor->m_Outputs);
Finn Williamsb8181f72021-04-07 10:23:21 +010030}
31
32void RefMeanWorkload::Execute(std::vector<ITensorHandle*> inputs, std::vector<ITensorHandle*> outputs) const
33{
Mike Kelly7cbe7812023-07-25 17:37:33 +010034 ARMNN_SCOPED_PROFILING_EVENT_REF_NAME_GUID("RefMeanWorkload_Execute");
James Conroy4d1ff582019-06-10 17:06:39 +010035
Finn Williamsb8181f72021-04-07 10:23:21 +010036 const TensorInfo& inputInfo = GetTensorInfo(inputs[0]);
37 const TensorInfo& outputInfo = GetTensorInfo(outputs[0]);
James Conroy4d1ff582019-06-10 17:06:39 +010038
Finn Williamsb8181f72021-04-07 10:23:21 +010039 auto inputDecoder = MakeDecoder<float>(inputInfo, inputs[0]->Map());
40 auto outputEncoder = MakeEncoder<float>(outputInfo, outputs[0]->Map());
James Conroy4d1ff582019-06-10 17:06:39 +010041
Sadik Armagan0c3ea5b2021-02-03 09:29:30 +000042 Reduce(inputInfo,
43 outputInfo,
44 *inputDecoder,
45 *outputEncoder,
46 m_Data.m_Parameters.m_Axis,
47 armnn::ReduceOperation::Mean);
James Conroy4d1ff582019-06-10 17:06:39 +010048}
49
50} //namespace armnn