From d466a54e79560f0ccacc6b13cd64e08defbac47c Mon Sep 17 00:00:00 2001 From: Derek Lamberti Date: Wed, 22 Jan 2020 15:37:29 +0000 Subject: IVGCVSW-4370 Deprecate DataType::QuantizedSymm8PerAxis !android-nn-driver:2622 Change-Id: If99d3eff71ff66ba28af1e5af248299fe04511b9 Signed-off-by: Derek Lamberti --- src/backends/backendsCommon/LayerSupportRules.hpp | 8 ++++++++ src/backends/backendsCommon/WorkloadData.cpp | 21 +++++++++++++++++++-- src/backends/backendsCommon/WorkloadUtils.cpp | 6 ++++++ .../backendsCommon/test/WorkloadDataValidation.cpp | 2 +- .../test/layerTests/Conv2dTestImpl.cpp | 4 ++-- .../layerTests/TransposeConvolution2dTestImpl.cpp | 2 +- 6 files changed, 37 insertions(+), 6 deletions(-) (limited to 'src/backends/backendsCommon') diff --git a/src/backends/backendsCommon/LayerSupportRules.hpp b/src/backends/backendsCommon/LayerSupportRules.hpp index d8b6af8a30..3a2ae06f5a 100644 --- a/src/backends/backendsCommon/LayerSupportRules.hpp +++ b/src/backends/backendsCommon/LayerSupportRules.hpp @@ -106,6 +106,14 @@ struct TypeIs : public Rule } }; +struct TypeNotPerAxisQuantized : public Rule +{ + TypeNotPerAxisQuantized(const TensorInfo& info) + { + m_Res = !info.IsQuantized() || !info.HasPerAxisQuantization(); + } +}; + struct BiasAndWeightsTypesMatch : public Rule { BiasAndWeightsTypesMatch(const TensorInfo& biases, const TensorInfo& weights) diff --git a/src/backends/backendsCommon/WorkloadData.cpp b/src/backends/backendsCommon/WorkloadData.cpp index d2ab41ef40..075884b2da 100644 --- a/src/backends/backendsCommon/WorkloadData.cpp +++ b/src/backends/backendsCommon/WorkloadData.cpp @@ -149,6 +149,19 @@ void ValidateTensorDataType(const TensorInfo& tensor, DataType dataType, } } +void ValidPerAxisQuantizedDataType(const TensorInfo& tensor, const std::string& descName, const std::string& tensorName) +{ + ARMNN_NO_DEPRECATE_WARN_BEGIN + if (tensor.GetDataType() != DataType::QSymmS8 && + tensor.GetDataType() != DataType::QuantizedSymm8PerAxis) + { + throw InvalidArgumentException(descName + + ": Expected data type which supports per-axis quantization scheme but got " + + GetDataTypeName(tensor.GetDataType()) + " for " + tensorName + " tensor."); + } + ARMNN_NO_DEPRECATE_WARN_END +} + //--------------------------------------------------------------- void ValidateTensorQuantizationSpace(const TensorInfo& first, const TensorInfo& second, @@ -344,11 +357,14 @@ void ValidateWeightDataType(const TensorInfo& inputInfo, const DataType inputType = inputInfo.GetDataType(); if (inputType == DataType::QAsymmU8) { + ARMNN_NO_DEPRECATE_WARN_BEGIN const std::vector validTypes = { DataType::QAsymmU8, - DataType::QuantizedSymm8PerAxis + DataType::QSymmS8, + DataType::QuantizedSymm8PerAxis // deprecated }; + ARMNN_NO_DEPRECATE_WARN_END ValidateDataTypes(weightInfo, validTypes, descName); } @@ -412,7 +428,8 @@ void ValidatePerAxisQuantization(const TensorInfo& inputInfo, "but data type does not support per-axis quantization.") % descName % "weight")); } - ValidateTensorDataType(weightInfo, DataType::QuantizedSymm8PerAxis, descName, "weight"); + + ValidPerAxisQuantizedDataType(weightInfo, descName, "weight"); ValidatePerAxisQuantizationDimension(weightInfo, descName, "weight"); ValidatePerAxisQuantizationOffset(weightInfo, descName, "weight"); diff --git a/src/backends/backendsCommon/WorkloadUtils.cpp b/src/backends/backendsCommon/WorkloadUtils.cpp index cb1f7c117a..69a62914e5 100644 --- a/src/backends/backendsCommon/WorkloadUtils.cpp +++ b/src/backends/backendsCommon/WorkloadUtils.cpp @@ -5,6 +5,8 @@ #include +#include + namespace armnn { @@ -167,9 +169,13 @@ armnn::ConstTensor ConvertWeightTensorFromArmnnToAcl(const ConstCpuTensorHandle* case DataType::QAsymmU8: weightPermuted = ReorderWeightChannelsForAcl(weightPermuted, dataLayout, permuteBuffer); break; + ARMNN_NO_DEPRECATE_WARN_BEGIN case DataType::QuantizedSymm8PerAxis: + ARMNN_FALLTHROUGH; + case DataType::QSymmS8: weightPermuted = ReorderWeightChannelsForAcl(weightPermuted, dataLayout, permuteBuffer); break; + ARMNN_NO_DEPRECATE_WARN_END default: break; } diff --git a/src/backends/backendsCommon/test/WorkloadDataValidation.cpp b/src/backends/backendsCommon/test/WorkloadDataValidation.cpp index 3c47eab01f..5c60e9e552 100644 --- a/src/backends/backendsCommon/test/WorkloadDataValidation.cpp +++ b/src/backends/backendsCommon/test/WorkloadDataValidation.cpp @@ -616,7 +616,7 @@ BOOST_AUTO_TEST_CASE(BiasPerAxisQuantization_Validate) const TensorShape biasShape { cOutput }; constexpr DataType inputType = DataType::QAsymmU8; - constexpr DataType weightType = DataType::QuantizedSymm8PerAxis; + constexpr DataType weightType = DataType::QSymmS8; constexpr DataType biasType = DataType::Signed32; constexpr float perTensorScale = 1.5f; diff --git a/src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.cpp index b0b2981d8d..669398fb54 100644 --- a/src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.cpp +++ b/src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.cpp @@ -3049,7 +3049,7 @@ LayerTestResult Convolution2dPerAxisQuantTest( using namespace armnn; const DataType inputType = DataType::QAsymmU8; - const DataType kernelType = DataType::QuantizedSymm8PerAxis; + const DataType kernelType = DataType::QSymmS8; const DataType biasType = DataType::Signed32; TensorInfo inputInfo ({ 1, 3, 1, 2 }, inputType, 0.5f, 128); @@ -3273,7 +3273,7 @@ LayerTestResult DepthwiseConvolution2dPerAxisQuantTest( using namespace armnn; const DataType inputType = DataType::QAsymmU8; - const DataType kernelType = DataType::QuantizedSymm8PerAxis; + const DataType kernelType = DataType::QSymmS8; const DataType biasType = DataType::Signed32; TensorInfo inputInfo ({ 1, 3, 3, 2 }, inputType, 0.5f, 128); // N H W C diff --git a/src/backends/backendsCommon/test/layerTests/TransposeConvolution2dTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/TransposeConvolution2dTestImpl.cpp index 1c880752c8..378ec46bd1 100644 --- a/src/backends/backendsCommon/test/layerTests/TransposeConvolution2dTestImpl.cpp +++ b/src/backends/backendsCommon/test/layerTests/TransposeConvolution2dTestImpl.cpp @@ -566,7 +566,7 @@ LayerTestResult TransposeConvolution2dPerAxisQuantTest( using namespace armnn; const DataType inputType = DataType::QAsymmU8; - const DataType kernelType = DataType::QuantizedSymm8PerAxis; + const DataType kernelType = DataType::QSymmS8; const DataType biasType = DataType::Signed32; TensorInfo inputInfo ({ 1, 1, 2, 2 }, inputType, 0.50f, 10); -- cgit v1.2.1