diff --git a/Android.bp b/Android.bp
index d6516fec72..159aebb516 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1025,11 +1025,14 @@ cc_library_static {
"src/runtime/experimental/operators/CpuActivation.cpp",
"src/runtime/experimental/operators/CpuAdd.cpp",
"src/runtime/experimental/operators/CpuDepthwiseConv2d.cpp",
+ "src/runtime/experimental/operators/CpuDequantize.cpp",
"src/runtime/experimental/operators/CpuElementwise.cpp",
+ "src/runtime/experimental/operators/CpuGEMMLowp.cpp",
"src/runtime/experimental/operators/CpuGemm.cpp",
"src/runtime/experimental/operators/CpuGemmConv2d.cpp",
"src/runtime/experimental/operators/CpuGemmDirectConv2d.cpp",
"src/runtime/experimental/operators/CpuMul.cpp",
+ "src/runtime/experimental/operators/CpuQuantize.cpp",
"src/runtime/experimental/operators/CpuSoftmax.cpp",
"src/runtime/experimental/operators/CpuSub.cpp",
"src/runtime/experimental/operators/CpuTranspose.cpp",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 321a83bfbb..5a31e61a76 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -28,7 +28,7 @@ cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
list(APPEND CMAKE_MESSAGE_CONTEXT ArmCompute)
project(
ArmCompute
- VERSION 42.0.0
+ VERSION 43.0.0
DESCRIPTION
"The Arm Compute Library is a collection of low-level machine learning functions optimized for Arm® Cortex®-A CPU and Arm® Mali™ GPU architectures"
LANGUAGES C CXX ASM)
diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt
new file mode 100644
index 0000000000..e45f145de6
--- /dev/null
+++ b/LICENSES/Apache-2.0.txt
@@ -0,0 +1,15 @@
+# SPDX-FileCopyrightText: 2008-2023 The Khronos Group Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/LICENSE b/LICENSES/MIT.txt
similarity index 82%
rename from LICENSE
rename to LICENSES/MIT.txt
index 781685ab31..ed43132fe0 100644
--- a/LICENSE
+++ b/LICENSES/MIT.txt
@@ -1,6 +1,11 @@
-MIT License
+# SPDX-FileCopyrightText: 2012-2017 Christian Rau
+# SPDX-FileCopyrightText: 2017 Leon Merten Lohse
+# SPDX-FileCopyrightText: 2017 Sean Barrett
+# SPDX-FileCopyrightText: 2017-2024 Arm Limited
+#
+# SPDX-License-Identifier: MIT
-Copyright (c) 2017-2024 Arm Limited
+MIT License
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 97ffe318c4..a5387961b4 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
-# Compute Library ![](https://img.shields.io/badge/latest_release-24.09-green)
+# Compute Library ![](https://img.shields.io/badge/latest_release-24.11-green)
The Compute Library is a collection of low-level machine learning functions optimized for Arm® Cortex®-A, Arm® Neoverse® and Arm® Mali™ GPUs architectures.
@@ -37,7 +37,7 @@ Key Features:
## Documentation
-[![Documentation](https://img.shields.io/badge/documentation-24.09-green)](https://artificial-intelligence.sites.arm.com/computelibrary/v24.09/index.xhtml)
+[![Documentation](https://img.shields.io/badge/documentation-24.11-green)](https://artificial-intelligence.sites.arm.com/computelibrary/v24.11/index.xhtml)
> Note: The documentation includes the reference API, changelogs, build guide, contribution guide, errata, etc.
@@ -50,22 +50,22 @@ All the binaries can be downloaded from [here](https://github.com/ARM-software/C
| Platform | Operating System | Release archive (Download) |
| -------------- | ---------------- | -------------------------- |
-| Raspberry Pi 4 | Linux® 32bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-armv7a-cpu-bin.tar.gz) |
-| Raspberry Pi 4 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-bin.tar.gz) |
-| Odroid N2 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-gpu-bin.tar.gz) |
-| HiKey960 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-gpu-bin.tar.gz) |
+| Raspberry Pi 4 | Linux® 32bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-armv7a-cpu-bin.tar.gz) |
+| Raspberry Pi 4 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-bin.tar.gz) |
+| Odroid N2 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-gpu-bin.tar.gz) |
+| HiKey960 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-gpu-bin.tar.gz) |
| Architecture | Operating System | Release archive (Download) |
| ------------ | ---------------- | -------------------------- |
-| armv7 | Linux® | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-armv7a-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-armv7a-cpu-gpu-bin.tar.gz) |
-| arm64-v8a | Android™ | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-android-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-android-aarch64-cpu-gpu-bin.tar.gz) |
-| arm64-v8a | Linux® | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-gpu-bin.tar.gz) |
+| armv7 | Linux® | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-armv7a-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-armv7a-cpu-gpu-bin.tar.gz) |
+| arm64-v8a | Android™ | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-android-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-android-aarch64-cpu-gpu-bin.tar.gz) |
+| arm64-v8a | Linux® | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-gpu-bin.tar.gz) |
-Please refer to the following link for more pre-built binaries: [![](https://img.shields.io/badge/v24.09-bins-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/tag/v24.09)
+Please refer to the following link for more pre-built binaries: [![](https://img.shields.io/badge/v24.11-bins-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/tag/v24.11)
Pre-build binaries are generated with the following security / good coding practices related flags:
> -Wall, -Wextra, -Wformat=2, -Winit-self, -Wstrict-overflow=2, -Wswitch-default, -Woverloaded-virtual, -Wformat-security, -Wctor-dtor-privacy, -Wsign-promo, -Weffc++, -pedantic, -fstack-protector-strong
@@ -107,13 +107,13 @@ Pre-build binaries are generated with the following security / good coding pract
## Experimental builds
-**⚠ Important** Bazel and CMake builds are experimental CPU only builds, please see the [documentation](https://artificial-intelligence.sites.arm.com/computelibrary/v24.09/how_to_build.xhtml) for more details.
+**⚠ Important** Bazel and CMake builds are experimental CPU only builds, please see the [documentation](https://artificial-intelligence.sites.arm.com/computelibrary/v24.11/how_to_build.xhtml) for more details.
## How to contribute
-Contributions to the Compute Library are more than welcome. If you are interested on contributing, please have a look at our [how to contribute guidelines](https://artificial-intelligence.sites.arm.com/computelibrary/v24.09/contribution_guidelines.xhtml).
+Contributions to the Compute Library are more than welcome. If you are interested on contributing, please have a look at our [how to contribute guidelines](https://artificial-intelligence.sites.arm.com/computelibrary/v24.11/contribution_guidelines.xhtml).
### Developer Certificate of Origin (DCO)
Before the Compute Library accepts your contribution, you need to certify its origin and give us your permission. To manage this process we use the Developer Certificate of Origin (DCO) V1.1 (https://developercertificate.org/)
diff --git a/SConscript b/SConscript
index 2aff67d8ca..784db8edcb 100644
--- a/SConscript
+++ b/SConscript
@@ -33,8 +33,8 @@ import codecs
import platform
import SCons
-VERSION = "v24.09"
-LIBRARY_VERSION_MAJOR = 42
+VERSION = "v24.11"
+LIBRARY_VERSION_MAJOR = 43
LIBRARY_VERSION_MINOR = 0
LIBRARY_VERSION_PATCH = 0
SONAME_VERSION = str(LIBRARY_VERSION_MAJOR) + "." + str(LIBRARY_VERSION_MINOR) + "." + str(LIBRARY_VERSION_PATCH)
@@ -627,12 +627,8 @@ custom_operators = []
custom_types = []
custom_layouts = []
-use_custom_ops = env['high_priority'] or env['build_config']
+use_custom_ops = env['build_config']
-if env['high_priority']:
- custom_operators = filelist['high_priority']
- custom_types = ['all']
- custom_layouts = ['all']
if env['build_config']:
custom_operators, custom_types, custom_layouts = read_build_config_json(env['build_config'])
diff --git a/SConstruct b/SConstruct
index c4bfef826d..8d7bd291e8 100644
--- a/SConstruct
+++ b/SConstruct
@@ -116,7 +116,6 @@ vars.AddVariables(
PathVariable("build_dir", "Specify sub-folder for the build", ".", PathVariable.PathAccept),
PathVariable("install_dir", "Specify sub-folder for the install", "", PathVariable.PathAccept),
BoolVariable("exceptions", "Enable/disable C++ exception support", True),
- BoolVariable("high_priority", "Generate a library containing only the high priority operators", False),
PathVariable("linker_script", "Use an external linker script", "", PathVariable.PathAccept),
PathVariable("external_tests_dir", """Add examples, benchmarks and tests to the tests suite from an external path. In order to use this option, the external tests directory must have the following structure:
EXTERNAL_TESTS_DIR:
@@ -519,21 +518,11 @@ if not GetOption("help"):
# Thus for backward compatibility, we include this flag only for NDK < r23
env.Append(CXXFLAGS = ['-no-integrated-as'])
-if env['high_priority'] and env['build_config']:
- print("The high priority library cannot be built in conjunction with a user-specified build configuration")
- Exit(1)
-
-if not env['high_priority'] and not env['build_config']:
- env.Append(CPPDEFINES = ['ARM_COMPUTE_GRAPH_ENABLED'])
-
data_types = []
data_layouts = []
# Set correct data types / layouts to build
-if env['high_priority']:
- data_types = ['all']
- data_layouts = ['all']
-elif env['build_config']:
+if env['build_config']:
data_types, data_layouts = read_build_config_json(env['build_config'])
else:
data_types = env['data_type_support']
@@ -613,7 +602,9 @@ else:
env.Append(CXXFLAGS = ['-O3'])
else:
# on windows we use clang-cl which does not support the option -O3
- env.Append(CXXFLAGS = ['-O2'])
+ if not version_at_least(compiler_ver, '17.0.0'):
+ # Disable optimizations in clang 17 or later because the compiler crashes with -O2
+ env.Append(CXXFLAGS = ['-O2'])
if env['asserts']:
env.Append(CPPDEFINES = ['ARM_COMPUTE_ASSERTS_ENABLED'])
@@ -653,7 +644,7 @@ Export('version_at_least')
SConscript('./SConscript', variant_dir=build_path, duplicate=0)
-if env['examples'] and (env['build_config'] or env['high_priority']):
+if env['examples'] and env['build_config']:
print("WARNING: Building examples for selected operators not supported. Use examples=0")
Return()
@@ -664,7 +655,7 @@ if env['examples'] and env['exceptions']:
SConscript('./examples/SConscript', variant_dir='%s/examples' % build_path, duplicate=0)
if env['exceptions']:
- if env['build_config'] or env['high_priority']:
+ if env['build_config']:
print("WARNING: Building tests for selected operators not supported")
Return()
if env['os'] == 'bare_metal' and env['arch'] == 'armv7a':
diff --git a/arm_compute/core/CPP/CPPTypes.h b/arm_compute/core/CPP/CPPTypes.h
index 7ee144e2cb..f4ad79e32c 100644
--- a/arm_compute/core/CPP/CPPTypes.h
+++ b/arm_compute/core/CPP/CPPTypes.h
@@ -26,6 +26,7 @@
#include "arm_compute/core/Error.h"
+#include
#include
namespace arm_compute
@@ -180,7 +181,12 @@ class CPUInfo final
*
* @return Vector length if sme2 is enabled, otherwise returns 0.
*/
- uint64_t get_sme2_vector_length() const;
+ uint64_t get_sme2_vector_length_in_bytes() const;
+ /** Return the vector length in bits for sme2
+ *
+ * @return Vector length if sme2 is enabled, otherwise returns 0.
+ */
+ uint64_t get_sme2_vector_length_in_bits() const;
private:
struct Impl;
diff --git a/arm_compute/core/QuantizationInfo.h b/arm_compute/core/QuantizationInfo.h
index aecba3712e..e8cc98f9e4 100644
--- a/arm_compute/core/QuantizationInfo.h
+++ b/arm_compute/core/QuantizationInfo.h
@@ -63,6 +63,31 @@ struct UniformQuantizationInfo
int32_t offset;
};
+/** Quantization info when assuming per layer quantization */
+struct UniformRequantizationInfo
+{
+ /** Default constructor */
+ UniformRequantizationInfo() : scale(0.f), offset(0.f)
+ {
+ }
+ /** Constructor
+ *
+ * @param[in] scale Quantization scale
+ * @param[in] offset Quantization offset
+ */
+ UniformRequantizationInfo(float scale, float offset) : scale(scale), offset(offset)
+ {
+ }
+ /** Checks if the scale and offset are both zero */
+ bool empty() const
+ {
+ return (scale == 0) && (offset == 0);
+ }
+
+ float scale;
+ float offset;
+};
+
/** Quantization information */
class QuantizationInfo
{
@@ -232,6 +257,13 @@ struct Qasymm8QuantizationHelper
return static_cast(arm_compute::utility::clamp(quantized));
}
+ static inline QUANTIZED_TYPE quantize(float value, const UniformRequantizationInfo &qinfo)
+ {
+ ARM_COMPUTE_ERROR_ON(qinfo.scale == 0);
+ const int quantized = support::cpp11::lround(value / qinfo.scale + qinfo.offset);
+ return static_cast(arm_compute::utility::clamp(quantized));
+ }
+
/** Quantize a value given a 8-bit asymmetric quantization scheme using a specific rounding policy
*
* @param[in] value Value to quantize
@@ -253,6 +285,21 @@ struct Qasymm8QuantizationHelper
return static_cast(arm_compute::utility::clamp(quantized));
}
+ static inline QUANTIZED_TYPE
+ quantize(float value, const UniformRequantizationInfo &qinfo, RoundingPolicy rounding_policy)
+ {
+ if (rounding_policy == RoundingPolicy::TO_NEAREST_UP)
+ {
+ return quantize(value, qinfo);
+ }
+
+ ARM_COMPUTE_ERROR_ON(qinfo.scale == 0);
+
+ // We round after adding the offset, because the offset is also float
+ const int quantized = arm_compute::round(value / qinfo.scale + qinfo.offset, rounding_policy);
+ return static_cast(arm_compute::utility::clamp(quantized));
+ }
+
/** Quantize a value given a 8-bit asymmetric quantization scheme
*
* @param[in] value Value to quantize
@@ -588,7 +635,11 @@ inline float dequantize_s32(int32_t value, const QuantizationInfo &qinfo)
return dequantize_s32(value, qinfo.uniform());
}
-/*
+/** Compute the requantization offset and scale
+ *
+ * @deprecated because reequantization using integer offsets creates rounding issues.
+ * Please use @ref arm_compute::compute_requantization_scale_float_offset() instead.
+ *
* In case of requantization of a quantized input tensor to an output tensor with another quantization
* instead of applying dequantization and then a quantization functions, we just compute new scale and
* offset.
@@ -628,9 +679,32 @@ inline UniformQuantizationInfo compute_requantization_scale_offset(const Uniform
// In order to minimize flooring we convert the offset to a float,
// then compute the new offset in the float domain,
// finally we convert it back as int32_t
- offset_to_apply -= static_cast(static_cast(uqinfo_in.offset) * uqinfo_in.scale / uqinfo_out.scale);
+
+#ifdef __aarch64__
+ constexpr RoundingPolicy rounding_policy = RoundingPolicy::TO_NEAREST_EVEN;
+#else //__aarch64__
+ constexpr RoundingPolicy rounding_policy = RoundingPolicy::TO_NEAREST_UP;
+#endif //__aarch64__
+
+ offset_to_apply -=
+ arm_compute::round(static_cast(uqinfo_in.offset) * uqinfo_in.scale / uqinfo_out.scale, rounding_policy);
return UniformQuantizationInfo(scale_to_apply, offset_to_apply);
}
+/** Similar to @ref arm_compute::compute_requantization_scale_offset()
+ * but returning offset as float instead of integer
+ */
+inline UniformRequantizationInfo compute_requantization_scale_float_offset(const UniformQuantizationInfo &uqinfo_in,
+ const UniformQuantizationInfo &uqinfo_out)
+{
+ float scale_to_apply = uqinfo_out.scale;
+ float offset_to_apply = static_cast(uqinfo_out.offset);
+
+ scale_to_apply /= uqinfo_in.scale;
+ offset_to_apply -= static_cast(uqinfo_in.offset) * uqinfo_in.scale / uqinfo_out.scale;
+
+ return UniformRequantizationInfo(scale_to_apply, offset_to_apply);
+}
+
} // namespace arm_compute
#endif // ACL_ARM_COMPUTE_CORE_QUANTIZATIONINFO_H
diff --git a/arm_compute/core/TensorInfo.h b/arm_compute/core/TensorInfo.h
index 6c93ff0c39..e4c9cbe879 100644
--- a/arm_compute/core/TensorInfo.h
+++ b/arm_compute/core/TensorInfo.h
@@ -327,6 +327,9 @@ class TensorInfo final : public ITensorInfo
private:
/** Calculates strides, offset and total size resulting from the specified padding around the XY plane.
+ *
+ * @note When interpreting the required_strides in the return value, only the values up to the corresponding dimension in the tensor is
+ * valid. For example, 1D tensor should only refer to 1D in required_strides, 2D tensor up to 2D in required_strides, and so on.
*
* @param[in] padding Padding around the XY plane in elements.
*/
diff --git a/arm_compute/core/utils/DataTypeUtils.h b/arm_compute/core/utils/DataTypeUtils.h
index b19a3dd1e7..86adb761ac 100644
--- a/arm_compute/core/utils/DataTypeUtils.h
+++ b/arm_compute/core/utils/DataTypeUtils.h
@@ -69,6 +69,35 @@ inline size_t data_size_from_type(DataType data_type)
}
}
+/** Get underlying data type
+ *
+ * @param[in] data_type Input data type
+ *
+ * @return the underlying data type
+ */
+inline constexpr DataType get_underlying_data_type(DataType data_type)
+{
+ switch (data_type)
+ {
+ case DataType::U8:
+ case DataType::QASYMM8:
+ return DataType::U8;
+ case DataType::S8:
+ case DataType::QSYMM8:
+ case DataType::QASYMM8_SIGNED:
+ case DataType::QSYMM8_PER_CHANNEL:
+ return DataType::S8;
+ case DataType::U16:
+ case DataType::QASYMM16:
+ return DataType::U16;
+ case DataType::S16:
+ case DataType::QSYMM16:
+ return DataType::S16;
+ default:
+ return data_type;
+ }
+}
+
/** The size in bytes of the data type
*
* @param[in] dt Input data type
diff --git a/arm_compute/function_info/ActivationLayerInfo.h b/arm_compute/function_info/ActivationLayerInfo.h
index 83b12d572e..575c1498ac 100644
--- a/arm_compute/function_info/ActivationLayerInfo.h
+++ b/arm_compute/function_info/ActivationLayerInfo.h
@@ -65,6 +65,7 @@ class ActivationLayerInfo
/** Lookup table */
#ifdef __aarch64__
+ // TODO (COMPMID-7511): delegate to LUTManager
using LookupTable256 = std::array;
using LookupTable65536 = std::array;
#endif // __aarch64__
diff --git a/arm_compute/runtime/CL/functions/CLCast.h b/arm_compute/runtime/CL/functions/CLCast.h
index 0d8f53fe02..57c6408ef4 100644
--- a/arm_compute/runtime/CL/functions/CLCast.h
+++ b/arm_compute/runtime/CL/functions/CLCast.h
@@ -21,6 +21,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
+
#ifndef ACL_ARM_COMPUTE_RUNTIME_CL_FUNCTIONS_CLCAST_H
#define ACL_ARM_COMPUTE_RUNTIME_CL_FUNCTIONS_CLCAST_H
@@ -35,7 +36,7 @@ class CLCompileContext;
class ICLTensor;
class ITensorInfo;
-/** Basic function to run opencl::kernels::ClCastKernel */
+/** Basic function to run type cast operation */
class CLCast : public IFunction
{
public:
@@ -52,28 +53,36 @@ class CLCast : public IFunction
/** Default move assignment operator */
CLCast &operator=(CLCast &&);
/** Initialize the function's source, destination
+ *
+ * @note When casting from/to quantized types the scale and zeroPoint are ignored
*
* Valid data layouts:
* - All
*
* Valid data type configurations:
- * |src |dst |
- * |:--------------|:--------------------------------------|
- * |U8 | S8, U16, S16, U32, S32, F16, F32 |
- * |S8 | U8, U16, S16, U32, S32, F16, F32 |
- * |U16 | U8, S8, S16, U32, S32, F16, F32 |
- * |S16 | U8, S8, U16, U32, S32, F16, F32 |
- * |U32 | U8, S8, U16, S16, S32, F16, F32 |
- * |S32 | U8, S8, U16, S16, U32, F16, F32 |
- * |U64 | U8, S8, U16, S16, U32, S32, F16, F32 |
- * |S64 | U8, S8, U16, S16, U32, S32, F16, F32 |
- * |F16 | U8, S8, U16, S16, S32, U32, F32 |
- * |F32 | U8, S8, U16, S16, S32, U32, F16 |
+ * |src |dst |
+ * |:------------------|:-----------------------------------------------------------------------------------------------|
+ * |U8 | S8, U16, S16, U32, S32, F16, F32, QASYMM8_SIGNED, QSYMM8, QSYMM8_PER_CHANNEL, 16-bit Quantized |
+ * |S8 | U8, U16, S16, U32, S32, F16, F32, QASYMM8, 16-bit Quantized |
+ * |U16 | U8, S8, S16, U32, S32, F16, F32, 8-bit Quantized, QSYMM16 |
+ * |S16 | U8, S8, U16, U32, S32, F16, F32, 8-bit Quantized, QASYMM16 |
+ * |U32 | U8, S8, U16, S16, S32, F16, F32, All Quantized |
+ * |S32 | U8, S8, U16, S16, U32, F16, F32, All Quantized |
+ * |U64 | U8, S8, U16, S16, U32, S32, F16, F32, All Quantized |
+ * |S64 | U8, S8, U16, S16, U32, S32, F16, F32, All Quantized |
+ * |F16 | U8, S8, U16, S16, S32, U32, F32, All Quantized |
+ * |F32 | U8, S8, U16, S16, S32, U32, F16, All Quantized |
+ * |QASYMM8 | S8, U16, S16, U32, S32, F16, F32, QASYMM8_SIGNED, QSYMM8, QSYMM8_PER_CHANNEL, 16-bit Quantized |
+ * |QASYMM8_SIGNED | U8, U16, S16, U32, S32, F16, F32, QASYMM8, 16-bit Quantized |
+ * |QSYMM8 | U8, U16, S16, U32, S32, F16, F32, QASYMM8, 16-bit Quantized |
+ * |QSYMM8_PER_CHANNEL | U8, U16, S16, U32, S32, F16, F32, 16-bit Quantized |
+ * |QASYMM16 | U8, S8, U16, U32, S32, F16, F32, 8-bit Quantized, QSYMM16 |
+ * |QSYMM16 | U8, S8, U16, U32, S32, F16, F32, 8-bit Quantized, QASYMM16 |
*
* Input data type must be different than output data type.
*
- * @param[in] input The input tensor to convert. Data types supported: U8/S8/U16/S16/U32/S32/U64/S64/F16/F32.
- * @param[out] output The output tensor. Data types supported: U8/S8/U16/S16/U32/S32/F16/F32.
+ * @param[in] input The input tensor to convert.
+ * @param[out] output The output tensor.
* @param[in] policy Conversion policy.
*/
void configure(const ICLTensor *input, ICLTensor *output, ConvertPolicy policy);
@@ -82,14 +91,11 @@ class CLCast : public IFunction
configure(const CLCompileContext &compile_context, const ICLTensor *input, ICLTensor *output, ConvertPolicy policy);
/** Static function to check if given info will lead to a valid configuration of @ref CLCast
*
- * @param[in] input Source tensor info. Data types supported: U8/S8/U16/S16/U32/S32/U64/S64/F16/F32.
- * @param[in] output Destination tensor info. Data type supported: U8/S8/U16/S16/U32/S32/F16/F32.
- * @param[in] policy Conversion policy.
+ * Similar to @ref CLCast::configure()
*
* @return a status
*/
static Status validate(const ITensorInfo *input, const ITensorInfo *output, ConvertPolicy policy);
-
// Inherited methods overridden:
void run() override;
diff --git a/arm_compute/runtime/CPP/functions/CPPBoxWithNonMaximaSuppressionLimit.h b/arm_compute/runtime/CPP/functions/CPPBoxWithNonMaximaSuppressionLimit.h
index c3ef2932f1..5025b5eaf4 100644
--- a/arm_compute/runtime/CPP/functions/CPPBoxWithNonMaximaSuppressionLimit.h
+++ b/arm_compute/runtime/CPP/functions/CPPBoxWithNonMaximaSuppressionLimit.h
@@ -29,6 +29,7 @@
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/IMemoryManager.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/Tensor.h"
namespace arm_compute
@@ -40,7 +41,10 @@ class CPPBoxWithNonMaximaSuppressionLimit : public IFunction
{
public:
/** Constructor */
- CPPBoxWithNonMaximaSuppressionLimit(std::shared_ptr memory_manager = nullptr);
+ CPPBoxWithNonMaximaSuppressionLimit(std::shared_ptr memory_manager);
+ CPPBoxWithNonMaximaSuppressionLimit() : CPPBoxWithNonMaximaSuppressionLimit(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
CPPBoxWithNonMaximaSuppressionLimit(const CPPBoxWithNonMaximaSuppressionLimit &) = delete;
/** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/runtime/MemoryGroup.h b/arm_compute/runtime/MemoryGroup.h
index 93ea3d2c72..35da650857 100644
--- a/arm_compute/runtime/MemoryGroup.h
+++ b/arm_compute/runtime/MemoryGroup.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2020 Arm Limited.
+ * Copyright (c) 2017-2020, 2024 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -21,14 +21,16 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-#ifndef ARM_COMPUTE_MEMORYGROUP_H
-#define ARM_COMPUTE_MEMORYGROUP_H
+#ifndef ACL_ARM_COMPUTE_RUNTIME_MEMORYGROUP_H
+#define ACL_ARM_COMPUTE_RUNTIME_MEMORYGROUP_H
#include "arm_compute/core/Error.h"
#include "arm_compute/core/utils/misc/Macros.h"
+#include "arm_compute/runtime/Allocator.h"
#include "arm_compute/runtime/IMemoryGroup.h"
#include "arm_compute/runtime/IMemoryManager.h"
#include "arm_compute/runtime/IMemoryPool.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include
#include
@@ -66,10 +68,11 @@ class MemoryGroup final : public IMemoryGroup
std::shared_ptr _memory_manager; /**< Memory manager to be used by the group */
IMemoryPool *_pool; /**< Memory pool that the group is scheduled with */
MemoryMappings _mappings; /**< Memory mappings of the group */
+ bool _auto_clear; /**< Whether the memory manager will be auto-cleared on release */
};
inline MemoryGroup::MemoryGroup(std::shared_ptr memory_manager) noexcept
- : _memory_manager(memory_manager), _pool(nullptr), _mappings()
+ : _memory_manager(memory_manager), _pool(nullptr), _mappings(), _auto_clear(false)
{
}
@@ -104,6 +107,17 @@ inline void MemoryGroup::acquire()
if (!_mappings.empty())
{
ARM_COMPUTE_ERROR_ON(!_memory_manager->pool_manager());
+ // If the caller has not populated the underlying memory manager,
+ // do it here. Also set flag to auto-clear the memory manager on release.
+ // This is needed when using default memory managers that were not set up
+ // by the user.
+ if (_memory_manager->pool_manager()->num_pools() == 0)
+ {
+ Allocator alloc{};
+ _memory_manager->populate(alloc, 1);
+ _auto_clear = true;
+ }
+
_pool = _memory_manager->pool_manager()->lock_pool();
_pool->acquire(_mappings);
}
@@ -118,6 +132,12 @@ inline void MemoryGroup::release()
_pool->release(_mappings);
_memory_manager->pool_manager()->unlock_pool(_pool);
_pool = nullptr;
+
+ if (_auto_clear)
+ {
+ _memory_manager->clear();
+ _auto_clear = false;
+ }
}
}
@@ -126,4 +146,4 @@ inline MemoryMappings &MemoryGroup::mappings()
return _mappings;
}
} // namespace arm_compute
-#endif /*ARM_COMPUTE_MEMORYGROUP_H */
+#endif // ACL_ARM_COMPUTE_RUNTIME_MEMORYGROUP_H
diff --git a/arm_compute/runtime/MemoryManagerOnDemand.h b/arm_compute/runtime/MemoryManagerOnDemand.h
index 7c31fe7f5a..0192f0b641 100644
--- a/arm_compute/runtime/MemoryManagerOnDemand.h
+++ b/arm_compute/runtime/MemoryManagerOnDemand.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2019 Arm Limited.
+ * Copyright (c) 2017-2019, 2024 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -21,8 +21,8 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-#ifndef ARM_COMPUTE_MEMORY_MANAGER_ON_DEMAND_H
-#define ARM_COMPUTE_MEMORY_MANAGER_ON_DEMAND_H
+#ifndef ACL_ARM_COMPUTE_RUNTIME_MEMORYMANAGERONDEMAND_H
+#define ACL_ARM_COMPUTE_RUNTIME_MEMORYMANAGERONDEMAND_H
#include "arm_compute/runtime/ILifetimeManager.h"
#include "arm_compute/runtime/IMemoryGroup.h"
@@ -49,6 +49,8 @@ class MemoryManagerOnDemand : public IMemoryManager
/** Allow instances of this class to be moved */
MemoryManagerOnDemand &operator=(MemoryManagerOnDemand &&) = default;
+ static std::shared_ptr make_default();
+
// Inherited methods overridden:
ILifetimeManager *lifetime_manager() override;
IPoolManager *pool_manager() override;
@@ -60,4 +62,4 @@ class MemoryManagerOnDemand : public IMemoryManager
std::shared_ptr _pool_mgr; /**< Memory pool manager */
};
} // namespace arm_compute
-#endif /*ARM_COMPUTE_MEMORY_MANAGER_ON_DEMAND_H */
+#endif // ACL_ARM_COMPUTE_RUNTIME_MEMORYMANAGERONDEMAND_H
diff --git a/arm_compute/runtime/MemoryRegion.h b/arm_compute/runtime/MemoryRegion.h
index f8a4898281..4922edc2e1 100644
--- a/arm_compute/runtime/MemoryRegion.h
+++ b/arm_compute/runtime/MemoryRegion.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2020 Arm Limited.
+ * Copyright (c) 2018-2020, 2024 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -21,13 +21,14 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-#ifndef ARM_COMPUTE_RUNTIME_MEMORY_REGION_H
-#define ARM_COMPUTE_RUNTIME_MEMORY_REGION_H
+#ifndef ACL_ARM_COMPUTE_RUNTIME_MEMORYREGION_H
+#define ACL_ARM_COMPUTE_RUNTIME_MEMORYREGION_H
#include "arm_compute/core/Error.h"
#include "arm_compute/runtime/IMemoryRegion.h"
#include
+#include
namespace arm_compute
{
@@ -100,4 +101,4 @@ class MemoryRegion final : public IMemoryRegion
void *_ptr;
};
} // namespace arm_compute
-#endif /* ARM_COMPUTE_RUNTIME_MEMORY_REGION_H */
+#endif // ACL_ARM_COMPUTE_RUNTIME_MEMORYREGION_H
diff --git a/arm_compute/runtime/NEON/functions/NEArgMinMaxLayer.h b/arm_compute/runtime/NEON/functions/NEArgMinMaxLayer.h
index d58f7dda3e..88cedc6724 100644
--- a/arm_compute/runtime/NEON/functions/NEArgMinMaxLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEArgMinMaxLayer.h
@@ -26,6 +26,7 @@
#include "arm_compute/core/Types.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/INESimpleFunction.h"
namespace arm_compute
@@ -48,7 +49,10 @@ class NEArgMinMaxLayer : public IFunction
{
public:
/** Constructor */
- NEArgMinMaxLayer(std::shared_ptr memory_manager = nullptr);
+ NEArgMinMaxLayer(std::shared_ptr memory_manager);
+ NEArgMinMaxLayer() : NEArgMinMaxLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEArgMinMaxLayer(const NEArgMinMaxLayer &) = delete;
/** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/runtime/NEON/functions/NEConvolutionLayer.h b/arm_compute/runtime/NEON/functions/NEConvolutionLayer.h
index a6c0cfa7fa..bd049df4af 100644
--- a/arm_compute/runtime/NEON/functions/NEConvolutionLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEConvolutionLayer.h
@@ -29,6 +29,7 @@
#include "arm_compute/function_info/ActivationLayerInfo.h"
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include
@@ -73,7 +74,10 @@ class NEConvolutionLayer : public IFunction
{
public:
/** Constructor */
- NEConvolutionLayer(std::shared_ptr memory_manager = nullptr);
+ NEConvolutionLayer(std::shared_ptr memory_manager);
+ NEConvolutionLayer() : NEConvolutionLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEConvolutionLayer(const NEConvolutionLayer &) = delete;
/** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/runtime/NEON/functions/NEDeconvolutionLayer.h b/arm_compute/runtime/NEON/functions/NEDeconvolutionLayer.h
index aabe42f928..0c6bb1d2bf 100644
--- a/arm_compute/runtime/NEON/functions/NEDeconvolutionLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEDeconvolutionLayer.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2021, 2023 Arm Limited.
+ * Copyright (c) 2017-2021, 2023-2024 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -21,14 +21,15 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-#ifndef ARM_COMPUTE_NEDECONVOLUTIONLAYER_H
-#define ARM_COMPUTE_NEDECONVOLUTIONLAYER_H
+#ifndef ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NEDECONVOLUTIONLAYER_H
+#define ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NEDECONVOLUTIONLAYER_H
#include "arm_compute/core/Types.h"
#include "arm_compute/runtime/CPP/functions/CPPUpsample.h"
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/IMemoryManager.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NEConvolutionLayer.h"
#include "arm_compute/runtime/NEON/functions/NEDirectConvolutionLayer.h"
#include "arm_compute/runtime/NEON/functions/NEReverse.h"
@@ -74,7 +75,10 @@ class NEDeconvolutionLayer : public IFunction
{
public:
/** Constructor */
- NEDeconvolutionLayer(std::shared_ptr memory_manager = nullptr);
+ NEDeconvolutionLayer(std::shared_ptr memory_manager);
+ NEDeconvolutionLayer() : NEDeconvolutionLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEDeconvolutionLayer(const NEDeconvolutionLayer &) = delete;
/** Default move constructor */
@@ -166,4 +170,4 @@ class NEDeconvolutionLayer : public IFunction
bool _do_upsampling;
};
} // namespace arm_compute
-#endif /* ARM_COMPUTE_NEDECONVOLUTIONLAYER_H */
+#endif // ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NEDECONVOLUTIONLAYER_H
diff --git a/arm_compute/runtime/NEON/functions/NEDepthwiseConvolutionLayer.h b/arm_compute/runtime/NEON/functions/NEDepthwiseConvolutionLayer.h
index 1b0eb8fc3e..76250a6aee 100644
--- a/arm_compute/runtime/NEON/functions/NEDepthwiseConvolutionLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEDepthwiseConvolutionLayer.h
@@ -26,6 +26,7 @@
#include "arm_compute/runtime/IMemoryManager.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NEActivationLayer.h"
#include "arm_compute/runtime/NEON/functions/NEPermute.h"
@@ -43,7 +44,10 @@ class NEDepthwiseConvolutionLayer : public IFunction
{
public:
/** Default constructor */
- NEDepthwiseConvolutionLayer(std::shared_ptr memory_manager = nullptr);
+ NEDepthwiseConvolutionLayer(std::shared_ptr memory_manager);
+ NEDepthwiseConvolutionLayer() : NEDepthwiseConvolutionLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEDepthwiseConvolutionLayer(const NEDepthwiseConvolutionLayer &) = delete;
/** Default move constructor */
diff --git a/arm_compute/runtime/NEON/functions/NEDetectionPostProcessLayer.h b/arm_compute/runtime/NEON/functions/NEDetectionPostProcessLayer.h
index 7a94833d10..b789cc0579 100644
--- a/arm_compute/runtime/NEON/functions/NEDetectionPostProcessLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEDetectionPostProcessLayer.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019-2021 Arm Limited.
+ * Copyright (c) 2019-2021, 2024 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -21,13 +21,14 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-#ifndef ARM_COMPUTE_NE_DETECTION_POSTPROCESS_H
-#define ARM_COMPUTE_NE_DETECTION_POSTPROCESS_H
+#ifndef ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NEDETECTIONPOSTPROCESSLAYER_H
+#define ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NEDETECTIONPOSTPROCESSLAYER_H
#include "arm_compute/core/Types.h"
#include "arm_compute/runtime/CPP/functions/CPPDetectionPostProcessLayer.h"
#include "arm_compute/runtime/IMemoryManager.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NEDequantizationLayer.h"
#include "arm_compute/runtime/NEON/INESimpleFunction.h"
#include "arm_compute/runtime/Tensor.h"
@@ -47,7 +48,10 @@ class NEDetectionPostProcessLayer : public IFunction
{
public:
/** Constructor */
- NEDetectionPostProcessLayer(std::shared_ptr memory_manager = nullptr);
+ NEDetectionPostProcessLayer(std::shared_ptr memory_manager);
+ NEDetectionPostProcessLayer() : NEDetectionPostProcessLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEDetectionPostProcessLayer(const NEDetectionPostProcessLayer &) = delete;
/** Prevent instances of this class from being copied (As this class contains pointers) */
@@ -119,4 +123,4 @@ class NEDetectionPostProcessLayer : public IFunction
bool _run_dequantize;
};
} // namespace arm_compute
-#endif /* ARM_COMPUTE_NE_DETECTION_POSTPROCESS_H */
+#endif // ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NEDETECTIONPOSTPROCESSLAYER_H
diff --git a/arm_compute/runtime/NEON/functions/NEFFT1D.h b/arm_compute/runtime/NEON/functions/NEFFT1D.h
index a8d930d9ba..ce554d494e 100644
--- a/arm_compute/runtime/NEON/functions/NEFFT1D.h
+++ b/arm_compute/runtime/NEON/functions/NEFFT1D.h
@@ -27,6 +27,7 @@
#include "arm_compute/runtime/FunctionDescriptors.h"
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/Tensor.h"
#include
@@ -49,7 +50,10 @@ class NEFFT1D : public IFunction
{
public:
/** Default Constructor */
- NEFFT1D(std::shared_ptr memory_manager = nullptr);
+ NEFFT1D(std::shared_ptr memory_manager);
+ NEFFT1D() : NEFFT1D(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEFFT1D(const NEFFT1D &) = delete;
/** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/runtime/NEON/functions/NEFFTConvolutionLayer.h b/arm_compute/runtime/NEON/functions/NEFFTConvolutionLayer.h
index 84bfe6b02f..2b98562fe8 100644
--- a/arm_compute/runtime/NEON/functions/NEFFTConvolutionLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEFFTConvolutionLayer.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019-2021 Arm Limited.
+ * Copyright (c) 2019-2021, 2024 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -21,11 +21,12 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-#ifndef ARM_COMPUTE_NEFFTCONVOLUTIONLAYER_H
-#define ARM_COMPUTE_NEFFTCONVOLUTIONLAYER_H
+#ifndef ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NEFFTCONVOLUTIONLAYER_H
+#define ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NEFFTCONVOLUTIONLAYER_H
#include "arm_compute/core/Types.h"
#include "arm_compute/runtime/IFunction.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NEActivationLayer.h"
#include "arm_compute/runtime/NEON/functions/NEArithmeticAddition.h"
#include "arm_compute/runtime/NEON/functions/NEFFT2D.h"
@@ -59,7 +60,10 @@ class NEFFTConvolutionLayer : public IFunction
{
public:
/** Default constructor */
- NEFFTConvolutionLayer(std::shared_ptr memory_manager = nullptr);
+ NEFFTConvolutionLayer(std::shared_ptr memory_manager);
+ NEFFTConvolutionLayer() : NEFFTConvolutionLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEFFTConvolutionLayer(const NEFFTConvolutionLayer &) = delete;
/** Prevent instances of this class from being moved (As this class contains non movable objects) */
@@ -172,4 +176,4 @@ class NEFFTConvolutionLayer : public IFunction
bool _is_prepared;
};
} // namespace arm_compute
-#endif /* ARM_COMPUTE_NEFFTCONVOLUTIONLAYER_H */
+#endif // ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NEFFTCONVOLUTIONLAYER_H
diff --git a/arm_compute/runtime/NEON/functions/NEFullyConnectedLayer.h b/arm_compute/runtime/NEON/functions/NEFullyConnectedLayer.h
index a0c03af351..78d27c7376 100644
--- a/arm_compute/runtime/NEON/functions/NEFullyConnectedLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEFullyConnectedLayer.h
@@ -28,6 +28,7 @@
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/IMemoryManager.h"
#include "arm_compute/runtime/IWeightsManager.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NETranspose.h"
#include "arm_compute/runtime/Tensor.h"
@@ -87,8 +88,10 @@ class NEFullyConnectedLayer : public IFunction
{
public:
/** Constructor */
- NEFullyConnectedLayer(std::shared_ptr memory_manager = nullptr,
- IWeightsManager *weights_manager = nullptr);
+ NEFullyConnectedLayer(std::shared_ptr memory_manager, IWeightsManager *weights_manager = nullptr);
+ NEFullyConnectedLayer() : NEFullyConnectedLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEFullyConnectedLayer(const NEFullyConnectedLayer &) = delete;
/** Prevent instances of this class from being moved (As this class contains pointers) */
diff --git a/arm_compute/runtime/NEON/functions/NEGEMM.h b/arm_compute/runtime/NEON/functions/NEGEMM.h
index 70493edd69..1f5e51e598 100644
--- a/arm_compute/runtime/NEON/functions/NEGEMM.h
+++ b/arm_compute/runtime/NEON/functions/NEGEMM.h
@@ -28,6 +28,7 @@
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/IMemoryManager.h"
#include "arm_compute/runtime/IWeightsManager.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include
@@ -41,7 +42,10 @@ class NEGEMM : public IFunction
{
public:
/** Constructor */
- NEGEMM(std::shared_ptr memory_manager = nullptr, IWeightsManager *weights_manager = nullptr);
+ NEGEMM(std::shared_ptr memory_manager, IWeightsManager *weights_manager = nullptr);
+ NEGEMM() : NEGEMM(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEGEMM(const NEGEMM &) = delete;
/** Default move constructor */
diff --git a/arm_compute/runtime/NEON/functions/NEGEMMConv2d.h b/arm_compute/runtime/NEON/functions/NEGEMMConv2d.h
index a4e2fce7c1..54def64d18 100644
--- a/arm_compute/runtime/NEON/functions/NEGEMMConv2d.h
+++ b/arm_compute/runtime/NEON/functions/NEGEMMConv2d.h
@@ -27,6 +27,7 @@
#include "arm_compute/runtime/FunctionDescriptors.h"
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/IMemoryManager.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include
@@ -50,7 +51,10 @@ class NEGEMMConv2d : public IFunction
{
public:
/** Constructor */
- NEGEMMConv2d(const std::shared_ptr &memory_manager = nullptr);
+ NEGEMMConv2d(const std::shared_ptr &memory_manager);
+ NEGEMMConv2d() : NEGEMMConv2d(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEGEMMConv2d(const NEGEMMConv2d &) = delete;
/** Default move constructor */
diff --git a/arm_compute/runtime/NEON/functions/NEGEMMConvolutionLayer.h b/arm_compute/runtime/NEON/functions/NEGEMMConvolutionLayer.h
index 7baa940f82..d37d49b48c 100644
--- a/arm_compute/runtime/NEON/functions/NEGEMMConvolutionLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEGEMMConvolutionLayer.h
@@ -30,6 +30,7 @@
#include "arm_compute/runtime/IMemoryManager.h"
#include "arm_compute/runtime/IWeightsManager.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include
@@ -47,8 +48,11 @@ class NEGEMMConvolutionLayer : public IFunction
{
public:
/** Constructor */
- NEGEMMConvolutionLayer(const std::shared_ptr &memory_manager = nullptr,
+ NEGEMMConvolutionLayer(const std::shared_ptr &memory_manager,
IWeightsManager *weights_manager = nullptr);
+ NEGEMMConvolutionLayer() : NEGEMMConvolutionLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEGEMMConvolutionLayer(const NEGEMMConvolutionLayer &) = delete;
/** Prevent instances of this class from being moved (As this class contains non movable objects) */
diff --git a/arm_compute/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.h b/arm_compute/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.h
index c2d3089027..81c6115791 100644
--- a/arm_compute/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.h
+++ b/arm_compute/runtime/NEON/functions/NEGEMMLowpMatrixMultiplyCore.h
@@ -29,6 +29,7 @@
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/IMemoryManager.h"
#include "arm_compute/runtime/IWeightsManager.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include
@@ -47,8 +48,11 @@ class NEGEMMLowpMatrixMultiplyCore : public IFunction
{
public:
/** Constructor */
- NEGEMMLowpMatrixMultiplyCore(std::shared_ptr memory_manager = nullptr,
+ NEGEMMLowpMatrixMultiplyCore(std::shared_ptr memory_manager,
IWeightsManager *weights_manager = nullptr);
+ NEGEMMLowpMatrixMultiplyCore() : NEGEMMLowpMatrixMultiplyCore(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEGEMMLowpMatrixMultiplyCore(const NEGEMMLowpMatrixMultiplyCore &) = delete;
/** Default move constructor */
diff --git a/arm_compute/runtime/NEON/functions/NEGenerateProposalsLayer.h b/arm_compute/runtime/NEON/functions/NEGenerateProposalsLayer.h
index 0032d0c26d..4ee3cf9f3a 100644
--- a/arm_compute/runtime/NEON/functions/NEGenerateProposalsLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEGenerateProposalsLayer.h
@@ -29,6 +29,7 @@
#include "arm_compute/runtime/CPP/functions/CPPBoxWithNonMaximaSuppressionLimit.h"
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NEBoundingBoxTransform.h"
#include "arm_compute/runtime/NEON/functions/NEDequantizationLayer.h"
#include "arm_compute/runtime/NEON/functions/NEPadLayer.h"
@@ -62,7 +63,10 @@ class NEGenerateProposalsLayer : public IFunction
*
* @param[in] memory_manager (Optional) Memory manager.
*/
- NEGenerateProposalsLayer(std::shared_ptr memory_manager = nullptr);
+ NEGenerateProposalsLayer(std::shared_ptr memory_manager);
+ NEGenerateProposalsLayer() : NEGenerateProposalsLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEGenerateProposalsLayer(const NEGenerateProposalsLayer &) = delete;
/** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/runtime/NEON/functions/NEInstanceNormalizationLayer.h b/arm_compute/runtime/NEON/functions/NEInstanceNormalizationLayer.h
index b7ff9965db..a719f375fb 100644
--- a/arm_compute/runtime/NEON/functions/NEInstanceNormalizationLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEInstanceNormalizationLayer.h
@@ -27,6 +27,7 @@
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/IMemoryManager.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NEPermute.h"
#include "arm_compute/runtime/NEON/functions/NEReductionOperation.h"
#include "arm_compute/runtime/Tensor.h"
@@ -47,7 +48,10 @@ class NEInstanceNormalizationLayer : public IFunction
{
public:
/** Constructor */
- NEInstanceNormalizationLayer(std::shared_ptr memory_manager = nullptr);
+ NEInstanceNormalizationLayer(std::shared_ptr memory_manager);
+ NEInstanceNormalizationLayer() : NEInstanceNormalizationLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEInstanceNormalizationLayer(const NEInstanceNormalizationLayer &) = delete;
/** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/runtime/NEON/functions/NEL2NormalizeLayer.h b/arm_compute/runtime/NEON/functions/NEL2NormalizeLayer.h
index c29738d8e7..0e164ee43f 100644
--- a/arm_compute/runtime/NEON/functions/NEL2NormalizeLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEL2NormalizeLayer.h
@@ -27,6 +27,7 @@
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/IMemoryManager.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NEReductionOperation.h"
#include "arm_compute/runtime/Tensor.h"
@@ -47,7 +48,10 @@ class NEL2NormalizeLayer : public IFunction
{
public:
/** Constructor */
- NEL2NormalizeLayer(std::shared_ptr memory_manager = nullptr);
+ NEL2NormalizeLayer(std::shared_ptr memory_manager);
+ NEL2NormalizeLayer() : NEL2NormalizeLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEL2NormalizeLayer(const NEL2NormalizeLayer &) = delete;
/** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/runtime/NEON/functions/NELSTMLayer.h b/arm_compute/runtime/NEON/functions/NELSTMLayer.h
index 8416111881..2c723840af 100644
--- a/arm_compute/runtime/NEON/functions/NELSTMLayer.h
+++ b/arm_compute/runtime/NEON/functions/NELSTMLayer.h
@@ -26,6 +26,7 @@
#include "arm_compute/core/Types.h"
#include "arm_compute/runtime/common/LSTMParams.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NEActivationLayer.h"
#include "arm_compute/runtime/NEON/functions/NEArithmeticAddition.h"
#include "arm_compute/runtime/NEON/functions/NEArithmeticSubtraction.h"
@@ -47,7 +48,10 @@ class NELSTMLayer : public IFunction
{
public:
/** Default constructor */
- NELSTMLayer(std::shared_ptr memory_manager = nullptr);
+ NELSTMLayer(std::shared_ptr memory_manager);
+ NELSTMLayer() : NELSTMLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NELSTMLayer(const NELSTMLayer &) = delete;
/** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/runtime/NEON/functions/NELSTMLayerQuantized.h b/arm_compute/runtime/NEON/functions/NELSTMLayerQuantized.h
index ae951669b3..72efde36ee 100644
--- a/arm_compute/runtime/NEON/functions/NELSTMLayerQuantized.h
+++ b/arm_compute/runtime/NEON/functions/NELSTMLayerQuantized.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019-2021 Arm Limited.
+ * Copyright (c) 2019-2021, 2024 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -21,11 +21,12 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-#ifndef ARM_COMPUTE_NELSTMLAYERQUANTIZED_H
-#define ARM_COMPUTE_NELSTMLAYERQUANTIZED_H
+#ifndef ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NELSTMLAYERQUANTIZED_H
+#define ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NELSTMLAYERQUANTIZED_H
#include "arm_compute/core/Types.h"
#include "arm_compute/runtime/common/LSTMParams.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NEActivationLayer.h"
#include "arm_compute/runtime/NEON/functions/NEArithmeticAddition.h"
#include "arm_compute/runtime/NEON/functions/NEConcatenateLayer.h"
@@ -63,7 +64,10 @@ class NELSTMLayerQuantized : public IFunction
{
public:
/** Default constructor */
- NELSTMLayerQuantized(std::shared_ptr memory_manager = nullptr);
+ NELSTMLayerQuantized(std::shared_ptr memory_manager);
+ NELSTMLayerQuantized() : NELSTMLayerQuantized(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NELSTMLayerQuantized(const NELSTMLayerQuantized &) = delete;
/** Prevent instances of this class from being moved (As this class contains pointers) */
@@ -233,4 +237,4 @@ class NELSTMLayerQuantized : public IFunction
bool _is_prepared;
};
} // namespace arm_compute
-#endif /* ARM_COMPUTE_NELSTMLAYERQUANTIZED_H */
+#endif // ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NELSTMLAYERQUANTIZED_H
diff --git a/arm_compute/runtime/NEON/functions/NEMatMul.h b/arm_compute/runtime/NEON/functions/NEMatMul.h
index ae0e317d2e..6b80917716 100644
--- a/arm_compute/runtime/NEON/functions/NEMatMul.h
+++ b/arm_compute/runtime/NEON/functions/NEMatMul.h
@@ -27,6 +27,7 @@
#include "arm_compute/core/Types.h"
#include "arm_compute/function_info/ActivationLayerInfo.h"
#include "arm_compute/runtime/IFunction.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include
@@ -78,7 +79,10 @@ class NEMatMul : public IFunction
{
public:
/** Constructor */
- NEMatMul();
+ NEMatMul(std::shared_ptr memory_manager);
+ NEMatMul() : NEMatMul(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Destructor */
~NEMatMul();
/** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/runtime/NEON/functions/NENormalizationLayer.h b/arm_compute/runtime/NEON/functions/NENormalizationLayer.h
index ce615c62e0..0f09f80c62 100644
--- a/arm_compute/runtime/NEON/functions/NENormalizationLayer.h
+++ b/arm_compute/runtime/NEON/functions/NENormalizationLayer.h
@@ -28,6 +28,7 @@
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/IMemoryManager.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NEPixelWiseMultiplication.h"
#include "arm_compute/runtime/Tensor.h"
@@ -49,7 +50,10 @@ class NENormalizationLayer : public IFunction
{
public:
/** Default constructor */
- NENormalizationLayer(std::shared_ptr memory_manager = nullptr);
+ NENormalizationLayer(std::shared_ptr memory_manager);
+ NENormalizationLayer() : NENormalizationLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NENormalizationLayer(const NENormalizationLayer &) = delete;
/** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/runtime/NEON/functions/NEPooling3dLayer.h b/arm_compute/runtime/NEON/functions/NEPooling3dLayer.h
index ce8aeca790..eabcd32536 100644
--- a/arm_compute/runtime/NEON/functions/NEPooling3dLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEPooling3dLayer.h
@@ -26,6 +26,7 @@
#include "arm_compute/core/Types.h"
#include "arm_compute/runtime/IFunction.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include
@@ -43,7 +44,10 @@ class NEPooling3dLayer : public IFunction
{
public:
/** Constructor */
- NEPooling3dLayer(std::shared_ptr memory_manager = nullptr);
+ NEPooling3dLayer(std::shared_ptr memory_manager);
+ NEPooling3dLayer() : NEPooling3dLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEPooling3dLayer(const NEPooling3dLayer &) = delete;
/** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/runtime/NEON/functions/NEPoolingLayer.h b/arm_compute/runtime/NEON/functions/NEPoolingLayer.h
index 51f7d982f0..4aa1b205fc 100644
--- a/arm_compute/runtime/NEON/functions/NEPoolingLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEPoolingLayer.h
@@ -28,6 +28,7 @@
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/IMemoryManager.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include
@@ -45,7 +46,10 @@ class NEPoolingLayer : public IFunction
{
public:
/** Constructor */
- NEPoolingLayer(std::shared_ptr memory_manager = nullptr);
+ NEPoolingLayer(std::shared_ptr memory_manager);
+ NEPoolingLayer() : NEPoolingLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEPoolingLayer(const NEPoolingLayer &) = delete;
/** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/runtime/NEON/functions/NERNNLayer.h b/arm_compute/runtime/NEON/functions/NERNNLayer.h
index af7f464ac9..8ba2a4911d 100644
--- a/arm_compute/runtime/NEON/functions/NERNNLayer.h
+++ b/arm_compute/runtime/NEON/functions/NERNNLayer.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2021 Arm Limited.
+ * Copyright (c) 2018-2021, 2024 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -21,10 +21,11 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-#ifndef ARM_COMPUTE_NERNNLAYER_H
-#define ARM_COMPUTE_NERNNLAYER_H
+#ifndef ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NERNNLAYER_H
+#define ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NERNNLAYER_H
#include "arm_compute/core/Types.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NEActivationLayer.h"
#include "arm_compute/runtime/NEON/functions/NEArithmeticAddition.h"
#include "arm_compute/runtime/NEON/functions/NECopy.h"
@@ -41,7 +42,10 @@ class NERNNLayer : public IFunction
{
public:
/** Default constructor */
- NERNNLayer(std::shared_ptr memory_manager = nullptr);
+ NERNNLayer(std::shared_ptr memory_manager);
+ NERNNLayer() : NERNNLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NERNNLayer(const NERNNLayer &) = delete;
/** Prevent instances of this class from being moved (As this class contains pointers) */
@@ -116,4 +120,4 @@ class NERNNLayer : public IFunction
bool _is_prepared;
};
} // namespace arm_compute
-#endif /* ARM_COMPUTE_NERNNLAYER_H */
+#endif // ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NERNNLAYER_H
diff --git a/arm_compute/runtime/NEON/functions/NEReduceMean.h b/arm_compute/runtime/NEON/functions/NEReduceMean.h
index 5b8d8cdf2b..eb02099b86 100644
--- a/arm_compute/runtime/NEON/functions/NEReduceMean.h
+++ b/arm_compute/runtime/NEON/functions/NEReduceMean.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2022 Arm Limited.
+ * Copyright (c) 2018-2022, 2024 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -21,12 +21,13 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-#ifndef ARM_COMPUTE_NEON_REDUCE_MEAN_H
-#define ARM_COMPUTE_NEON_REDUCE_MEAN_H
+#ifndef ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NEREDUCEMEAN_H
+#define ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NEREDUCEMEAN_H
#include "arm_compute/core/Types.h"
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/MemoryGroup.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NEReductionOperation.h"
#include "arm_compute/runtime/NEON/functions/NEReshapeLayer.h"
#include "arm_compute/runtime/Tensor.h"
@@ -38,7 +39,10 @@ class NEReduceMean : public IFunction
{
public:
/** Constructor */
- NEReduceMean(std::shared_ptr memory_manager = nullptr);
+ NEReduceMean(std::shared_ptr memory_manager);
+ NEReduceMean() : NEReduceMean(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEReduceMean(const NEReduceMean &) = delete;
/** Prevent instances of this class from being copied (As this class contains pointers) */
@@ -95,4 +99,4 @@ class NEReduceMean : public IFunction
bool _keep_dims;
};
} // namespace arm_compute
-#endif /* ARM_COMPUTE_NEON_REDUCE_MEAN_H */
+#endif // ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NEREDUCEMEAN_H
diff --git a/arm_compute/runtime/NEON/functions/NEReductionOperation.h b/arm_compute/runtime/NEON/functions/NEReductionOperation.h
index 8b56e17f65..c46d0e84e0 100644
--- a/arm_compute/runtime/NEON/functions/NEReductionOperation.h
+++ b/arm_compute/runtime/NEON/functions/NEReductionOperation.h
@@ -25,6 +25,7 @@
#define ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NEREDUCTIONOPERATION_H
#include "arm_compute/runtime/IFunction.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/NEON/functions/NEReshapeLayer.h"
#include "arm_compute/runtime/Tensor.h"
@@ -45,7 +46,10 @@ class NEReductionOperation : public IFunction
{
public:
/** Default constructor */
- NEReductionOperation(std::shared_ptr memory_manager = nullptr);
+ NEReductionOperation(std::shared_ptr memory_manager);
+ NEReductionOperation() : NEReductionOperation(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEReductionOperation(const NEReductionOperation &) = delete;
/** Default move constructor */
diff --git a/arm_compute/runtime/NEON/functions/NESoftmaxLayer.h b/arm_compute/runtime/NEON/functions/NESoftmaxLayer.h
index 1787de6237..276f5dc287 100644
--- a/arm_compute/runtime/NEON/functions/NESoftmaxLayer.h
+++ b/arm_compute/runtime/NEON/functions/NESoftmaxLayer.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2021 Arm Limited.
+ * Copyright (c) 2017-2021, 2024 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -21,12 +21,13 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-#ifndef ARM_COMPUTE_NESOFTMAXLAYER_H
-#define ARM_COMPUTE_NESOFTMAXLAYER_H
+#ifndef ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NESOFTMAXLAYER_H
+#define ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NESOFTMAXLAYER_H
#include "arm_compute/core/Error.h"
#include "arm_compute/runtime/IFunction.h"
#include "arm_compute/runtime/IMemoryManager.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include
@@ -41,7 +42,10 @@ class NESoftmaxLayerGeneric : public IFunction
{
public:
/** Constructor */
- NESoftmaxLayerGeneric(std::shared_ptr memory_manager = nullptr);
+ NESoftmaxLayerGeneric(std::shared_ptr memory_manager);
+ NESoftmaxLayerGeneric() : NESoftmaxLayerGeneric(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NESoftmaxLayerGeneric(const NESoftmaxLayerGeneric &) = delete;
/** Default move constructor */
@@ -98,4 +102,4 @@ using NESoftmaxLayer = NESoftmaxLayerGeneric;
using NELogSoftmaxLayer = NESoftmaxLayerGeneric;
} // namespace arm_compute
-#endif /* ARM_COMPUTE_NESOFTMAXLAYER_H */
+#endif // ACL_ARM_COMPUTE_RUNTIME_NEON_FUNCTIONS_NESOFTMAXLAYER_H
diff --git a/arm_compute/runtime/NEON/functions/NEWinogradConvolutionLayer.h b/arm_compute/runtime/NEON/functions/NEWinogradConvolutionLayer.h
index 7b00fd3b9d..dce1e3e764 100644
--- a/arm_compute/runtime/NEON/functions/NEWinogradConvolutionLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEWinogradConvolutionLayer.h
@@ -27,6 +27,7 @@
#include "arm_compute/core/Types.h"
#include "arm_compute/function_info/ActivationLayerInfo.h"
#include "arm_compute/runtime/IFunction.h"
+#include "arm_compute/runtime/MemoryManagerOnDemand.h"
#include "arm_compute/runtime/Tensor.h"
#include
@@ -49,7 +50,10 @@ class NEWinogradConvolutionLayer : public IFunction
{
public:
/** Constructor */
- NEWinogradConvolutionLayer(const std::shared_ptr &memory_manager = nullptr);
+ NEWinogradConvolutionLayer(const std::shared_ptr &memory_manager);
+ NEWinogradConvolutionLayer() : NEWinogradConvolutionLayer(MemoryManagerOnDemand::make_default())
+ {
+ }
/** Prevent instances of this class from being copied (As this class contains pointers) */
NEWinogradConvolutionLayer(const NEWinogradConvolutionLayer &) = delete;
/** Default move constructor */
diff --git a/arm_compute/runtime/experimental/low_level/CpuGemmAssemblyDispatch.h b/arm_compute/runtime/experimental/low_level/CpuGemmAssemblyDispatch.h
index bc0e36cb0a..5958382f6c 100644
--- a/arm_compute/runtime/experimental/low_level/CpuGemmAssemblyDispatch.h
+++ b/arm_compute/runtime/experimental/low_level/CpuGemmAssemblyDispatch.h
@@ -111,6 +111,13 @@ class CpuGemmAssemblyDispatch : arm_compute::experimental::IOperator
const GEMMInfo &gemm_info = GEMMInfo());
/** Indicates whether or not this function can be used to process the given parameters.
+ * Valid data type configurations:
+ * |src0 |src1 |src2 |dst |
+ * |:------------|:-----------|:---------|:--------------|
+ * |F32 |F32 |nullptr |F32 |
+ * |F16 |F16 |nullptr |F16 |
+ * |BFLOAT16 |BFLOAT16 |nullptr |BFLOAT16 |
+ * |BFLOAT16 |BFLOAT16 |nullptr |BFLOAT32 |
*
* @param[in] a Input tensor info (Matrix A)
* @param[in] b Input tensor info (Matrix B)
diff --git a/arm_compute/runtime/experimental/operators/CpuDequantize.h b/arm_compute/runtime/experimental/operators/CpuDequantize.h
new file mode 100644
index 0000000000..90b3ebd107
--- /dev/null
+++ b/arm_compute/runtime/experimental/operators/CpuDequantize.h
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2017-2021, 2024 Arm Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+#ifndef ACL_ARM_COMPUTE_RUNTIME_EXPERIMENTAL_OPERATORS_CPUDEQUANTIZE_H
+#define ACL_ARM_COMPUTE_RUNTIME_EXPERIMENTAL_OPERATORS_CPUDEQUANTIZE_H
+
+#include "arm_compute/core/ITensorPack.h"
+#include "arm_compute/runtime/NEON/INEOperator.h"
+
+#include
+
+/*
+ * A shallow wrapper for arm_compute::cpu::CpuDequantize.
+ * Any new features should be added to arm_compute::cpu::CpuDequantize and
+ * arm_compute::experimental::op::CpuDequantize should remain a shallow wrapper.
+*/
+namespace arm_compute
+{
+namespace experimental
+{
+namespace op
+{
+/** A simple wrapper class which runs cpu::CpuDequantize that dequantizes an input tensor */
+class CpuDequantize : public INEOperator
+{
+public:
+ /** Default Constructor */
+ CpuDequantize();
+ /** Default Destructor */
+ ~CpuDequantize();
+ /** Prevent instances of this class from being copied (As this class contains pointers) */
+ CpuDequantize(const CpuDequantize &) = delete;
+ /** Default move constructor */
+ CpuDequantize(CpuDequantize &&) = default;
+ /** Prevent instances of this class from being copied (As this class contains pointers) */
+ CpuDequantize &operator=(const CpuDequantize &) = delete;
+ /** Default move assignment operator */
+ CpuDequantize &operator=(CpuDequantize &&) = default;
+ /** Configure the kernel.
+ *
+ * Valid configurations and data layouts can be referenced in @ref arm_compute::NEDequantizationLayer.
+ */
+ void configure(const ITensorInfo *input, ITensorInfo *output);
+ /** Static function to check if given info will lead to a valid configuration of @ref CpuDequantize
+ *
+ * Similar to @ref CpuDequantize::configure
+ *
+ * @return a status
+ */
+ static Status validate(const ITensorInfo *input, const ITensorInfo *output);
+
+ // Inherited methods overridden:
+ void run(ITensorPack &tensors) override;
+
+private:
+ struct Impl;
+ std::unique_ptr impl_;
+};
+} // namespace op
+} // namespace experimental
+} // namespace arm_compute
+#endif // ACL_ARM_COMPUTE_RUNTIME_EXPERIMENTAL_OPERATORS_CPUDEQUANTIZE_H
diff --git a/arm_compute/runtime/experimental/operators/CpuGEMMLowp.h b/arm_compute/runtime/experimental/operators/CpuGEMMLowp.h
new file mode 100644
index 0000000000..0ca7113d8f
--- /dev/null
+++ b/arm_compute/runtime/experimental/operators/CpuGEMMLowp.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2017-2021, 2023-2024 Arm Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+#ifndef ACL_ARM_COMPUTE_RUNTIME_EXPERIMENTAL_OPERATORS_CPUGEMMLOWP_H
+#define ACL_ARM_COMPUTE_RUNTIME_EXPERIMENTAL_OPERATORS_CPUGEMMLOWP_H
+
+#include "arm_compute/core/ITensorPack.h"
+#include "arm_compute/function_info/GEMMInfo.h"
+#include "arm_compute/runtime/NEON/INEOperator.h"
+
+#include
+
+namespace arm_compute
+{
+class ITensor;
+class ITensorInfo;
+
+namespace experimental
+{
+namespace op
+{
+/*
+ * A shallow wrapper for arm_compute::cpu::CpuGemmLowpMatrixMultiplyCore.
+ * Any new features should be added to arm_compute::cpu::CpuGemmLowpMatrixMultiplyCore and
+ * arm_compute::experimental::op::CpuGEMMLowp should remain a shallow wrapper.
+*/
+class CpuGEMMLowp : public INEOperator
+{
+public:
+ /** Constructor */
+ CpuGEMMLowp();
+ /** Prevent instances of this class from being copied (As this class contains pointers) */
+ CpuGEMMLowp(const CpuGEMMLowp &) = delete;
+ /** Default move constructor */
+ CpuGEMMLowp(CpuGEMMLowp &&) = default;
+ /** Prevent instances of this class from being copied (As this class contains pointers) */
+ CpuGEMMLowp &operator=(const CpuGEMMLowp &) = delete;
+ /** Default move assignment operator */
+ CpuGEMMLowp &operator=(CpuGEMMLowp &&) = default;
+ /** Default destructor */
+ ~CpuGEMMLowp();
+ /** Initialise the kernel's inputs, output
+ *
+ *valid configurations can be referenced in @ref arm_compute::NEGEMMLowpMatrixMultiplyCore.
+ */
+ void configure(const ITensorInfo *a,
+ const ITensorInfo *b,
+ const ITensorInfo *c,
+ ITensorInfo *output,
+ const GEMMInfo &gemm_info = GEMMInfo());
+ /** Static function to check if given info will lead to a valid configuration of @ref CpuGEMMLowp
+ *
+ * Similar to @ref CpuGEMMLowp::configure()
+ *
+ * @return a status
+ */
+ static Status validate(const ITensorInfo *a,
+ const ITensorInfo *b,
+ const ITensorInfo *c,
+ const ITensorInfo *output,
+ const GEMMInfo &gemm_info = GEMMInfo());
+
+ // Inherited methods overridden
+ void run(ITensorPack &tensors) override;
+ void prepare(ITensorPack &tensors) override;
+
+ experimental::MemoryRequirements workspace() const override;
+
+private:
+ struct Impl;
+ std::unique_ptr _impl;
+};
+} // namespace op
+} // namespace experimental
+} // namespace arm_compute
+#endif // ACL_ARM_COMPUTE_RUNTIME_EXPERIMENTAL_OPERATORS_CPUGEMMLOWP_H
diff --git a/arm_compute/runtime/experimental/operators/CpuGemmConv2d.h b/arm_compute/runtime/experimental/operators/CpuGemmConv2d.h
index 2bbc7148d5..6cb539a6dc 100644
--- a/arm_compute/runtime/experimental/operators/CpuGemmConv2d.h
+++ b/arm_compute/runtime/experimental/operators/CpuGemmConv2d.h
@@ -137,6 +137,13 @@ class CpuGemmConv2d : public IOperator
const ActivationLayerInfo &act_info = ActivationLayerInfo(),
bool enable_fast_math = false);
+ /** Update of quantization information at the run stage for convolution so that the quantization multipliers can be properly calculated.
+ * Please @ref NEGEMMConvolutionLayer for a more in-depth explanation and example.
+ *
+ * @param[in] tensors Vector that contains the tensors to operate on.
+ */
+ void update_quantization_parameters(ITensorPack &tensors);
+
void run(ITensorPack &tensors) override;
void prepare(ITensorPack &tensors) override;
experimental::MemoryRequirements workspace() const override;
diff --git a/arm_compute/runtime/experimental/operators/CpuQuantize.h b/arm_compute/runtime/experimental/operators/CpuQuantize.h
new file mode 100644
index 0000000000..962204ca36
--- /dev/null
+++ b/arm_compute/runtime/experimental/operators/CpuQuantize.h
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2017-2021, 2024 Arm Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+#ifndef ACL_ARM_COMPUTE_RUNTIME_EXPERIMENTAL_OPERATORS_CPUQUANTIZE_H
+#define ACL_ARM_COMPUTE_RUNTIME_EXPERIMENTAL_OPERATORS_CPUQUANTIZE_H
+
+#include "arm_compute/core/ITensorInfo.h"
+#include "arm_compute/runtime/NEON/INEOperator.h"
+
+#include "src/cpu/ICpuOperator.h"
+
+#include
+
+/*
+ * A shallow wrapper for arm_compute::cpu::CpuQuantize.
+ * Any new features should be added to arm_compute::cpu::CpuQuantize and
+ * arm_compute::experimental::op::CpuQuantize should remain a shallow wrapper.
+*/
+namespace arm_compute
+{
+namespace experimental
+{
+namespace op
+{
+
+/** A simple wrapper class which runs cpu::CpuQuantize */
+class CpuQuantize : public arm_compute::experimental::INEOperator
+{
+public:
+ CpuQuantize();
+ /** Default Destructor */
+ ~CpuQuantize();
+ /** Prevent instances of this class from being copied (As this class contains pointers) */
+ CpuQuantize(const CpuQuantize &) = delete;
+ /** Default move constructor */
+ CpuQuantize(CpuQuantize &&) = default;
+ /** Prevent instances of this class from being copied (As this class contains pointers) */
+ CpuQuantize &operator=(const CpuQuantize &) = delete;
+ /** Default move assignment operator */
+ CpuQuantize &operator=(CpuQuantize &&) = default;
+ /** Set the input and output tensors.
+ *
+ * Valid data layouts:
+ * - All
+ *
+ * Valid data type configurations:
+ * |src |dst |
+ * |:------------------|:--------------------------------------|
+ * |QASYMM8 |QASYMM8, QASYMM8_SIGNED, QASYMM16 |
+ * |QASYMM8_SIGNED |QASYMM8, QASYMM8_SIGNED, QASYMM16 |
+ * |F16 |QASYMM8, QASYMM8_SIGNED, QASYMM16 |
+ * |F32 |QASYMM8, QASYMM8_SIGNED, QASYMM16 |
+ *
+ * @param[in] input Source tensor. The dimensions over the third will be interpreted as batches. Data types supported: QASYMM8/QASYMM8_SIGNED/F32/F16.
+ * @param[out] output Destination tensor with the same dimensions of input. Data types supported: QASYMM8/QASYMM8_SIGNED/QASYMM16
+ */
+ void configure(const ITensorInfo *input, ITensorInfo *output);
+ /** Static function to check if given info will lead to a valid configuration of @ref CpuQuantize
+ *
+ * Similar to @ref CpuQuantize::configure()
+ * @return a status
+ */
+ static Status validate(const ITensorInfo *input, const ITensorInfo *output);
+
+ // Inherited methods overridden:
+ void run(ITensorPack &tensors) override;
+
+private:
+ struct Impl;
+ std::unique_ptr impl_;
+};
+} // namespace op
+} // namespace experimental
+} // namespace arm_compute
+#endif // ACL_ARM_COMPUTE_RUNTIME_EXPERIMENTAL_OPERATORS_CPUQUANTIZE_H
diff --git a/docs/Doxyfile b/docs/Doxyfile
index d92a65f340..0621168e94 100644
--- a/docs/Doxyfile
+++ b/docs/Doxyfile
@@ -60,7 +60,7 @@ PROJECT_NAME = "Compute Library"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 24.09
+PROJECT_NUMBER = 24.11
# 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/docs/user_guide/library.dox b/docs/user_guide/library.dox
index 1f97ccc458..371c2e1133 100644
--- a/docs/user_guide/library.dox
+++ b/docs/user_guide/library.dox
@@ -606,10 +606,5 @@ Supported data-types options are:
The list of supported operators can be found in filelist.json in the root of Compute Library repo.
-@subsection architecture_experimental_build_high_priority_operators Build high priority operators
-
-Selecting high_priority when building Compute Library, one new library will be created: libarm_compute_hp and
-will contain a selected subset of the libary operators. Currently the operators are staticly set.
-
*/
} // namespace arm_compute
diff --git a/docs/user_guide/operator_list.dox b/docs/user_guide/operator_list.dox
index f423260fb5..47d872e0f1 100644
--- a/docs/user_guide/operator_list.dox
+++ b/docs/user_guide/operator_list.dox
@@ -455,16 +455,22 @@ where N = batches, C = channels, H = height, W = width, D = depth