blob: a4204b21e6f0b5ab31b2f04e5db6ff76050c6150 [file] [log] [blame]
Ellen Norris-Thompson29794572019-06-26 16:40:36 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "NeonSpaceToDepthWorkload.hpp"
7#include "NeonWorkloadUtils.hpp"
8#include <ResolveType.hpp>
9
10namespace armnn
11{
12
13using namespace armcomputetensorutils;
14
15arm_compute::Status NeonSpaceToDepthWorkloadValidate(const TensorInfo& input,
16 const TensorInfo& output,
17 const SpaceToDepthDescriptor& descriptor)
18{
19 DataLayout dataLayout = descriptor.m_DataLayout;
20 const arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, dataLayout);
21 const arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, dataLayout);
22
23 int32_t blockSize = boost::numeric_cast<int32_t>(descriptor.m_BlockSize);
24
25 return arm_compute::NESpaceToDepthLayer::validate(&aclInput, &aclOutput, blockSize);
26}
27
28NeonSpaceToDepthWorkload::NeonSpaceToDepthWorkload(const SpaceToDepthQueueDescriptor& desc,
29 const WorkloadInfo& info)
30 : BaseWorkload<SpaceToDepthQueueDescriptor>(desc, info)
31{
32 m_Data.ValidateInputsOutputs("NeonSpaceToDepthWorkload", 1, 1);
33
34 arm_compute::DataLayout aclDataLayout = ConvertDataLayout(m_Data.m_Parameters.m_DataLayout);
35
36 arm_compute::ITensor& input = boost::polymorphic_downcast<IAclTensorHandle*>(m_Data.m_Inputs[0])->GetTensor();
37 input.info()->set_data_layout(aclDataLayout);
38
39 int32_t blockSize = boost::numeric_cast<int32_t>(desc.m_Parameters.m_BlockSize);
40
41 arm_compute::ITensor& output = boost::polymorphic_downcast<IAclTensorHandle*>(m_Data.m_Outputs[0])->GetTensor();
42 output.info()->set_data_layout(aclDataLayout);
43
44 m_Layer.reset(new arm_compute::NESpaceToDepthLayer());
45 m_Layer->configure(&input, &output, blockSize);
46 m_Layer->prepare();
47}
48
49void NeonSpaceToDepthWorkload::Execute() const
50{
51 if (m_Layer)
52 {
53 ARMNN_SCOPED_PROFILING_EVENT_NEON("NeonSpaceToDepthWorkload_Execute");
54 m_Layer->run();
55 }
56}
57
58} //namespace armnn