aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeresa Charlin <teresa.charlinreyes@arm.com>2021-10-27 22:29:13 +0100
committerTeresa Charlin <teresa.charlinreyes@arm.com>2021-11-15 11:41:22 +0000
commit46c657d34e1d125b14c89140c13db94493e447b7 (patch)
tree5d49e5e8d64770b5de0eab792ec66b333294ad95
parentd3065d793c2351e9888d9d457a30490e0e7a539e (diff)
downloadarmnn-46c657d34e1d125b14c89140c13db94493e447b7.tar.gz
IVGCVSW-6519 Extend pad workload for GpuAcc to support mirror padding
* Add UnitTest for GpuAcc Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com> Change-Id: I235900dc62fb043c5ce9c8cd4f63dcc4e5393233
-rw-r--r--src/backends/cl/test/ClLayerTests.cpp14
-rw-r--r--src/backends/cl/workloads/ClPadWorkload.cpp21
2 files changed, 29 insertions, 6 deletions
diff --git a/src/backends/cl/test/ClLayerTests.cpp b/src/backends/cl/test/ClLayerTests.cpp
index cb3f5e841f..6c27d51853 100644
--- a/src/backends/cl/test/ClLayerTests.cpp
+++ b/src/backends/cl/test/ClLayerTests.cpp
@@ -946,7 +946,7 @@ ARMNN_AUTO_TEST_FIXTURE_WITH_THF(SimpleReshapeUint8, ClContextControlFixture, Si
ARMNN_AUTO_TEST_FIXTURE_WITH_THF(Reshape5d, ClContextControlFixture, Reshape5dTest<DataType::Float32>)
ARMNN_AUTO_TEST_FIXTURE_WITH_THF(ReshapeBoolean, ClContextControlFixture, ReshapeBooleanTest)
-// Pad
+// Pad - Constant
ARMNN_AUTO_TEST_FIXTURE_WITH_THF(PadFloat322d, ClContextControlFixture, PadFloat322dTest)
ARMNN_AUTO_TEST_FIXTURE_WITH_THF(PadFloat322dCustomPadding, ClContextControlFixture, PadFloat322dCustomPaddingTest)
ARMNN_AUTO_TEST_FIXTURE_WITH_THF(PadFloat323d, ClContextControlFixture, PadFloat323dTest)
@@ -964,6 +964,18 @@ ARMNN_AUTO_TEST_FIXTURE_WITH_THF(Pad2dQSymm16CustomPadding,
ARMNN_AUTO_TEST_FIXTURE_WITH_THF(Pad3dQSymm16, ClContextControlFixture, Pad3dTestCommon<DataType::QSymmS16>, 2.0f, 0)
ARMNN_AUTO_TEST_FIXTURE_WITH_THF(Pad4dQSymm16, ClContextControlFixture, Pad4dTestCommon<DataType::QSymmS16>, 2.0f, 0)
+// Pad - Symmetric & Reflect
+ARMNN_AUTO_TEST_CASE_WITH_THF(PadSymmetric2dFloat32, PadSymmetric2dFloat32Test)
+ARMNN_AUTO_TEST_CASE_WITH_THF(PadReflect2dFloat32, PadReflect2dFloat32Test)
+ARMNN_AUTO_TEST_CASE_WITH_THF(PadSymmetric3dFloat32, PadSymmetric3dFloat32Test)
+ARMNN_AUTO_TEST_CASE_WITH_THF(PadReflect3dFloat32, PadReflect3dFloat32Test)
+ARMNN_AUTO_TEST_CASE_WITH_THF(PadSymmetric3dUint8, PadSymmetric3dUint8Test)
+ARMNN_AUTO_TEST_CASE_WITH_THF(PadReflect3dUint8, PadReflect3dUint8Test)
+ARMNN_AUTO_TEST_CASE_WITH_THF(PadSymmetric3dInt8, PadSymmetric3dInt8Test)
+ARMNN_AUTO_TEST_CASE_WITH_THF(PadReflect3dInt8, PadReflect3dInt8Test)
+ARMNN_AUTO_TEST_CASE_WITH_THF(PadSymmetricFloat16, PadSymmetricFloat16Test)
+ARMNN_AUTO_TEST_CASE_WITH_THF(PadReflectFloat16, PadReflectFloat16Test)
+
// PReLU
ARMNN_AUTO_TEST_FIXTURE_WITH_THF(PreluFloat32, ClContextControlFixture, PreluTest<DataType::Float32>)
ARMNN_AUTO_TEST_FIXTURE_WITH_THF(PreluUint8, ClContextControlFixture, PreluTest<DataType::QAsymmU8>)
diff --git a/src/backends/cl/workloads/ClPadWorkload.cpp b/src/backends/cl/workloads/ClPadWorkload.cpp
index 48d61b0b8a..4f8c34cb77 100644
--- a/src/backends/cl/workloads/ClPadWorkload.cpp
+++ b/src/backends/cl/workloads/ClPadWorkload.cpp
@@ -1,11 +1,12 @@
//
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "ClPadWorkload.hpp"
#include <cl/ClTensorHandle.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
#include <aclCommon/ArmComputeTensorUtils.hpp>
#include <arm_compute/core/Types.h>
@@ -43,7 +44,12 @@ ClPadWorkload::ClPadWorkload(const PadQueueDescriptor& descriptor,
{
ARMNN_SCOPED_PROFILING_EVENT(Compute::Undefined, "ClPadWorkload_configure");
- m_Layer.configure(clCompileContext, &input, &output, padList, pixelValue);
+ m_Layer.configure(clCompileContext,
+ &input,
+ &output,
+ padList,
+ pixelValue,
+ ConvertPaddingModeToAcl(descriptor.m_Parameters.m_PaddingMode));
}
}
@@ -68,9 +74,14 @@ arm_compute::Status ClPadValidate(const TensorInfo& input,
arm_compute::PaddingList padList = static_cast<arm_compute::PaddingList>(reversed_PadList);
- const arm_compute::Status aclStatus = arm_compute::CLPadLayer::validate(&aclInputInfo,
- &aclOutputInfo,
- padList);
+ // PixelValue is currently unused when validating, but it's required to pass in PaddingMode.
+ arm_compute::PixelValue pixelValue = GetPixelValue(&aclInputInfo, descriptor.m_PadValue);
+ const arm_compute::Status aclStatus =
+ arm_compute::CLPadLayer::validate(&aclInputInfo,
+ &aclOutputInfo,
+ padList,
+ pixelValue,
+ ConvertPaddingModeToAcl(descriptor.m_PaddingMode));
return aclStatus;
}