diff options
author | Aron Virginas-Tar <Aron.Virginas-Tar@arm.com> | 2019-11-01 11:40:39 +0000 |
---|---|---|
committer | Matteo Martincigh <matteo.martincigh@arm.com> | 2019-11-05 09:04:51 +0000 |
commit | 13b653fd246b31279ae6cb42261671462b52d1be (patch) | |
tree | 011f4efbefcbb615a996b9e0eae256da1d57ed20 /src/backends/aclCommon/test | |
parent | 5236e1d6bcff6ebec7ec10d7d416cc6ead5482dd (diff) | |
download | armnn-13b653fd246b31279ae6cb42261671462b52d1be.tar.gz |
IVGCVSW-3843 Add support of per-axis quantization to BuildArmComputeTensorInfo
Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com>
Change-Id: I0bb0e9da306eee3e19dc9967a6c8bb01da998deb
Diffstat (limited to 'src/backends/aclCommon/test')
-rw-r--r-- | src/backends/aclCommon/test/ArmComputeTensorUtilsTests.cpp | 46 | ||||
-rw-r--r-- | src/backends/aclCommon/test/CMakeLists.txt | 1 |
2 files changed, 47 insertions, 0 deletions
diff --git a/src/backends/aclCommon/test/ArmComputeTensorUtilsTests.cpp b/src/backends/aclCommon/test/ArmComputeTensorUtilsTests.cpp new file mode 100644 index 0000000000..1e2f0db600 --- /dev/null +++ b/src/backends/aclCommon/test/ArmComputeTensorUtilsTests.cpp @@ -0,0 +1,46 @@ +// +// Copyright © 2019 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include <aclCommon/ArmComputeTensorUtils.hpp> + +#include <boost/test/unit_test.hpp> + +using namespace armnn::armcomputetensorutils; + +BOOST_AUTO_TEST_SUITE(ArmComputeTensorUtils) + +BOOST_AUTO_TEST_CASE(BuildArmComputeTensorInfoTest) +{ + + const armnn::TensorShape tensorShape = { 1, 2, 3, 4 }; + const armnn::DataType dataType = armnn::DataType::QuantisedAsymm8; + + const std::vector<float> quantScales = { 1.5f, 2.5f, 3.5f, 4.5f }; + const float quantScale = quantScales[0]; + const int32_t quantOffset = 128; + + // Tensor info with per-tensor quantization + const armnn::TensorInfo tensorInfo0(tensorShape, dataType, quantScale, quantOffset); + const arm_compute::TensorInfo aclTensorInfo0 = BuildArmComputeTensorInfo(tensorInfo0); + + const arm_compute::TensorShape& aclTensorShape = aclTensorInfo0.tensor_shape(); + BOOST_CHECK(aclTensorShape.num_dimensions() == tensorShape.GetNumDimensions()); + for(unsigned int i = 0u; i < tensorShape.GetNumDimensions(); ++i) + { + // NOTE: arm_compute tensor dimensions are stored in the opposite order + BOOST_CHECK(aclTensorShape[i] == tensorShape[tensorShape.GetNumDimensions() - i - 1]); + } + + BOOST_CHECK(aclTensorInfo0.data_type() == arm_compute::DataType::QASYMM8); + BOOST_CHECK(aclTensorInfo0.quantization_info().scale()[0] == quantScale); + + // Tensor info with per-axis quantization + const armnn::TensorInfo tensorInfo1(tensorShape, dataType, quantScales, 0); + const arm_compute::TensorInfo aclTensorInfo1 = BuildArmComputeTensorInfo(tensorInfo1); + + BOOST_CHECK(aclTensorInfo1.quantization_info().scale() == quantScales); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/backends/aclCommon/test/CMakeLists.txt b/src/backends/aclCommon/test/CMakeLists.txt index 637b724b14..7ba9306cd1 100644 --- a/src/backends/aclCommon/test/CMakeLists.txt +++ b/src/backends/aclCommon/test/CMakeLists.txt @@ -4,6 +4,7 @@ # list(APPEND armnnAclCommonUnitTests_sources + ArmComputeTensorUtilsTests.cpp CreateWorkloadClNeon.hpp MemCopyTests.cpp MemCopyTestImpl.hpp |