From 1f140f7226c4ed7bc5cbaf2ce09654eee452f4bf Mon Sep 17 00:00:00 2001 From: Mike Kelly Date: Tue, 6 Apr 2021 12:25:55 +0100 Subject: 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 Signed-off-by: Matthew Sloyan Change-Id: Ib622c052a1f8aa3e658262f8bde5a6881a8cbe10 --- src/backends/reference/RefLayerSupport.cpp | 14 ++++++++++---- src/backends/reference/workloads/RefArgMinMaxWorkload.cpp | 4 ++-- 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'src/backends') 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 supportedTypes = + std::array 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 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(0, m_Data); ArgMinMax(decoder, output, inputTensorInfo, outputTensorInfo, m_Data.m_Parameters.m_Function, m_Data.m_Parameters.m_Axis); -- cgit v1.2.1