aboutsummaryrefslogtreecommitdiff
path: root/src/backends/gpuFsa/layers/UtilsGpuFsa.cpp
diff options
context:
space:
mode:
authorTeresa Charlin <teresa.charlinreyes@arm.com>2024-02-01 17:36:48 +0000
committerTeresaARM <teresa.charlinreyes@arm.com>2024-02-07 13:24:09 +0000
commita52bca23d225144e92f521341718a70489d5c217 (patch)
tree2dc88b168900ec89e51dafe564856736ce88f277 /src/backends/gpuFsa/layers/UtilsGpuFsa.cpp
parentcf9622f84e22dfb4af1835f02780eb0d8310a624 (diff)
downloadarmnn-a52bca23d225144e92f521341718a70489d5c217.tar.gz
IVGCVSW-7623: GpuFsa Op: Add Pool2d operator
* Add Pool2d EndToEnd tests to all backends * Add utility functions for the attributes in a separate file * Remove some unnecessary includes Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com> Change-Id: I0f82ebbf7b3301c6368462fb4fb4d4d02b246fc6
Diffstat (limited to 'src/backends/gpuFsa/layers/UtilsGpuFsa.cpp')
-rw-r--r--src/backends/gpuFsa/layers/UtilsGpuFsa.cpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/backends/gpuFsa/layers/UtilsGpuFsa.cpp b/src/backends/gpuFsa/layers/UtilsGpuFsa.cpp
new file mode 100644
index 0000000000..a1d96f0ec1
--- /dev/null
+++ b/src/backends/gpuFsa/layers/UtilsGpuFsa.cpp
@@ -0,0 +1,61 @@
+//
+// Copyright © 2023-2024 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "UtilsGpuFsa.hpp"
+#include "aclCommon/ArmComputeTensorUtils.hpp"
+#include "aclCommon/ArmComputeUtils.hpp"
+
+using namespace armnn;
+using namespace armnn::armcomputetensorutils;
+using namespace arm_compute::experimental::dynamic_fusion;
+
+Conv2dAttributes CreateConv2dAttributes(const Convolution2dDescriptor& descriptor)
+{
+ const arm_compute::Padding2D padInfo = BuildArmComputePaddingInfo(descriptor);
+ const arm_compute::Size2D strideInfo = BuildArmComputeSize2D(descriptor.m_StrideX, descriptor.m_StrideY);
+ const arm_compute::Size2D dilationInfo = BuildArmComputeSize2D(descriptor.m_DilationX, descriptor.m_DilationY);
+
+ arm_compute::experimental::dynamic_fusion::Conv2dAttributes conv2dAttributes{};
+ conv2dAttributes.pad(padInfo);
+ conv2dAttributes.stride(strideInfo);
+ conv2dAttributes.dilation(dilationInfo);
+
+ return conv2dAttributes;
+}
+
+arm_compute::experimental::dynamic_fusion::DepthwiseConv2dAttributes
+CreateDWConv2dAttributes(const DepthwiseConvolution2dDescriptor& descriptor, const unsigned int aclDepthMultiplier)
+{
+ const arm_compute::Padding2D padInfo = BuildArmComputePaddingInfo(descriptor);
+ const arm_compute::Size2D strideInfo = BuildArmComputeSize2D(descriptor.m_StrideX, descriptor.m_StrideY);
+ const arm_compute::Size2D dilationInfo = BuildArmComputeSize2D(descriptor.m_DilationX, descriptor.m_DilationY);
+
+ arm_compute::experimental::dynamic_fusion::DepthwiseConv2dAttributes depthwiseConv2dAttributes{};
+ depthwiseConv2dAttributes.pad(padInfo);
+ depthwiseConv2dAttributes.stride(strideInfo);
+ depthwiseConv2dAttributes.dilation(dilationInfo);
+ depthwiseConv2dAttributes.depth_multiplier(aclDepthMultiplier);
+
+ return depthwiseConv2dAttributes;
+}
+
+arm_compute::experimental::dynamic_fusion::Pool2dAttributes
+CreatePool2dAttributes(const Pooling2dDescriptor& descriptor)
+{
+ const arm_compute::PoolingType poolType = ConvertPoolingAlgorithmToAclPoolingType(descriptor.m_PoolType);
+ const arm_compute::Padding2D padding = BuildArmComputePaddingInfo(descriptor);
+ const arm_compute::Size2D poolSize = BuildArmComputeSize2D(descriptor.m_PoolWidth, descriptor.m_PoolHeight);
+ const arm_compute::Size2D strides = BuildArmComputeSize2D(descriptor.m_StrideX, descriptor.m_StrideY);
+ const bool excludePadding = (descriptor.m_PaddingMethod == PaddingMethod::Exclude);
+
+ arm_compute::experimental::dynamic_fusion::Pool2dAttributes pool2dAttributes{};
+ pool2dAttributes.pool_type(poolType);
+ pool2dAttributes.pad(padding);
+ pool2dAttributes.pool_size(poolSize);
+ pool2dAttributes.stride(strides);
+ pool2dAttributes.exclude_padding(excludePadding);
+
+ return pool2dAttributes;
+} \ No newline at end of file