diff --git a/LICENSE b/LICENSE index 54292789e6..1b316d3292 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017-2019 ARM Software +Copyright (c) 2017-2020 ARM Software Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index ea1dd87803..c19449d590 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,9 @@ Tutorials: Documentation (API, changelogs, build guide, contribution guide, errata, etc.) available here: +- [v19.11.1](https://arm-software.github.io/ComputeLibrary/v19.11.1/) - [v19.11](https://arm-software.github.io/ComputeLibrary/v19.11/) +- [v19.08.1](https://arm-software.github.io/ComputeLibrary/v19.08.1/) - [v19.08](https://arm-software.github.io/ComputeLibrary/v19.08/) - [v19.05](https://arm-software.github.io/ComputeLibrary/v19.05/) - [v19.02](https://arm-software.github.io/ComputeLibrary/v19.02/) @@ -47,8 +49,12 @@ Documentation (API, changelogs, build guide, contribution guide, errata, etc.) a Binaries available here: +- [v19.11.1-linux](https://github.com/ARM-software/ComputeLibrary/releases/download/v19.11.1/arm_compute-v19.11.1-bin-linux.tar.gz) +- [v19.11.1-android](https://github.com/ARM-software/ComputeLibrary/releases/download/v19.11.1/arm_compute-v19.11.1-bin-android.tar.gz) - [v19.11-linux](https://github.com/ARM-software/ComputeLibrary/releases/download/v19.11/arm_compute-v19.11-bin-linux.tar.gz) - [v19.11-android](https://github.com/ARM-software/ComputeLibrary/releases/download/v19.11/arm_compute-v19.11-bin-android.tar.gz) +- [v19.08.1-linux](https://github.com/ARM-software/ComputeLibrary/releases/download/v19.08.1/arm_compute-v19.08.1-bin-linux.tar.gz) +- [v19.08.1-android](https://github.com/ARM-software/ComputeLibrary/releases/download/v19.08.1/arm_compute-v19.08.1-bin-android.tar.gz) - [v19.08-linux](https://github.com/ARM-software/ComputeLibrary/releases/download/v19.08/arm_compute-v19.08-bin-linux.tar.gz) - [v19.08-android](https://github.com/ARM-software/ComputeLibrary/releases/download/v19.08/arm_compute-v19.08-bin-android.tar.gz) - [v19.05-linux](https://github.com/ARM-software/ComputeLibrary/releases/download/v19.05/arm_compute-v19.05-bin-linux.tar.gz) diff --git a/SConscript b/SConscript index 8f5b905c8f..33e8f77fe1 100644 --- a/SConscript +++ b/SConscript @@ -24,8 +24,8 @@ import os.path import re import subprocess -VERSION = "v19.11" -SONAME_VERSION="17.0.0" +VERSION = "v19.11.1" +SONAME_VERSION="17.1.0" Import('env') Import('vars') diff --git a/arm_compute/core/CL/kernels/CLDeconvolutionLayerUpsampleKernel.h b/arm_compute/core/CL/kernels/CLDeconvolutionLayerUpsampleKernel.h index 21d026e0a1..2dd20e9588 100644 --- a/arm_compute/core/CL/kernels/CLDeconvolutionLayerUpsampleKernel.h +++ b/arm_compute/core/CL/kernels/CLDeconvolutionLayerUpsampleKernel.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 ARM Limited. + * Copyright (c) 2017-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -72,6 +72,7 @@ class CLDeconvolutionLayerUpsampleKernel : public ICLKernel const ICLTensor *_input; ICLTensor *_output; PadStrideInfo _info; + DataLayout _data_layout; }; } // namespace arm_compute #endif /*__ARM_COMPUTE_CLDECONVOLUTIONLAYERUPSAMPLEKERNEL_H__ */ diff --git a/arm_compute/core/CL/kernels/CLDirectConvolutionLayerKernel.h b/arm_compute/core/CL/kernels/CLDirectConvolutionLayerKernel.h index 081b01aad3..faf97e45dc 100644 --- a/arm_compute/core/CL/kernels/CLDirectConvolutionLayerKernel.h +++ b/arm_compute/core/CL/kernels/CLDirectConvolutionLayerKernel.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 ARM Limited. + * Copyright (c) 2017-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -94,6 +94,7 @@ class CLDirectConvolutionLayerKernel : public ICLKernel const ICLTensor *_biases; const ICLTensor *_weights; ICLTensor *_output; + DataLayout _data_layout; BorderSize _border_size; int _conv_stride_x; int _conv_stride_y; diff --git a/arm_compute/core/CL/kernels/CLIm2ColKernel.h b/arm_compute/core/CL/kernels/CLIm2ColKernel.h index 0647f5dcec..00cb416e90 100644 --- a/arm_compute/core/CL/kernels/CLIm2ColKernel.h +++ b/arm_compute/core/CL/kernels/CLIm2ColKernel.h @@ -103,6 +103,7 @@ class CLIm2ColKernel : public ICLKernel public: const ICLTensor *_input; ICLTensor *_output; + DataLayout _data_layout; std::pair _convolved_dims; unsigned int _num_elems_processed_per_iteration; Size2D _kernel_dims; diff --git a/arm_compute/core/CL/kernels/CLPoolingLayerKernel.h b/arm_compute/core/CL/kernels/CLPoolingLayerKernel.h index db1a756229..68a99039d8 100644 --- a/arm_compute/core/CL/kernels/CLPoolingLayerKernel.h +++ b/arm_compute/core/CL/kernels/CLPoolingLayerKernel.h @@ -75,6 +75,7 @@ class CLPoolingLayerKernel : public ICLKernel const ICLTensor *_input; ICLTensor *_output; PoolingLayerInfo _pool_info; + DataLayout _data_layout; BorderSize _border_size; unsigned int _num_elems_processed_per_iteration; }; diff --git a/arm_compute/core/CL/kernels/CLScaleKernel.h b/arm_compute/core/CL/kernels/CLScaleKernel.h index ff72af29fc..1ada3cde85 100644 --- a/arm_compute/core/CL/kernels/CLScaleKernel.h +++ b/arm_compute/core/CL/kernels/CLScaleKernel.h @@ -75,6 +75,7 @@ class CLScaleKernel : public ICLSimple2DKernel public: InterpolationPolicy _interpolationPolicy = InterpolationPolicy::BILINEAR; + DataLayout _data_layout = DataLayout::UNKNOWN; }; } // namespace arm_compute #endif /*__ARM_COMPUTE_CLSCALEKERNEL_H__ */ diff --git a/arm_compute/core/CL/kernels/CLUpsampleLayerKernel.h b/arm_compute/core/CL/kernels/CLUpsampleLayerKernel.h index dcd4f1bdb4..c8c69002c4 100644 --- a/arm_compute/core/CL/kernels/CLUpsampleLayerKernel.h +++ b/arm_compute/core/CL/kernels/CLUpsampleLayerKernel.h @@ -73,6 +73,7 @@ class CLUpsampleLayerKernel : public ICLKernel const ICLTensor *_input; ICLTensor *_output; Size2D _info; + DataLayout _data_layout; unsigned int _num_elems_processed_per_iteration_input_x; }; } // namespace arm_compute diff --git a/arm_compute/core/CL/kernels/CLWinogradInputTransformKernel.h b/arm_compute/core/CL/kernels/CLWinogradInputTransformKernel.h index bc05a0ebf1..30bd3abb43 100644 --- a/arm_compute/core/CL/kernels/CLWinogradInputTransformKernel.h +++ b/arm_compute/core/CL/kernels/CLWinogradInputTransformKernel.h @@ -93,6 +93,7 @@ class CLWinogradInputTransformKernel : public ICLKernel BorderSize _border_size; const ICLTensor *_input; ICLTensor *_output; + DataLayout _data_layout; int _num_tiles_x; int _num_tiles_y; unsigned int _step_z; diff --git a/arm_compute/core/NEON/kernels/NEDepthToSpaceLayerKernel.h b/arm_compute/core/NEON/kernels/NEDepthToSpaceLayerKernel.h index a62da049a5..b34f6d3ebf 100644 --- a/arm_compute/core/NEON/kernels/NEDepthToSpaceLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEDepthToSpaceLayerKernel.h @@ -74,6 +74,7 @@ class NEDepthToSpaceLayerKernel : public INEKernel const ITensor *_input; /**< Source tensor */ ITensor *_output; /**< Destination tensor */ int32_t _block_shape; /**< Block shape */ + DataLayout _data_layout; /**< Data layout of the operation */ }; } // namespace arm_compute #endif /* __ARM_COMPUTE_NEDEPTHTOSPACELAYERKERNEL_H__ */ diff --git a/arm_compute/core/NEON/kernels/NEIm2ColKernel.h b/arm_compute/core/NEON/kernels/NEIm2ColKernel.h index f76521f770..689da857a7 100644 --- a/arm_compute/core/NEON/kernels/NEIm2ColKernel.h +++ b/arm_compute/core/NEON/kernels/NEIm2ColKernel.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -131,6 +131,7 @@ class NEIm2ColKernel : public INEKernel unsigned int _kernel_height; bool _has_bias; Size2D _dilation; + DataLayout _data_layout; }; } // namespace arm_compute #endif /*__ARM_COMPUTE_NEIM2COLKERNEL_H__ */ diff --git a/arm_compute/core/NEON/kernels/NEPoolingLayerKernel.h b/arm_compute/core/NEON/kernels/NEPoolingLayerKernel.h index 5f45a90cef..5b143250e9 100644 --- a/arm_compute/core/NEON/kernels/NEPoolingLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEPoolingLayerKernel.h @@ -194,6 +194,7 @@ class NEPoolingLayerKernel : public INEKernel const ITensor *_input; ITensor *_output; PoolingLayerInfo _pool_info; + DataLayout _data_layout; unsigned int _num_elems_processed_per_iteration; BorderSize _border_size; bool _is_square; diff --git a/arm_compute/core/NEON/kernels/NESpaceToDepthLayerKernel.h b/arm_compute/core/NEON/kernels/NESpaceToDepthLayerKernel.h index c9ecdd26f8..68bc1737c8 100644 --- a/arm_compute/core/NEON/kernels/NESpaceToDepthLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NESpaceToDepthLayerKernel.h @@ -75,6 +75,7 @@ class NESpaceToDepthLayerKernel : public INEKernel const ITensor *_input; /**< Source tensor */ ITensor *_output; /**< Destination tensor */ int32_t _block_shape; /**< Block shape */ + DataLayout _data_layout; /**< Data layout of the operation */ }; } // namespace arm_compute #endif /* __ARM_COMPUTE_NESPACETODEPTHLAYERKERNEL_H__ */ diff --git a/arm_compute/core/utils/misc/ShapeCalculator.h b/arm_compute/core/utils/misc/ShapeCalculator.h index 080d63f60d..c2afb63355 100644 --- a/arm_compute/core/utils/misc/ShapeCalculator.h +++ b/arm_compute/core/utils/misc/ShapeCalculator.h @@ -39,6 +39,42 @@ namespace misc { namespace shape_calculator { +/** Calculate the output tensor shape for the reduce mean operation + * + * @param[in] input Input tensor shape + * @param[in] reduction_axis Reduction axis + * @param[in] keep_dims Flag to indicate if dimensions are kept + * + * @return the calculated shape + */ +inline TensorShape calculate_reduce_mean_shape(ITensor *input, const Coordinates &reduction_axis, bool keep_dims) +{ + const int reduction_ops = reduction_axis.num_dimensions(); + Coordinates axis_local = reduction_axis; + const int input_dims = input->info()->num_dimensions(); + convert_negative_axis(axis_local, input_dims); + TensorShape out_shape = input->info()->tensor_shape(); + // Configure reshape layer if we want to drop the dimensions + if(!keep_dims) + { + // We have to sort the reduction axis vectors in order for remove_dimension + // to work properly + std::sort(axis_local.begin(), axis_local.begin() + reduction_ops); + for(int i = 0; i < reduction_ops; ++i) + { + out_shape.remove_dimension(axis_local[i] - i); + } + return out_shape; + } + else + { + for(int i = 0; i < reduction_ops; ++i) + { + out_shape.set(axis_local[i], 1); + } + return out_shape; + } +} /** Calculate the output tensor shape of a vector input given the convolution dimensions * * @param[in] input Input tensor shape diff --git a/arm_compute/runtime/CL/functions/CLReduceMean.h b/arm_compute/runtime/CL/functions/CLReduceMean.h index 168b56c6d9..2e97deba54 100644 --- a/arm_compute/runtime/CL/functions/CLReduceMean.h +++ b/arm_compute/runtime/CL/functions/CLReduceMean.h @@ -71,7 +71,7 @@ class CLReduceMean : public IFunction std::vector _reduction_kernels; std::vector _reduced_outs; CLReshapeLayer _reshape; - unsigned int _reduction_ops; + int _reduction_ops; bool _keep_dims; }; } // namespace arm_compute diff --git a/docs/00_introduction.dox b/docs/00_introduction.dox index 301e9755cc..62f1f2c479 100644 --- a/docs/00_introduction.dox +++ b/docs/00_introduction.dox @@ -236,6 +236,14 @@ If there is more than one release in a month then an extra sequential number is @subsection S2_2_changelog Changelog +v19.11.1 Public maintenance release + - Fix offset calculation in NEReductionOperationKernel. + - Fix data layout in NEScaleKernel for nhwc. + - Retain configuration step data layout to avoid side-effects. + - Perform sqrt in double domain for L2 pooling. + - Fix output shape calculation for Reduce Mean + - Restrict cases where optimized NEPadLayer runs. + v19.11 Public major release - Various bug fixes. - Various optimisations. @@ -302,6 +310,14 @@ v19.11 Public major release - Optimized CL generic depthwise convolution layer by introducing @ref CLDepthwiseConvolutionLayerNativeKernel. - Reduced memory consumption by implementing weights sharing. +v19.08.1 Public maintenance release + - Fix offset calculation in NEReductionOperationKernel. + - Fix data layout in NEScaleKernel for nhwc. + - Retain configuration step data layout to avoid side-effects. + - Perform sqrt in double domain for L2 pooling. + - Fix output shape calculation for Reduce Mean + - Fix broadcast CLPixelwiseMultiplication with 5D tensors + v19.08 Public major release - Various bug fixes. - Various optimisations. diff --git a/docs/Doxyfile b/docs/Doxyfile index 64bd966a04..24d2f26e83 100644 --- a/docs/Doxyfile +++ b/docs/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = "Compute Library" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 19.11 +PROJECT_NUMBER = 19.11.1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/documentation/00__introduction_8dox.xhtml b/documentation/00__introduction_8dox.xhtml index dc914044ea..2be4225be2 100644 --- a/documentation/00__introduction_8dox.xhtml +++ b/documentation/00__introduction_8dox.xhtml @@ -40,7 +40,7 @@ Compute Library
-  19.11 +  19.11.1
@@ -115,7 +115,7 @@ Namespaces