aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/backendsCommon')
-rw-r--r--src/backends/backendsCommon/LayerSupportRules.hpp8
-rw-r--r--src/backends/backendsCommon/WorkloadData.cpp21
-rw-r--r--src/backends/backendsCommon/WorkloadUtils.cpp6
-rw-r--r--src/backends/backendsCommon/test/WorkloadDataValidation.cpp2
-rw-r--r--src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.cpp4
-rw-r--r--src/backends/backendsCommon/test/layerTests/TransposeConvolution2dTestImpl.cpp2
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);