blob: a1d96f0ec115ef668bbba0d749d08929b3698929 [file] [log] [blame]
Teresa Charlina52bca22024-02-01 17:36:48 +00001//
2// Copyright © 2023-2024 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "UtilsGpuFsa.hpp"
7#include "aclCommon/ArmComputeTensorUtils.hpp"
8#include "aclCommon/ArmComputeUtils.hpp"
9
10using namespace armnn;
11using namespace armnn::armcomputetensorutils;
12using namespace arm_compute::experimental::dynamic_fusion;
13
14Conv2dAttributes CreateConv2dAttributes(const Convolution2dDescriptor& descriptor)
15{
16 const arm_compute::Padding2D padInfo = BuildArmComputePaddingInfo(descriptor);
17 const arm_compute::Size2D strideInfo = BuildArmComputeSize2D(descriptor.m_StrideX, descriptor.m_StrideY);
18 const arm_compute::Size2D dilationInfo = BuildArmComputeSize2D(descriptor.m_DilationX, descriptor.m_DilationY);
19
20 arm_compute::experimental::dynamic_fusion::Conv2dAttributes conv2dAttributes{};
21 conv2dAttributes.pad(padInfo);
22 conv2dAttributes.stride(strideInfo);
23 conv2dAttributes.dilation(dilationInfo);
24
25 return conv2dAttributes;
26}
27
28arm_compute::experimental::dynamic_fusion::DepthwiseConv2dAttributes
29CreateDWConv2dAttributes(const DepthwiseConvolution2dDescriptor& descriptor, const unsigned int aclDepthMultiplier)
30{
31 const arm_compute::Padding2D padInfo = BuildArmComputePaddingInfo(descriptor);
32 const arm_compute::Size2D strideInfo = BuildArmComputeSize2D(descriptor.m_StrideX, descriptor.m_StrideY);
33 const arm_compute::Size2D dilationInfo = BuildArmComputeSize2D(descriptor.m_DilationX, descriptor.m_DilationY);
34
35 arm_compute::experimental::dynamic_fusion::DepthwiseConv2dAttributes depthwiseConv2dAttributes{};
36 depthwiseConv2dAttributes.pad(padInfo);
37 depthwiseConv2dAttributes.stride(strideInfo);
38 depthwiseConv2dAttributes.dilation(dilationInfo);
39 depthwiseConv2dAttributes.depth_multiplier(aclDepthMultiplier);
40
41 return depthwiseConv2dAttributes;
42}
43
44arm_compute::experimental::dynamic_fusion::Pool2dAttributes
45CreatePool2dAttributes(const Pooling2dDescriptor& descriptor)
46{
47 const arm_compute::PoolingType poolType = ConvertPoolingAlgorithmToAclPoolingType(descriptor.m_PoolType);
48 const arm_compute::Padding2D padding = BuildArmComputePaddingInfo(descriptor);
49 const arm_compute::Size2D poolSize = BuildArmComputeSize2D(descriptor.m_PoolWidth, descriptor.m_PoolHeight);
50 const arm_compute::Size2D strides = BuildArmComputeSize2D(descriptor.m_StrideX, descriptor.m_StrideY);
51 const bool excludePadding = (descriptor.m_PaddingMethod == PaddingMethod::Exclude);
52
53 arm_compute::experimental::dynamic_fusion::Pool2dAttributes pool2dAttributes{};
54 pool2dAttributes.pool_type(poolType);
55 pool2dAttributes.pad(padding);
56 pool2dAttributes.pool_size(poolSize);
57 pool2dAttributes.stride(strides);
58 pool2dAttributes.exclude_padding(excludePadding);
59
60 return pool2dAttributes;
61}