From b309fc249e4383b4d40ae03e377c3cbad3f9f5f7 Mon Sep 17 00:00:00 2001 From: Giorgio Arena Date: Tue, 5 Jan 2021 09:46:16 +0000 Subject: Fix uniform_real_distribution_fp16 warning and single Dimension increment - Change uniform_real_distribution_fp16's arguments to float to avoid maybe-uninitialized warnings in half data type's copy constructor and converter - Add increment method to Dimensions in order to avoid possible overflows when incrementing single dimensions - Remove internal_only flag documentation Resolves: COMPMID-4061 Change-Id: I7c50487193bd7b47b03d52fc595840c7df4e7104 Signed-off-by: Giorgio Arena Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4760 Reviewed-by: Georgios Pinitas Tested-by: Arm Jenkins Comments-Addressed: Arm Jenkins --- arm_compute/core/Dimensions.h | 17 ++++++++++++++++- docs/00_introduction.dox | 4 ---- tests/AssetsLibrary.h | 6 +++--- tests/validation/fixtures/ArgMinMaxFixture.h | 4 ++-- .../fixtures/ConvertFullyConnectedWeightsFixture.h | 4 ++-- tests/validation/fixtures/ConvolutionLayerFixture.h | 4 ++-- tests/validation/fixtures/DeconvolutionLayerFixture.h | 4 ++-- .../fixtures/DepthwiseConvolutionLayerFixture.h | 6 +++--- .../validation/fixtures/DirectConvolutionLayerFixture.h | 4 ++-- .../fixtures/DirectConvolutionLayerTensorShiftFixture.h | 4 ++-- tests/validation/fixtures/ElementWiseUnaryFixture.h | 4 ++-- tests/validation/fixtures/FFTFixture.h | 6 +++--- tests/validation/fixtures/GEMMFixture.h | 4 ++-- tests/validation/fixtures/GEMMInterleave4x4Fixture.h | 4 ++-- tests/validation/fixtures/GEMMLowpFixture.h | 4 ++-- tests/validation/fixtures/GEMMTranspose1xWFixture.h | 4 ++-- .../fixtures/WinogradConvolutionLayerFixture.h | 6 +++--- tests/validation/reference/ColorConvertHelper.h | 8 +++----- utils/Utils.h | 4 ++-- 19 files changed, 55 insertions(+), 46 deletions(-) diff --git a/arm_compute/core/Dimensions.h b/arm_compute/core/Dimensions.h index d487b997a3..175d1e8098 100644 --- a/arm_compute/core/Dimensions.h +++ b/arm_compute/core/Dimensions.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -97,6 +97,21 @@ public: { return _id[2]; } + /** Increments the given dimension by a step size, avoiding overflows + * + * @note Precondition: dim < _num_dimensions + * + * @param[in] dim Dimension to increment. + * @param[in] step Step to increment @p dim by. + */ + void increment(size_t dim, T step = 1) + { + ARM_COMPUTE_ERROR_ON(dim < _num_dimensions); + if((std::numeric_limits::max() - _id[dim]) <= step) + { + _id[dim] += step; + } + } /** Generic accessor to get the size of any dimension * * @note Precondition: dimension < Dimensions::num_max_dimensions diff --git a/docs/00_introduction.dox b/docs/00_introduction.dox index 189067c81f..db87540f37 100644 --- a/docs/00_introduction.dox +++ b/docs/00_introduction.dox @@ -1409,10 +1409,6 @@ To see the build options available simply run ```scons -h```: default: actual: - internal_only: Enable ARM internal only tests (yes|no) - default: False - actual: False - custom_options: Custom options that can be used to turn on/off features (all|none|comma-separated list of names) allowed names: disable_mmla_fp diff --git a/tests/AssetsLibrary.h b/tests/AssetsLibrary.h index fdb05691ea..f44c554635 100644 --- a/tests/AssetsLibrary.h +++ b/tests/AssetsLibrary.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -783,7 +783,7 @@ void AssetsLibrary::fill_tensor_uniform(T &&tensor, std::random_device::result_t case DataType::F16: { // It doesn't make sense to check [-inf, inf], so hard code it to a big number - arm_compute::utils::uniform_real_distribution_fp16 distribution_f16{ half(-100.f), half(100.f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution_f16{ -100.f, 100.f }; fill(tensor, distribution_f16, seed_offset); break; } @@ -980,7 +980,7 @@ void AssetsLibrary::fill_tensor_uniform(T &&tensor, std::random_device::result_t } case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution_f16{ half(low), half(high) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution_f16{ float(low), float(high) }; fill(tensor, distribution_f16, seed_offset); break; } diff --git a/tests/validation/fixtures/ArgMinMaxFixture.h b/tests/validation/fixtures/ArgMinMaxFixture.h index 044e253d92..fdf9ac4e5b 100644 --- a/tests/validation/fixtures/ArgMinMaxFixture.h +++ b/tests/validation/fixtures/ArgMinMaxFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020 Arm Limited. + * Copyright (c) 2018-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -61,7 +61,7 @@ protected: { case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-1.0f), half(1.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ -1.0f, 1.0f }; library->fill(tensor, distribution, 0); break; } diff --git a/tests/validation/fixtures/ConvertFullyConnectedWeightsFixture.h b/tests/validation/fixtures/ConvertFullyConnectedWeightsFixture.h index f1eeff7872..a4705b1250 100644 --- a/tests/validation/fixtures/ConvertFullyConnectedWeightsFixture.h +++ b/tests/validation/fixtures/ConvertFullyConnectedWeightsFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020 Arm Limited. + * Copyright (c) 2018-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -67,7 +67,7 @@ protected: } case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-1.0f), half(1.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ -1.0f, 1.0f }; library->fill(tensor, distribution, i); break; } diff --git a/tests/validation/fixtures/ConvolutionLayerFixture.h b/tests/validation/fixtures/ConvolutionLayerFixture.h index 94fbc53d65..210afbef5b 100644 --- a/tests/validation/fixtures/ConvolutionLayerFixture.h +++ b/tests/validation/fixtures/ConvolutionLayerFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -143,7 +143,7 @@ protected: case DataType::BFLOAT16: case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-1.0f), half(1.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ -1.0f, 1.0f }; library->fill(tensor, distribution, i); break; } diff --git a/tests/validation/fixtures/DeconvolutionLayerFixture.h b/tests/validation/fixtures/DeconvolutionLayerFixture.h index d56a9337e9..6394caf457 100644 --- a/tests/validation/fixtures/DeconvolutionLayerFixture.h +++ b/tests/validation/fixtures/DeconvolutionLayerFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -91,7 +91,7 @@ protected: } case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-1.0f), half(1.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ -1.0f, 1.0f }; library->fill(tensor, distribution, i); break; } diff --git a/tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h b/tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h index 9cd60cc1fb..09f8cb4c06 100644 --- a/tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h +++ b/tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -99,7 +99,7 @@ protected: } case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-1.0f), half(1.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ -1.0f, 1.0f }; library->fill(tensor, distribution, i); break; } @@ -354,7 +354,7 @@ protected: } case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-1.0f), half(1.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ -1.0f, 1.0f }; library->fill(tensor, distribution, i); break; } diff --git a/tests/validation/fixtures/DirectConvolutionLayerFixture.h b/tests/validation/fixtures/DirectConvolutionLayerFixture.h index 7faea5518f..1967e8dc4d 100644 --- a/tests/validation/fixtures/DirectConvolutionLayerFixture.h +++ b/tests/validation/fixtures/DirectConvolutionLayerFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -109,7 +109,7 @@ protected: } case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-1.0f), half(1.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ -1.0f, 1.0f }; library->fill(tensor, distribution, i); break; } diff --git a/tests/validation/fixtures/DirectConvolutionLayerTensorShiftFixture.h b/tests/validation/fixtures/DirectConvolutionLayerTensorShiftFixture.h index be43853e0b..7e891fe682 100644 --- a/tests/validation/fixtures/DirectConvolutionLayerTensorShiftFixture.h +++ b/tests/validation/fixtures/DirectConvolutionLayerTensorShiftFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -94,7 +94,7 @@ protected: } case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-1.0f), half(1.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ float(-1.0f), float(1.0f) }; library->fill(tensor, distribution, i); break; } diff --git a/tests/validation/fixtures/ElementWiseUnaryFixture.h b/tests/validation/fixtures/ElementWiseUnaryFixture.h index b1d54fd940..26484be2fa 100644 --- a/tests/validation/fixtures/ElementWiseUnaryFixture.h +++ b/tests/validation/fixtures/ElementWiseUnaryFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020 Arm Limited. + * Copyright (c) 2018-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -76,7 +76,7 @@ protected: { case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-2.0f), half(2.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ -2.0f, 2.0f }; library->fill(tensor, distribution, i); break; } diff --git a/tests/validation/fixtures/FFTFixture.h b/tests/validation/fixtures/FFTFixture.h index ae5b226954..37c2f2faec 100644 --- a/tests/validation/fixtures/FFTFixture.h +++ b/tests/validation/fixtures/FFTFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2020 Arm Limited. + * Copyright (c) 2019-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -63,7 +63,7 @@ protected: { case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-5.0f), half(5.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ -5.0f, 5.0f }; library->fill(tensor, distribution, 0); break; } @@ -151,7 +151,7 @@ protected: { case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-1.0f), half(1.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ -1.0f, 1.0f }; library->fill(tensor, distribution, i); break; } diff --git a/tests/validation/fixtures/GEMMFixture.h b/tests/validation/fixtures/GEMMFixture.h index 7e775887b6..0c2f0a410e 100644 --- a/tests/validation/fixtures/GEMMFixture.h +++ b/tests/validation/fixtures/GEMMFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -64,7 +64,7 @@ protected: { case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(lo), half(hi) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ float(lo), float(hi) }; library->fill(tensor, distribution, i); break; } diff --git a/tests/validation/fixtures/GEMMInterleave4x4Fixture.h b/tests/validation/fixtures/GEMMInterleave4x4Fixture.h index 3b153a85dc..30708e4e7d 100644 --- a/tests/validation/fixtures/GEMMInterleave4x4Fixture.h +++ b/tests/validation/fixtures/GEMMInterleave4x4Fixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -64,7 +64,7 @@ protected: { case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-1.0f), half(1.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ -1.0f, 1.0f }; library->fill(tensor, distribution, i); break; } diff --git a/tests/validation/fixtures/GEMMLowpFixture.h b/tests/validation/fixtures/GEMMLowpFixture.h index 338cf01138..b9140ebd3e 100644 --- a/tests/validation/fixtures/GEMMLowpFixture.h +++ b/tests/validation/fixtures/GEMMLowpFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -79,7 +79,7 @@ void fill(U &&tensor, int i) } case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-1.0f), half(1.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ -1.0f, 1.0f }; library->fill(tensor, distribution, i); break; } diff --git a/tests/validation/fixtures/GEMMTranspose1xWFixture.h b/tests/validation/fixtures/GEMMTranspose1xWFixture.h index 6edb78fe22..3d6ac76681 100644 --- a/tests/validation/fixtures/GEMMTranspose1xWFixture.h +++ b/tests/validation/fixtures/GEMMTranspose1xWFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -65,7 +65,7 @@ protected: { case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(-1.0f), half(1.0f) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ -1.0f, 1.0f }; library->fill(tensor, distribution, i); break; } diff --git a/tests/validation/fixtures/WinogradConvolutionLayerFixture.h b/tests/validation/fixtures/WinogradConvolutionLayerFixture.h index 4e26a5ef95..5a40815a67 100644 --- a/tests/validation/fixtures/WinogradConvolutionLayerFixture.h +++ b/tests/validation/fixtures/WinogradConvolutionLayerFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020 Arm Limited. + * Copyright (c) 2018-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -177,7 +177,7 @@ protected: { case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(min), half(max) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ float(min), float(max) }; library->fill(tensor, distribution, i); break; } @@ -500,7 +500,7 @@ protected: { case DataType::F16: { - arm_compute::utils::uniform_real_distribution_fp16 distribution{ half(min), half(max) }; + arm_compute::utils::uniform_real_distribution_fp16 distribution{ float(min), float(max) }; library->fill(tensor, distribution, i); break; } diff --git a/tests/validation/reference/ColorConvertHelper.h b/tests/validation/reference/ColorConvertHelper.h index 100b4dcd7f..0656b368d7 100644 --- a/tests/validation/reference/ColorConvertHelper.h +++ b/tests/validation/reference/ColorConvertHelper.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -614,9 +614,7 @@ inline void colorconvert_rgb_to_yuv4(const SimpleTensor src, std::vector src, std::vector