diff options
author | Kevin May <kevin.may@arm.com> | 2019-12-12 17:28:05 +0000 |
---|---|---|
committer | TeresaARM <teresa.charlinreyes@arm.com> | 2020-01-24 16:47:17 +0000 |
commit | a023c40a7644f0b32f8f593b9a3614c92b5f933d (patch) | |
tree | 996a35023c6ea6adaee76472e49857fd545ad148 /src/backends/neon | |
parent | a0d189697bb549a37886790536be7e6879ee943a (diff) | |
download | armnn-a023c40a7644f0b32f8f593b9a3614c92b5f933d.tar.gz |
IVGCVSW-4262 Use ACL Permute and Reshape Validate function in Neon and CL
!android-nn-driver:2642
Signed-off-by: Kevin May <kevin.may@arm.com>
Change-Id: Ibabb73c0ae0df2e530a68398f75c76e6b80c0701
Diffstat (limited to 'src/backends/neon')
-rw-r--r-- | src/backends/neon/NeonLayerSupport.cpp | 10 | ||||
-rw-r--r-- | src/backends/neon/NeonLayerSupport.hpp | 1 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonReshapeWorkload.cpp | 9 | ||||
-rw-r--r-- | src/backends/neon/workloads/NeonReshapeWorkload.hpp | 5 |
4 files changed, 21 insertions, 4 deletions
diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp index 6ca69f4841..b8725be005 100644 --- a/src/backends/neon/NeonLayerSupport.cpp +++ b/src/backends/neon/NeonLayerSupport.cpp @@ -47,6 +47,7 @@ #include "workloads/NeonPreluWorkload.hpp" #include "workloads/NeonQuantizeWorkload.hpp" #include "workloads/NeonQuantizedLstmWorkload.hpp" +#include "workloads/NeonReshapeWorkload.hpp" #include "workloads/NeonResizeWorkload.hpp" #include "workloads/NeonRsqrtWorkload.hpp" #include "workloads/NeonSliceWorkload.hpp" @@ -650,14 +651,15 @@ bool NeonLayerSupport::IsQuantizedLstmSupported(const TensorInfo& input, } bool NeonLayerSupport::IsReshapeSupported(const TensorInfo& input, + const TensorInfo& output, const ReshapeDescriptor& descriptor, Optional<std::string&> reasonIfUnsupported) const { ignore_unused(descriptor); - return IsSupportedForDataTypeNeon(reasonIfUnsupported, - input.GetDataType(), - &TrueFunc<>, - &TrueFunc<>); + FORWARD_WORKLOAD_VALIDATE_FUNC(NeonReshapeWorkloadValidate, + reasonIfUnsupported, + input, + output); } bool NeonLayerSupport::IsResizeSupported(const TensorInfo& input, diff --git a/src/backends/neon/NeonLayerSupport.hpp b/src/backends/neon/NeonLayerSupport.hpp index f1d87f65f3..56a70c4886 100644 --- a/src/backends/neon/NeonLayerSupport.hpp +++ b/src/backends/neon/NeonLayerSupport.hpp @@ -222,6 +222,7 @@ public: Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override; bool IsReshapeSupported(const TensorInfo& input, + const TensorInfo& output, const ReshapeDescriptor& descriptor, Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override; diff --git a/src/backends/neon/workloads/NeonReshapeWorkload.cpp b/src/backends/neon/workloads/NeonReshapeWorkload.cpp index 7f2056c8e2..659bb94723 100644 --- a/src/backends/neon/workloads/NeonReshapeWorkload.cpp +++ b/src/backends/neon/workloads/NeonReshapeWorkload.cpp @@ -14,6 +14,15 @@ namespace armnn { +arm_compute::Status NeonReshapeWorkloadValidate(const TensorInfo& input, + const TensorInfo& output) +{ + const arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input); + const arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output); + + return arm_compute::NEReshapeLayer::validate(&aclInputInfo, &aclOutputInfo); +} + NeonReshapeWorkload::NeonReshapeWorkload(const ReshapeQueueDescriptor& descriptor, const WorkloadInfo& info) : BaseWorkload<ReshapeQueueDescriptor>(descriptor, info) diff --git a/src/backends/neon/workloads/NeonReshapeWorkload.hpp b/src/backends/neon/workloads/NeonReshapeWorkload.hpp index 2202463928..186a02ba26 100644 --- a/src/backends/neon/workloads/NeonReshapeWorkload.hpp +++ b/src/backends/neon/workloads/NeonReshapeWorkload.hpp @@ -6,7 +6,10 @@ #pragma once #include <backendsCommon/Workload.hpp> +#include <backendsCommon/WorkloadData.hpp> +#include <neon/workloads/NeonWorkloadUtils.hpp> +#include <armnn/TypesUtils.hpp> #include <arm_compute/runtime/IFunction.h> #include <memory> @@ -14,6 +17,8 @@ namespace armnn { +arm_compute::Status NeonReshapeWorkloadValidate(const TensorInfo& input, const TensorInfo& output); + class NeonReshapeWorkload : public BaseWorkload<ReshapeQueueDescriptor> { public: |