Skip to content

Commit 1363a1a

Browse files
author
Jenkins
committed
Compute Library v52.0.0
1 parent cf77a69 commit 1363a1a

File tree

25 files changed

+1228
-485
lines changed

25 files changed

+1228
-485
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
2424

2525
project(
2626
ArmCompute
27-
VERSION 51.0.0
27+
VERSION 52.0.0
2828
DESCRIPTION
2929
"The Compute Library is a collection of low-level machine learning functions \
3030
optimized for Arm® Cortex®-A, Arm® Neoverse™ CPU and Arm® Mali™ GPU \

README.md

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
1-
2-
> **⚠ Deprecation Notice**
3-
> 24.01 announcement: NCHW data format specific optimizations will gradually be removed from the code base in
4-
> future releases. The implication of this is that the user is expected to translate NCHW models into NHWC in
5-
> order to benefit from the optimizations.
1+
> [!IMPORTANT]
2+
> **Versioning Change: CalVer → SemVer**
3+
>
4+
> We have updated our versioning scheme for the Arm Compute Library.
5+
>
6+
> - **v25.04** is the **last release** using Calendar Versioning (**CalVer**).
7+
> - Starting from the next release, we are switching to **Semantic Versioning (**SemVer**).
8+
> - The next version will be: **v52.0.0**
9+
>
10+
> This change provides clearer version semantics and better compatibility tracking for users and integrators.
611
712
<br>
813
<div align="center">
914
<img src="https://raw.githubusercontent.com/ARM-software/ComputeLibrary/gh-pages/ACL_logo.png"/><br><br>
1015
</div>
1116

12-
# Compute Library ![](https://img.shields.io/badge/latest_release-25.04-green)
17+
# Compute Library ![](https://img.shields.io/badge/latest_release-52.0.0-green)
1318

1419

1520
The Compute Library is a collection of low-level machine learning functions optimized for Arm® Cortex®-A, Arm® Neoverse™ and Arm® Mali™ GPUs architectures.<br>
@@ -37,7 +42,7 @@ Key Features:
3742
<br>
3843

3944
## Documentation
40-
[![Documentation](https://img.shields.io/badge/documentation-25.04-green)](https://artificial-intelligence.sites.arm.com/computelibrary/v25.04/index.xhtml)
45+
[![Documentation](https://img.shields.io/badge/documentation-52.0.0-green)](https://artificial-intelligence.sites.arm.com/computelibrary/v52.0.0/index.xhtml)
4146

4247
> Note: The documentation includes the reference API, changelogs, build guide, contribution guide, errata, etc.
4348
@@ -50,22 +55,22 @@ All the binaries can be downloaded from [here](https://github.com/ARM-software/C
5055

5156
| Platform | Operating System | Release archive (Download) |
5257
| -------------- | ---------------- | -------------------------- |
53-
| Raspberry Pi 4 | Linux® 32bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v25.04/arm_compute-v25.04-linux-armv7a-cpu-bin.tar.gz) |
54-
| Raspberry Pi 4 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v25.04/arm_compute-v25.04-linux-aarch64-cpu-bin.tar.gz) |
55-
| Odroid N2 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v25.04/arm_compute-v25.04-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v25.04/arm_compute-v25.04-linux-aarch64-cpu-gpu-bin.tar.gz) |
56-
| HiKey960 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v25.04/arm_compute-v25.04-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v25.04/arm_compute-v25.04-linux-aarch64-cpu-gpu-bin.tar.gz) |
58+
| Raspberry Pi 4 | Linux® 32bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v52.0.0/arm_compute-v52.0.0-linux-armv7a-cpu-bin.tar.gz) |
59+
| Raspberry Pi 4 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v52.0.0/arm_compute-v52.0.0-linux-aarch64-cpu-bin.tar.gz) |
60+
| Odroid N2 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v52.0.0/arm_compute-v52.0.0-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v52.0.0/arm_compute-v52.0.0-linux-aarch64-cpu-gpu-bin.tar.gz) |
61+
| HiKey960 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v52.0.0/arm_compute-v52.0.0-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v52.0.0/arm_compute-v52.0.0-linux-aarch64-cpu-gpu-bin.tar.gz) |
5762

5863
<br>
5964

6065
| Architecture | Operating System | Release archive (Download) |
6166
| ------------ | ---------------- | -------------------------- |
62-
| armv7 | Linux® | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v25.04/arm_compute-v25.04-linux-armv7a-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v25.04/arm_compute-v25.04-linux-armv7a-cpu-gpu-bin.tar.gz) |
63-
| arm64-v8a | Android™ | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v25.04/arm_compute-v25.04-android-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v25.04/arm_compute-v25.04-android-aarch64-cpu-gpu-bin.tar.gz) |
64-
| arm64-v8a | Linux® | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v25.04/arm_compute-v25.04-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v25.04/arm_compute-v25.04-linux-aarch64-cpu-gpu-bin.tar.gz) |
67+
| armv7 | Linux® | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v52.0.0/arm_compute-v52.0.0-linux-armv7a-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v52.0.0/arm_compute-v52.0.0-linux-armv7a-cpu-gpu-bin.tar.gz) |
68+
| arm64-v8a | Android™ | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v52.0.0/arm_compute-v52.0.0-android-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v52.0.0/arm_compute-v52.0.0-android-aarch64-cpu-gpu-bin.tar.gz) |
69+
| arm64-v8a | Linux® | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v52.0.0/arm_compute-v52.0.0-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v52.0.0/arm_compute-v52.0.0-linux-aarch64-cpu-gpu-bin.tar.gz) |
6570

6671
<br>
6772

68-
Please refer to the following link for more pre-built binaries: [![](https://img.shields.io/badge/v25.04-bins-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/tag/v25.04)
73+
Please refer to the following link for more pre-built binaries: [![](https://img.shields.io/badge/v52.0.0-bins-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/tag/v52.0.0)
6974

7075
Pre-build binaries are generated with the following security / good coding practices related flags:
7176
> -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
@@ -108,13 +113,13 @@ Pre-build binaries are generated with the following security / good coding pract
108113

109114
## Experimental builds
110115

111-
**⚠ Important** Bazel and CMake builds are experimental CPU only builds, please see the [documentation](https://artificial-intelligence.sites.arm.com/computelibrary/v25.04/how_to_build.xhtml) for more details.
116+
**⚠ Important** Bazel and CMake builds are experimental CPU only builds, please see the [documentation](https://artificial-intelligence.sites.arm.com/computelibrary/v52.0.0/how_to_build.xhtml) for more details.
112117

113118
<br>
114119

115120
## How to contribute
116121

117-
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/v25.04/contribution_guidelines.xhtml).
122+
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/v52.0.0/contribution_guidelines.xhtml).
118123

119124
### Developer Certificate of Origin (DCO)
120125
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/)

SConscript

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ import codecs
3333
import platform
3434
import SCons
3535

36-
VERSION = "v25.04"
37-
LIBRARY_VERSION_MAJOR = 51
36+
VERSION = "v52.0.0"
37+
LIBRARY_VERSION_MAJOR = 52
3838
LIBRARY_VERSION_MINOR = 0
3939
LIBRARY_VERSION_PATCH = 0
4040
SONAME_VERSION = str(LIBRARY_VERSION_MAJOR) + "." + str(LIBRARY_VERSION_MINOR) + "." + str(LIBRARY_VERSION_PATCH)

arm_compute/runtime/NEON/functions/NEReorderLayer.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class NEReorderLayer : public IFunction
7777
ITensor *output,
7878
arm_compute::WeightFormat input_wf,
7979
arm_compute::WeightFormat output_wf,
80-
bool transpose);
80+
bool transpose = true);
8181

8282
/** Static function to check if given info will lead to a valid configuration of @ref NEReorderLayer
8383
*
@@ -89,7 +89,7 @@ class NEReorderLayer : public IFunction
8989
const ITensorInfo *output,
9090
arm_compute::WeightFormat input_wf,
9191
arm_compute::WeightFormat output_wf,
92-
bool transpose);
92+
bool transpose = true);
9393

9494
// Inherited methods overridden:
9595
void run() override;

docs/Doxyfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ PROJECT_NAME = "Compute Library"
6060
# could be handy for archiving the generated documentation or if some version
6161
# control system is used.
6262

63-
PROJECT_NUMBER = 25.04
63+
PROJECT_NUMBER = 52.0.0
6464

6565
# Using the PROJECT_BRIEF tag one can provide an optional one line description
6666
# for a project that appears at the top of each page and should give viewer a

examples/neon_convolution.cpp

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
/*
2+
* Copyright (c) 2025 Arm Limited.
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to
8+
* deal in the Software without restriction, including without limitation the
9+
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10+
* sell copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in all
14+
* copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
* SOFTWARE.
23+
*/
24+
#include "arm_compute/core/Types.h"
25+
#include "arm_compute/core/utils/misc/ShapeCalculator.h"
26+
#include "arm_compute/runtime/NEON/NEFunctions.h"
27+
28+
#include "utils/Utils.h"
29+
30+
using namespace arm_compute;
31+
using namespace utils;
32+
33+
class NEConvolutionExample : public Example
34+
{
35+
public:
36+
bool do_setup(int argc, char **argv) override
37+
{
38+
TensorShape input_shape{32, 256, 256};
39+
TensorShape weights_shape{32, 4, 4, 4};
40+
TensorShape output_shape{4, 127, 127};
41+
TensorInfo input_info{input_shape, 1, DataType::F16, DataLayout::NHWC};
42+
TensorInfo weights_info{weights_shape, 1, DataType::F16, DataLayout::NHWC};
43+
TensorInfo output_info{output_shape, 1, DataType::F16, DataLayout::NHWC};
44+
PadStrideInfo ps_info{1, 1, 0, 0, DimensionRoundingType::FLOOR};
45+
46+
if (argc == 11)
47+
{
48+
try
49+
{
50+
const size_t input_x = std::stoul(argv[1]);
51+
const size_t input_y = std::stoul(argv[2]);
52+
const size_t input_z = std::stoul(argv[3]);
53+
const size_t kernel_size_x = std::stoul(argv[4]);
54+
const size_t kernel_size_y = std::stoul(argv[5]);
55+
const size_t output_channels = std::stoul(argv[6]);
56+
const uint32_t stride_x = static_cast<uint32_t>(std::stoul(argv[7]));
57+
const uint32_t stride_y = static_cast<uint32_t>(std::stoul(argv[8]));
58+
const uint32_t pad_x = static_cast<uint32_t>(std::stoul(argv[9]));
59+
const uint32_t pad_y = static_cast<uint32_t>(std::stoul(argv[10]));
60+
61+
input_shape = TensorShape{input_z, input_x, input_y};
62+
input_info = TensorInfo{input_shape, 1, DataType::F16, DataLayout::NHWC};
63+
weights_shape = TensorShape{input_z, kernel_size_x, kernel_size_y, output_channels};
64+
weights_info = TensorInfo{weights_shape, 1, DataType::F16, DataLayout::NHWC};
65+
ps_info = PadStrideInfo{stride_x, stride_y, pad_x, pad_y, DimensionRoundingType::FLOOR};
66+
output_shape = arm_compute::misc::shape_calculator::compute_deep_convolution_shape(
67+
input_info, weights_info, ps_info);
68+
output_info = TensorInfo{output_shape, 1, DataType::F16, DataLayout::NHWC};
69+
}
70+
catch (const std::exception &e)
71+
{
72+
ARM_COMPUTE_ERROR(e.what());
73+
return false;
74+
}
75+
}
76+
else if (argc != 1)
77+
{
78+
ARM_COMPUTE_ERROR(
79+
"Invalid number of arguments. Usage:\n"
80+
"<input_width> <input_height> <input_channels> <kernel_size_x> <kernel_size_y> <output_channels> "
81+
"<stride_x> <stride_y> <pad_x> <pad_y>\n");
82+
return false;
83+
}
84+
85+
input.allocator()->init(input_info);
86+
weights.allocator()->init(weights_info);
87+
output.allocator()->init(output_info);
88+
89+
auto status = NEConvolutionLayer::validate(input.info(), weights.info(), nullptr, output.info(), ps_info);
90+
if (status.error_code() != ErrorCode::OK)
91+
{
92+
ARM_COMPUTE_ERROR(status.error_description().c_str());
93+
return false;
94+
}
95+
96+
conv.configure(&input, &weights, nullptr, &output, ps_info);
97+
input.allocator()->allocate();
98+
weights.allocator()->allocate();
99+
output.allocator()->allocate();
100+
101+
return true;
102+
}
103+
104+
void do_run() override
105+
{
106+
conv.run();
107+
}
108+
109+
private:
110+
NEConvolutionLayer conv{};
111+
Tensor input{}, weights{}, output{};
112+
};
113+
114+
/** Main program for convolution test
115+
*
116+
* @param[in] argc Number of arguments
117+
* @param[in] argv Arguments (input_width, input_height, input_channels, kernel_size_x, kernel_size_y, output_channels, stride_x, stride_y pad_x, pad_y)
118+
*/
119+
int main(int argc, char **argv)
120+
{
121+
return utils::run_example<NEConvolutionExample>(argc, argv);
122+
}

0 commit comments

Comments
 (0)