diff options
author | Teresa Charlin <teresa.charlinreyes@arm.com> | 2024-02-01 17:36:48 +0000 |
---|---|---|
committer | TeresaARM <teresa.charlinreyes@arm.com> | 2024-02-07 13:24:09 +0000 |
commit | a52bca23d225144e92f521341718a70489d5c217 (patch) | |
tree | 2dc88b168900ec89e51dafe564856736ce88f277 /src/backends/gpuFsa/layers/UtilsGpuFsa.cpp | |
parent | cf9622f84e22dfb4af1835f02780eb0d8310a624 (diff) | |
download | armnn-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.cpp | 61 |
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 |