From ae050524109f1ce827962665436ef7430f2ac479 Mon Sep 17 00:00:00 2001 From: David Monahan Date: Wed, 22 Mar 2023 16:48:58 +0000 Subject: IVGCVSW-7255 Update Doxygen Documentation and publish on GitHub. * Updating Doxygen documentation for 23.02 release. Signed-off-by: David Monahan Change-Id: I545574ff7664b4595d2fe6a91a3c35d2ad55df82 --- .../_neon_strided_slice_workload_8cpp_source.xhtml | 202 ++++++++++++++++----- 1 file changed, 152 insertions(+), 50 deletions(-) (limited to '23.02/_neon_strided_slice_workload_8cpp_source.xhtml') diff --git a/23.02/_neon_strided_slice_workload_8cpp_source.xhtml b/23.02/_neon_strided_slice_workload_8cpp_source.xhtml index 162165a578..52005bcaf8 100644 --- a/23.02/_neon_strided_slice_workload_8cpp_source.xhtml +++ b/23.02/_neon_strided_slice_workload_8cpp_source.xhtml @@ -8,7 +8,7 @@ - + ArmNN: src/backends/neon/workloads/NeonStridedSliceWorkload.cpp Source File @@ -19,9 +19,6 @@ - @@ -30,7 +27,8 @@ extensions: ["tex2jax.js"], jax: ["input/TeX","output/HTML-CSS"], }); - + + @@ -51,18 +49,21 @@ - + +/* @license-end */
@@ -76,7 +77,9 @@ $(function() {
@@ -98,55 +101,154 @@ $(document).ready(function(){initNavTree('_neon_strided_slice_workload_8cpp_sour
NeonStridedSliceWorkload.cpp
-Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
7 
8 #include "NeonWorkloadUtils.hpp"
15 
16 namespace armnn
17 {
18 
20  const TensorInfo& output,
21  const StridedSliceDescriptor& descriptor)
22 {
23  const arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);
24  const arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);
25 
29 
30  std::tie(starts, ends, strides) = SetNeonStridedSliceData(descriptor.m_Begin,
31  descriptor.m_End,
32  descriptor.m_Stride);
33 
34  auto numDimensions = armnn::numeric_cast<int>(input.GetNumDimensions());
35  int32_t begin_mask = ConvertMaskToACLFormat(descriptor.m_BeginMask, numDimensions);
36  int32_t end_mask = ConvertMaskToACLFormat(descriptor.m_EndMask, numDimensions);
37  int32_t shrink_axis_mask = ConvertMaskToACLFormat(descriptor.m_ShrinkAxisMask, numDimensions);
38 
39  return arm_compute::NEStridedSlice::validate(&aclInput,
40  &aclOutput,
41  starts,
42  ends,
43  strides,
44  begin_mask,
45  end_mask,
46  shrink_axis_mask);
47 }
48 
50  const WorkloadInfo& info)
52 {
53  // Report Profiling Details
54  ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonStridedSliceWorkload_Construct",
55  descriptor.m_Parameters,
56  info,
57  this->GetGuid());
58 
59  m_Data.ValidateInputsOutputs("NeonStridedSliceWorkload", 1, 1);
60 
61  arm_compute::ITensor& input = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Inputs[0])->GetTensor();
62  arm_compute::ITensor& output = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Outputs[0])->GetTensor();
63 
67 
68  std::tie(starts, ends, strides) = SetNeonStridedSliceData(m_Data.m_Parameters.m_Begin,
71 
72  auto numDimensions = armnn::numeric_cast<int>(info.m_InputTensorInfos[0].GetNumDimensions());
73  int32_t begin_mask = ConvertMaskToACLFormat(m_Data.m_Parameters.m_BeginMask, numDimensions);
74  int32_t end_mask = ConvertMaskToACLFormat(m_Data.m_Parameters.m_EndMask, numDimensions);
75  int32_t shrink_axis_mask = ConvertMaskToACLFormat(m_Data.m_Parameters.m_ShrinkAxisMask, numDimensions);
76 
77  arm_compute::DataLayout aclDataLayout = ConvertDataLayout(m_Data.m_Parameters.m_DataLayout);
78  input.info()->set_data_layout(aclDataLayout);
79  output.info()->set_data_layout(aclDataLayout);
80 
81  auto layer = std::make_unique<arm_compute::NEStridedSlice>();
82 
83  layer->configure(&input,
84  &output,
85  starts,
86  ends,
87  strides,
88  begin_mask,
89  end_mask,
90  shrink_axis_mask);
91  m_Layer.reset(layer.release());
92 }
93 
95 {
96  ARMNN_SCOPED_PROFILING_EVENT_NEON_GUID("NeonStridedSliceWorkload_Execute", this->GetGuid());
97  m_Layer->run();
98 }
99 
100 } //namespace armnn
DataLayout
Definition: Types.hpp:62
- -
int32_t m_ShrinkAxisMask
Shrink axis mask value. If set, the nth specification shrinks the dimensionality by 1...
-
std::vector< int > m_Begin
Begin values for the input that will be sliced.
- -
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
-
std::array< unsigned int, MaxNumOfTensorDimensions > Coordinates
-
arm_compute::Status NeonStridedSliceWorkloadValidate(const TensorInfo &input, const TensorInfo &output, const StridedSliceDescriptor &descriptor)
- -
arm::pipe::ProfilingGuid GetGuid() const final
Definition: Workload.hpp:61
- -
void ValidateInputsOutputs(const std::string &descName, unsigned int numExpectedIn, unsigned int numExpectedOut) const
- -
Copyright (c) 2021 ARM Limited and Contributors.
-
auto SetNeonStridedSliceData(const std::vector< int > &m_begin, const std::vector< int > &m_end, const std::vector< int > &m_stride)
-
int32_t m_BeginMask
Begin mask value.
-
int32_t m_EndMask
End mask value.
- - - - -
virtual void Execute() const override
-
std::vector< TensorInfo > m_InputTensorInfos
- -
Status
enumeration
Definition: Types.hpp:42
- -
std::vector< int > m_Stride
Stride values for the input that will be sliced.
-
std::vector< int > m_End
End values for the input that will be sliced.
-
int32_t ConvertMaskToACLFormat(int32_t mask, int32_t numDim)
-
std::vector< ITensorHandle * > m_Outputs
- -
#define ARMNN_REPORT_PROFILING_WORKLOAD_DESC(name, desc, infos, guid)
Definition: Profiling.hpp:227
-
std::enable_if_t< std::is_unsigned< Source >::value &&std::is_unsigned< Dest >::value, Dest > numeric_cast(Source source)
Definition: NumericCast.hpp:35
-
A StridedSliceDescriptor for the StridedSliceLayer.
-
Contains information about TensorInfos of a layer.
-
NeonStridedSliceWorkload(const StridedSliceQueueDescriptor &descriptor, const WorkloadInfo &info)
-
std::vector< ITensorHandle * > m_Inputs
-
#define ARMNN_SCOPED_PROFILING_EVENT_NEON_GUID(name, guid)
-
unsigned int GetNumDimensions() const
Definition: Tensor.hpp:195
- +Go to the documentation of this file.
1 //
+
2 // Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+
3 // SPDX-License-Identifier: MIT
+
4 //
+
5 
+ +
7 
+
8 #include "NeonWorkloadUtils.hpp"
+ + + + + + +
15 
+
16 namespace armnn
+
17 {
+
18 
+ +
20  const TensorInfo& output,
+
21  const StridedSliceDescriptor& descriptor)
+
22 {
+
23  const arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);
+
24  const arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);
+
25 
+ + + +
29 
+
30  std::tie(starts, ends, strides) = SetNeonStridedSliceData(descriptor.m_Begin,
+
31  descriptor.m_End,
+
32  descriptor.m_Stride);
+
33 
+
34  auto numDimensions = armnn::numeric_cast<int>(input.GetNumDimensions());
+
35  int32_t begin_mask = ConvertMaskToACLFormat(descriptor.m_BeginMask, numDimensions);
+
36  int32_t end_mask = ConvertMaskToACLFormat(descriptor.m_EndMask, numDimensions);
+
37  int32_t shrink_axis_mask = ConvertMaskToACLFormat(descriptor.m_ShrinkAxisMask, numDimensions);
+
38 
+
39  return arm_compute::NEStridedSlice::validate(&aclInput,
+
40  &aclOutput,
+
41  starts,
+
42  ends,
+
43  strides,
+
44  begin_mask,
+
45  end_mask,
+
46  shrink_axis_mask);
+
47 }
+
48 
+ +
50  const WorkloadInfo& info)
+ +
52 {
+
53  // Report Profiling Details
+
54  ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonStridedSliceWorkload_Construct",
+
55  descriptor.m_Parameters,
+
56  info,
+
57  this->GetGuid());
+
58 
+
59  m_Data.ValidateInputsOutputs("NeonStridedSliceWorkload", 1, 1);
+
60 
+
61  arm_compute::ITensor& input = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Inputs[0])->GetTensor();
+
62  arm_compute::ITensor& output = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Outputs[0])->GetTensor();
+
63 
+ + + +
67 
+
68  std::tie(starts, ends, strides) = SetNeonStridedSliceData(m_Data.m_Parameters.m_Begin,
+ + +
71 
+
72  auto numDimensions = armnn::numeric_cast<int>(info.m_InputTensorInfos[0].GetNumDimensions());
+
73  int32_t begin_mask = ConvertMaskToACLFormat(m_Data.m_Parameters.m_BeginMask, numDimensions);
+
74  int32_t end_mask = ConvertMaskToACLFormat(m_Data.m_Parameters.m_EndMask, numDimensions);
+
75  int32_t shrink_axis_mask = ConvertMaskToACLFormat(m_Data.m_Parameters.m_ShrinkAxisMask, numDimensions);
+
76 
+
77  arm_compute::DataLayout aclDataLayout = ConvertDataLayout(m_Data.m_Parameters.m_DataLayout);
+
78  input.info()->set_data_layout(aclDataLayout);
+
79  output.info()->set_data_layout(aclDataLayout);
+
80 
+
81  auto layer = std::make_unique<arm_compute::NEStridedSlice>();
+
82 
+
83  layer->configure(&input,
+
84  &output,
+
85  starts,
+
86  ends,
+
87  strides,
+
88  begin_mask,
+
89  end_mask,
+
90  shrink_axis_mask);
+
91  m_Layer.reset(layer.release());
+
92 }
+
93 
+ +
95 {
+
96  ARMNN_SCOPED_PROFILING_EVENT_NEON_GUID("NeonStridedSliceWorkload_Execute", this->GetGuid());
+
97  m_Layer->run();
+
98 }
+
99 
+
100 } //namespace armnn
+
arm_compute::Status NeonStridedSliceWorkloadValidate(const TensorInfo &input, const TensorInfo &output, const StridedSliceDescriptor &descriptor)
+
arm::pipe::ProfilingGuid GetGuid() const final
Definition: Workload.hpp:61
+
void ValidateInputsOutputs(const std::string &descName, unsigned int numExpectedIn, unsigned int numExpectedOut) const
+
DataLayout
Definition: Types.hpp:62
+
virtual void Execute() const override
+
int32_t m_BeginMask
Begin mask value.
+
A StridedSliceDescriptor for the StridedSliceLayer.
+
std::vector< int > m_Begin
Begin values for the input that will be sliced.
+ + +
Copyright (c) 2021 ARM Limited and Contributors.
+
auto SetNeonStridedSliceData(const std::vector< int > &m_begin, const std::vector< int > &m_end, const std::vector< int > &m_stride)
+
std::vector< int > m_End
End values for the input that will be sliced.
+ +
NeonStridedSliceWorkload(const StridedSliceQueueDescriptor &descriptor, const WorkloadInfo &info)
+
#define ARMNN_SCOPED_PROFILING_EVENT_NEON_GUID(name, guid)
+
unsigned int GetNumDimensions() const
Definition: Tensor.hpp:195
+ + + + +
Status
Definition: Types.hpp:42
+
std::vector< int > m_Stride
Stride values for the input that will be sliced.
+
Contains information about TensorInfos of a layer.
+
int32_t m_ShrinkAxisMask
Shrink axis mask value. If set, the nth specification shrinks the dimensionality by 1.
+ +
#define ARMNN_REPORT_PROFILING_WORKLOAD_DESC(name, desc, infos, guid)
Definition: Profiling.hpp:227
+ + +
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
+
int32_t ConvertMaskToACLFormat(int32_t mask, int32_t numDim)
+
int32_t m_EndMask
End mask value.
+
std::vector< ITensorHandle * > m_Outputs
+ + + +
std::array< unsigned int, MaxNumOfTensorDimensions > Coordinates
+
std::vector< ITensorHandle * > m_Inputs
+ -- cgit v1.2.1