diff options
author | Nina Drozd <nina.drozd@arm.com> | 2019-05-16 12:09:18 +0100 |
---|---|---|
committer | Nina Drozd <nina.drozd@arm.com> | 2019-05-20 08:56:46 +0000 |
commit | 58ef2c6f797f6bdb962016c519ebbc980ec2ed50 (patch) | |
tree | 282d50763bd2a6aaf4bb4ef5ea5ed123cfdcedb6 /src/backends/backendsCommon | |
parent | 39d487d3e2834a6d3024c92a519d84aa05f87925 (diff) | |
download | armnn-58ef2c6f797f6bdb962016c519ebbc980ec2ed50.tar.gz |
IVGCVSW-2967 Support QSymm16 for Constant workloads
* Validate that output is any of supported types in WorkloadData
* Validate that output is any of supported types in RefLayerSupport
* Add test for constant with QuantisedSymm16 in LayerTests
* Add test for creating constant workload in RefCreateWorkloadTests
* Add test for constant with QuantisedSymm16 in RefLayerTests
* Refactor RefConstantWorkload - BaseWorkload instead of TypedWorkload
* Refactor RefConstantWorkload - remove m_RanOnce, use PostAllocationConfigure()
Signed-off-by: Nina Drozd <nina.drozd@arm.com>
Change-Id: Ic30e61319ef4ff9c367689901f7c6d498142a9c5
Diffstat (limited to 'src/backends/backendsCommon')
-rw-r--r-- | src/backends/backendsCommon/WorkloadData.cpp | 12 | ||||
-rw-r--r-- | src/backends/backendsCommon/test/LayerTests.cpp | 24 | ||||
-rw-r--r-- | src/backends/backendsCommon/test/LayerTests.hpp | 12 |
3 files changed, 42 insertions, 6 deletions
diff --git a/src/backends/backendsCommon/WorkloadData.cpp b/src/backends/backendsCommon/WorkloadData.cpp index 335e7c5fcd..a3470ad601 100644 --- a/src/backends/backendsCommon/WorkloadData.cpp +++ b/src/backends/backendsCommon/WorkloadData.cpp @@ -812,6 +812,18 @@ void ConstantQueueDescriptor::Validate(const WorkloadInfo& workloadInfo) const "ConstantQueueDescriptor", "constant", "output"); + + // Check the supported data types + std::vector<DataType> supportedTypes = + { + DataType::Float32, + DataType::Float16, + DataType::Signed32, + DataType::QuantisedAsymm8, + DataType::QuantisedSymm16 + }; + + ValidateDataTypes(workloadInfo.m_OutputTensorInfos[0], supportedTypes, "ConstantQueueDescriptor"); } void ReshapeQueueDescriptor::Validate(const WorkloadInfo& workloadInfo) const diff --git a/src/backends/backendsCommon/test/LayerTests.cpp b/src/backends/backendsCommon/test/LayerTests.cpp index 980cd84d7c..52c9773b9f 100644 --- a/src/backends/backendsCommon/test/LayerTests.cpp +++ b/src/backends/backendsCommon/test/LayerTests.cpp @@ -6387,9 +6387,11 @@ LayerTestResult<T, 4> ConstantTestImpl( constexpr unsigned int outputChannels = inputChannels; constexpr unsigned int outputBatchSize = inputBatchSize; - armnn::TensorInfo inputTensorInfo({ inputBatchSize, inputChannels, inputHeight, inputWidth }, ArmnnType); + armnn::TensorInfo inputTensorInfo({ inputBatchSize, inputChannels, inputHeight, inputWidth }, + ArmnnType, qScale, qOffset); - armnn::TensorInfo outputTensorInfo({ outputBatchSize, outputChannels, outputHeight, outputWidth }, ArmnnType); + armnn::TensorInfo outputTensorInfo({ outputBatchSize, outputChannels, outputHeight, outputWidth }, + ArmnnType, qScale, qOffset); // Set quantization parameters if the requested type is a quantized type. if(armnn::IsQuantizedType<T>()) @@ -6471,7 +6473,14 @@ LayerTestResult<float, 4> ConstantTest( return ConstantTestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, 0.0f, 0); } -LayerTestResult<uint8_t, 4> ConstantTestUint8( +LayerTestResult<int16_t, 4> ConstantInt16SimpleQuantizationScaleNoOffsetTest( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return ConstantTestImpl<armnn::DataType::QuantisedSymm16>(workloadFactory, memoryManager, 1.0f, 0); +} + +LayerTestResult<uint8_t, 4> ConstantUint8SimpleQuantizationScaleNoOffsetTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { @@ -8173,13 +8182,20 @@ LayerTestResult<uint8_t, 4> BatchNormUint8NhwcTest( 1.f/20.f, 50, armnn::DataLayout::NHWC); } -LayerTestResult<uint8_t, 4> ConstantUint8Test( +LayerTestResult<uint8_t, 4> ConstantUint8CustomQuantizationScaleAndOffsetTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) { return ConstantTestImpl<armnn::DataType::QuantisedAsymm8>(workloadFactory, memoryManager, 2e-6f, 1); } +LayerTestResult<int16_t, 4> ConstantInt16CustomQuantizationScaleAndOffsetTest( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return ConstantTestImpl<armnn::DataType::QuantisedSymm16>(workloadFactory, memoryManager, 2e-6f, 1); +} + LayerTestResult<uint8_t, 1> Concatenation1dUint8Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) diff --git a/src/backends/backendsCommon/test/LayerTests.hpp b/src/backends/backendsCommon/test/LayerTests.hpp index 60195cd534..76dc240488 100644 --- a/src/backends/backendsCommon/test/LayerTests.hpp +++ b/src/backends/backendsCommon/test/LayerTests.hpp @@ -774,7 +774,11 @@ LayerTestResult<float, 4> ConstantTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); -LayerTestResult<uint8_t, 4> ConstantTestUint8( +LayerTestResult<uint8_t, 4> ConstantUint8SimpleQuantizationScaleNoOffsetTest( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<int16_t, 4> ConstantInt16SimpleQuantizationScaleNoOffsetTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); @@ -988,7 +992,11 @@ LayerTestResult<uint8_t, 4> BatchNormUint8NhwcTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); -LayerTestResult<uint8_t, 4> ConstantUint8Test( +LayerTestResult<uint8_t, 4> ConstantUint8CustomQuantizationScaleAndOffsetTest( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<int16_t, 4> ConstantInt16CustomQuantizationScaleAndOffsetTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); |