diff options
author | Mike Kelly <mike.kelly@arm.com> | 2021-04-06 12:25:55 +0100 |
---|---|---|
committer | Matthew Sloyan <matthew.sloyan@arm.com> | 2021-04-09 12:38:48 +0100 |
commit | 1f140f7226c4ed7bc5cbaf2ce09654eee452f4bf (patch) | |
tree | 044d491d429b6da4d85530afd4ea2a310cdbb827 /src/backends/reference | |
parent | 7c67fabc86b6647855beebac9f6cfe92341357cb (diff) | |
download | armnn-1f140f7226c4ed7bc5cbaf2ce09654eee452f4bf.tar.gz |
MLCE-328 Serializer/Deserializer does not support Signed64
* Added support for Signed64 to flatbuffer's schema & updated source tree
* Added support for Signed64 to TFLite Delegate
* Added support for Signed64 to Serializer
* Added support for Signed64 to Deserializer
* Added unit test for ArgMinMax to Deserializer
* Deprecated m_Output_Type from the ArgMinMaxDescriptor: the output type
is solely determined by the DataType of the output Tensor
* Fixed issue where RefArgMinMaxWorkload could output data using
the wrong DataType
* Added Signed64 to RefLayerSupport::IsArgMinMaxSupported as a supported
type
Signed-off-by: Mike Kelly <mike.kelly@arm.com>
Signed-off-by: Matthew Sloyan <matthew.sloyan@arm.com>
Change-Id: Ib622c052a1f8aa3e658262f8bde5a6881a8cbe10
Diffstat (limited to 'src/backends/reference')
-rw-r--r-- | src/backends/reference/RefLayerSupport.cpp | 14 | ||||
-rw-r--r-- | src/backends/reference/workloads/RefArgMinMaxWorkload.cpp | 4 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp index 992ae71f97..2e0a8f2faa 100644 --- a/src/backends/reference/RefLayerSupport.cpp +++ b/src/backends/reference/RefLayerSupport.cpp @@ -179,7 +179,7 @@ bool RefLayerSupport::IsArgMinMaxSupported(const armnn::TensorInfo &input, const { IgnoreUnused(descriptor); - std::array<DataType, 7> supportedTypes = + std::array<DataType, 8> supportedInputTypes = { DataType::BFloat16, DataType::Float16, @@ -187,14 +187,20 @@ bool RefLayerSupport::IsArgMinMaxSupported(const armnn::TensorInfo &input, const DataType::QAsymmS8, DataType::QAsymmU8, DataType::QSymmS16, - DataType::Signed32 + DataType::Signed32, + DataType::Signed64 + }; + + std::array<DataType,2> supportedOutputTypes = { + DataType::Signed32, + DataType::Signed64 }; bool supported = true; - supported &= CheckSupportRule(TypeAnyOf(input, supportedTypes), reasonIfUnsupported, + supported &= CheckSupportRule(TypeAnyOf(input, supportedInputTypes), reasonIfUnsupported, "Reference ArgMinMax: input is not a supported type."); - supported &= CheckSupportRule(TypeIs(output, DataType::Signed32), reasonIfUnsupported, + supported &= CheckSupportRule(TypeAnyOf(output, supportedOutputTypes), reasonIfUnsupported, "Reference ArgMinMax: output type not supported"); return supported; diff --git a/src/backends/reference/workloads/RefArgMinMaxWorkload.cpp b/src/backends/reference/workloads/RefArgMinMaxWorkload.cpp index b7246d5b93..bf8649f54d 100644 --- a/src/backends/reference/workloads/RefArgMinMaxWorkload.cpp +++ b/src/backends/reference/workloads/RefArgMinMaxWorkload.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2019 Arm Ltd. All rights reserved. +// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -29,7 +29,7 @@ void RefArgMinMaxWorkload::Execute() const const TensorInfo &outputTensorInfo = GetTensorInfo(m_Data.m_Outputs[0]); - if (m_Data.m_Parameters.m_Output_Type == armnn::DataType::Signed32) { + if (outputTensorInfo.GetDataType() == armnn::DataType::Signed32) { int32_t *output = GetOutputTensorData<int32_t>(0, m_Data); ArgMinMax(decoder, output, inputTensorInfo, outputTensorInfo, m_Data.m_Parameters.m_Function, m_Data.m_Parameters.m_Axis); |