diff options
author | Cathal Corbett <cathal.corbett@arm.com> | 2022-01-28 12:17:19 +0000 |
---|---|---|
committer | Cathal Corbett <cathal.corbett@arm.com> | 2022-02-21 09:29:38 +0000 |
commit | b0baff73b1574a198e57d46fcd704cedc43cea16 (patch) | |
tree | 0db88ad2d0f9e32dec916822d9a42d5d5ab81723 /src/backends/neon/NeonLayerSupport.cpp | |
parent | 23a08cc51569077e057c57fdd2c2b99c0aa982e2 (diff) | |
download | armnn-b0baff73b1574a198e57d46fcd704cedc43cea16.tar.gz |
IVGCVSW-6268 Add support of Unidirectional Sequence Lstm fp32/fp16 to Neon
!ComputeLibrary:7150
Signed-off-by: Cathal Corbett <cathal.corbett@arm.com>
Change-Id: I3de48ffc8d08c95a22705e2b68d069791bddae73
Diffstat (limited to 'src/backends/neon/NeonLayerSupport.cpp')
-rw-r--r-- | src/backends/neon/NeonLayerSupport.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp index 2b2229a4de..8901e47a0a 100644 --- a/src/backends/neon/NeonLayerSupport.cpp +++ b/src/backends/neon/NeonLayerSupport.cpp @@ -76,6 +76,7 @@ #include "workloads/NeonSubtractionWorkload.hpp" #include "workloads/NeonTransposeConvolution2dWorkload.hpp" #include "workloads/NeonTransposeWorkload.hpp" +#include "workloads/NeonUnidirectionalSequenceLstmFloatWorkload.hpp" #endif namespace armnn @@ -344,6 +345,17 @@ bool NeonLayerSupport::IsLayerSupported(const LayerType& type, *(PolymorphicDowncast<const QLstmDescriptor*>(&descriptor)), lstmParamsInfo.value(), reasonIfUnsupported); + case LayerType::UnidirectionalSequenceLstm: + return IsUnidirectionalSequenceLstmSupported(infos[0], + infos[1], + infos[2], + infos[3], + infos[4], + infos[5], + *(PolymorphicDowncast<const + UnidirectionalSequenceLstmDescriptor*>(&descriptor)), + lstmParamsInfo.value(), + reasonIfUnsupported); case LayerType::Maximum: return IsMaximumSupported(infos[0], infos[1], infos[2], reasonIfUnsupported); case LayerType::Mean: @@ -1421,4 +1433,26 @@ bool NeonLayerSupport::IsTransposeSupported(const TensorInfo& input, FORWARD_WORKLOAD_VALIDATE_FUNC(NeonTransposeWorkloadValidate, reasonIfUnsupported, input, output, descriptor); } +bool NeonLayerSupport::IsUnidirectionalSequenceLstmSupported(const TensorInfo& input, + const TensorInfo& outputStateIn, + const TensorInfo& cellStateIn, + const TensorInfo& output, + const Optional<TensorInfo>& hiddenStateOutput, + const Optional<TensorInfo>& cellStateOutput, + const UnidirectionalSequenceLstmDescriptor& descriptor, + const LstmInputParamsInfo& paramsInfo, + Optional<std::string&> reasonIfUnsupported) const +{ + FORWARD_WORKLOAD_VALIDATE_FUNC(NeonUnidirectionalSequenceLstmFloatWorkloadValidate, + reasonIfUnsupported, + input, + outputStateIn, + cellStateIn, + output, + hiddenStateOutput, + cellStateOutput, + descriptor, + paramsInfo); +} + } // namespace armnn |