diff options
author | Derek Lamberti <derek.lamberti@arm.com> | 2020-01-22 15:37:29 +0000 |
---|---|---|
committer | Derek Lamberti <derek.lamberti@arm.com> | 2020-01-24 09:21:47 +0000 |
commit | d466a54e79560f0ccacc6b13cd64e08defbac47c (patch) | |
tree | d8f8d5226d71178aed32c6ad407570071e55dded /src/backends/backendsCommon | |
parent | 4a3c61091037e7e86e8b03bb060d8c1ab82731a9 (diff) | |
download | armnn-d466a54e79560f0ccacc6b13cd64e08defbac47c.tar.gz |
IVGCVSW-4370 Deprecate DataType::QuantizedSymm8PerAxis
!android-nn-driver:2622
Change-Id: If99d3eff71ff66ba28af1e5af248299fe04511b9
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
Diffstat (limited to 'src/backends/backendsCommon')
6 files changed, 37 insertions, 6 deletions
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<DataType> 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 <backendsCommon/WorkloadUtils.hpp> +#include <armnn/Utils.hpp> + namespace armnn { @@ -167,9 +169,13 @@ armnn::ConstTensor ConvertWeightTensorFromArmnnToAcl(const ConstCpuTensorHandle* case DataType::QAsymmU8: weightPermuted = ReorderWeightChannelsForAcl<uint8_t>(weightPermuted, dataLayout, permuteBuffer); break; + ARMNN_NO_DEPRECATE_WARN_BEGIN case DataType::QuantizedSymm8PerAxis: + ARMNN_FALLTHROUGH; + case DataType::QSymmS8: weightPermuted = ReorderWeightChannelsForAcl<int8_t>(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<uint8_t, 4> 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<uint8_t, 4> 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<uint8_t, 4> 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); |