xref: /aosp_15_r20/external/ComputeLibrary/README.md (revision c217d954acce2dbc11938adb493fc0abd69584f3)
1*c217d954SCole Faust
2*c217d954SCole Faust> **⚠ Important**
3*c217d954SCole Faust> From release 22.05: 'master' branch has been replaced with 'main' following our inclusive language update, more information [here](https://arm-software.github.io/ComputeLibrary/v23.02.1/contribution_guidelines.xhtml#S5_0_inc_lang).
4*c217d954SCole Faust
5*c217d954SCole Faust> **⚠ Important**
6*c217d954SCole Faust> From release 22.08: armv7a with Android build will no longer be tested or maintained.
7*c217d954SCole Faust
8*c217d954SCole Faust> **⚠ Important**
9*c217d954SCole Faust> From release 23.02: The 23.02 release introduces a change to the default tensor extend padding behavior.
10*c217d954SCole Faust> To remain compatible with previous behavior, users will need to set the new flag `ITensorInfo::lock_paddings()` on
11*c217d954SCole Faust> tensors for which paddings should not be extended, such as the input and output of the model that need to be mapped to
12*c217d954SCole Faust> a camera frame or frame buffer.
13*c217d954SCole Faust
14*c217d954SCole Faust<br>
15*c217d954SCole Faust<div align="center">
16*c217d954SCole Faust <img src="https://raw.githubusercontent.com/ARM-software/ComputeLibrary/gh-pages/ACL_logo.png"/><br><br>
17*c217d954SCole Faust</div>
18*c217d954SCole Faust
19*c217d954SCole Faust# Compute Library ![](https://img.shields.io/badge/latest_release-23.02.1-green)
20*c217d954SCole Faust
21*c217d954SCole Faust
22*c217d954SCole FaustThe Compute Library is a collection of low-level machine learning functions optimized for Arm® Cortex®-A, Arm® Neoverse® and Arm® Mali™ GPUs architectures.<br>
23*c217d954SCole Faust
24*c217d954SCole FaustThe library provides superior performance to other open source alternatives and immediate support for new Arm® technologies e.g. SVE2.
25*c217d954SCole Faust
26*c217d954SCole FaustKey Features:
27*c217d954SCole Faust
28*c217d954SCole Faust- Open source software available under a permissive MIT license
29*c217d954SCole Faust- Over 100 machine learning functions for CPU and GPU
30*c217d954SCole Faust- Multiple convolution algorithms (GeMM, Winograd, FFT, Direct and indirect-GeMM)
31*c217d954SCole Faust- Support for multiple data types: FP32, FP16, INT8, UINT8, BFLOAT16
32*c217d954SCole Faust- Micro-architecture optimization for key ML primitives
33*c217d954SCole Faust- Highly configurable build options enabling lightweight binaries
34*c217d954SCole Faust- Advanced optimization techniques such as kernel fusion, Fast math enablement and texture utilization
35*c217d954SCole Faust- Device and workload specific tuning using OpenCL tuner and GeMM optimized heuristics
36*c217d954SCole Faust
37*c217d954SCole Faust<br>
38*c217d954SCole Faust
39*c217d954SCole Faust| Repository  | Link                                                             |
40*c217d954SCole Faust| ----------- | ---------------------------------------------------------------- |
41*c217d954SCole Faust| Release     | https://github.com/arm-software/ComputeLibrary                   |
42*c217d954SCole Faust| Development | https://review.mlplatform.org/#/admin/projects/ml/ComputeLibrary |
43*c217d954SCole Faust
44*c217d954SCole Faust<br>
45*c217d954SCole Faust
46*c217d954SCole Faust## Documentation
47*c217d954SCole Faust[![Documentation](https://img.shields.io/badge/documentation-23.02.1-green)](https://arm-software.github.io/ComputeLibrary/v23.02.1)
48*c217d954SCole Faust
49*c217d954SCole Faust> Note: The documentation includes the reference API, changelogs, build guide, contribution guide, errata, etc.
50*c217d954SCole Faust
51*c217d954SCole Faust<br>
52*c217d954SCole Faust
53*c217d954SCole Faust## Pre-built binaries
54*c217d954SCole FaustAll the binaries can be downloaded from [here](https://github.com/ARM-software/ComputeLibrary/releases) or from the tables below.
55*c217d954SCole Faust
56*c217d954SCole Faust<br>
57*c217d954SCole Faust
58*c217d954SCole Faust| Platform       | Operating System | Release archive (Download) |
59*c217d954SCole Faust| -------------- | ---------------- | -------------------------- |
60*c217d954SCole Faust| Raspberry Pi 4 | Linux 32bit      | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-armv7a-neon.tar.gz) |
61*c217d954SCole Faust| Raspberry Pi 4 | Linux 64bit      | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-neon.tar.gz) |
62*c217d954SCole Faust| Odroid N2      | Linux 64bit      | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-neon.tar.gz) [![](https://img.shields.io/badge/build-opencl-blue)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-cl.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-neon-cl.tar.gz) |
63*c217d954SCole Faust| HiKey960       | Linux 64bit      | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-neon.tar.gz) [![](https://img.shields.io/badge/build-opencl-blue)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-cl.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-neon-cl.tar.gz) |
64*c217d954SCole Faust
65*c217d954SCole Faust<br>
66*c217d954SCole Faust
67*c217d954SCole Faust| Architecture | Operating System | Release archive (Download) |
68*c217d954SCole Faust| ------------ | ---------------- | -------------------------- |
69*c217d954SCole Faust| armv7        | Linux            | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-armv7a-neon.tar.gz) [![](https://img.shields.io/badge/build-opencl-blue)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-armv7a-cl.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-armv7a-neon-cl.tar.gz) |
70*c217d954SCole Faust| arm64-v8a    | Android          | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-android-arm64-v8a-neon.tar.gz) [![](https://img.shields.io/badge/build-opencl-blue)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-android-arm64-v8a-cl.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-android-arm64-v8a-neon-cl.tar.gz) |
71*c217d954SCole Faust| arm64-v8a    | Linux            | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-neon.tar.gz) [![](https://img.shields.io/badge/build-opencl-blue)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-cl.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-neon-cl.tar.gz) |
72*c217d954SCole Faust| arm64-v8.2-a | Android          | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-android-arm64-v8.2-a-neon.tar.gz) [![](https://img.shields.io/badge/build-opencl-blue)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-android-arm64-v8.2-a-cl.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-android-arm64-v8.2-a-neon-cl.tar.gz) |
73*c217d954SCole Faust| arm64-v8.2-a | Linux            | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8.2-a-neon.tar.gz) [![](https://img.shields.io/badge/build-opencl-blue)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8.2-a-cl.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8.2-a-neon-cl.tar.gz) |
74*c217d954SCole Faust
75*c217d954SCole Faust<br>
76*c217d954SCole Faust
77*c217d954SCole FaustPlease refer to the following link for more pre-built binaries: [![](https://img.shields.io/badge/v23.02.1-bins-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/tag/v23.02.1)
78*c217d954SCole Faust
79*c217d954SCole FaustPre-build binaries are generated with the following security / good coding practices related flags:
80*c217d954SCole Faust> -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
81*c217d954SCole Faust
82*c217d954SCole Faust## Supported Architectures/Technologies
83*c217d954SCole Faust
84*c217d954SCole Faust- Arm® CPUs:
85*c217d954SCole Faust    - Arm® Cortex®-A processor family using Arm® Neon™ technology
86*c217d954SCole Faust    - Arm® Neoverse® processor family
87*c217d954SCole Faust    - Arm® Cortex®-R processor family with Armv8-R AArch64 architecture using Arm® Neon™ technology
88*c217d954SCole Faust    - Arm® Cortex®-X1 processor using Arm® Neon™ technology
89*c217d954SCole Faust
90*c217d954SCole Faust- Arm® Mali™ GPUs:
91*c217d954SCole Faust    - Arm® Mali™-G processor family
92*c217d954SCole Faust    - Arm® Mali™-T processor family
93*c217d954SCole Faust
94*c217d954SCole Faust- x86
95*c217d954SCole Faust
96*c217d954SCole Faust<br>
97*c217d954SCole Faust
98*c217d954SCole Faust## Supported Systems
99*c217d954SCole Faust
100*c217d954SCole Faust- Android™
101*c217d954SCole Faust- Bare Metal
102*c217d954SCole Faust- Linux®
103*c217d954SCole Faust- OpenBSD®
104*c217d954SCole Faust- macOS®
105*c217d954SCole Faust- Tizen™
106*c217d954SCole Faust
107*c217d954SCole Faust<br>
108*c217d954SCole Faust
109*c217d954SCole Faust## Resources
110*c217d954SCole Faust- [Tutorial: Running AlexNet on Raspberry Pi with Compute Library](https://community.arm.com/processors/b/blog/posts/running-alexnet-on-raspberry-pi-with-compute-library)
111*c217d954SCole Faust- [Gian Marco's talk on Performance Analysis for Optimizing Embedded Deep Learning Inference Software](https://www.embedded-vision.com/platinum-members/arm/embedded-vision-training/videos/pages/may-2019-embedded-vision-summit)
112*c217d954SCole Faust- [Gian Marco's talk on optimizing CNNs with Winograd algorithms at the EVS](https://www.embedded-vision.com/platinum-members/arm/embedded-vision-training/videos/pages/may-2018-embedded-vision-summit-iodice)
113*c217d954SCole Faust- [Gian Marco's talk on using SGEMM and FFTs to Accelerate Deep Learning](https://www.embedded-vision.com/platinum-members/arm/embedded-vision-training/videos/pages/may-2016-embedded-vision-summit-iodice)
114*c217d954SCole Faust
115*c217d954SCole Faust<br>
116*c217d954SCole Faust
117*c217d954SCole Faust## Experimental builds
118*c217d954SCole Faust
119*c217d954SCole Faust**⚠ Important** Bazel and CMake builds are experimental CPU only builds, please see the [documentation](https://arm-software.github.io/ComputeLibrary/v23.02.1/how_to_build.xhtml) for more details.
120*c217d954SCole Faust
121*c217d954SCole Faust<br>
122*c217d954SCole Faust
123*c217d954SCole Faust## How to contribute
124*c217d954SCole Faust
125*c217d954SCole FaustContributions 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://arm-software.github.io/ComputeLibrary/v23.02.1/contribution_guidelines.xhtml).
126*c217d954SCole Faust
127*c217d954SCole Faust### Developer Certificate of Origin (DCO)
128*c217d954SCole FaustBefore 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/)
129*c217d954SCole Faust
130*c217d954SCole FaustTo indicate that you agree to the the terms of the DCO, you "sign off" your contribution by adding a line with your name and e-mail address to every git commit message:
131*c217d954SCole Faust
132*c217d954SCole Faust```Signed-off-by: John Doe <[email protected]>```
133*c217d954SCole Faust
134*c217d954SCole FaustYou must use your real name, no pseudonyms or anonymous contributions are accepted.
135*c217d954SCole Faust
136*c217d954SCole Faust### Public mailing list
137*c217d954SCole FaustFor technical discussion, the ComputeLibrary project has a public mailing list: [email protected]
138*c217d954SCole FaustThe list is open to anyone inside or outside of Arm to self subscribe.  In order to subscribe, please visit the following website:
139*c217d954SCole Fausthttps://lists.linaro.org/mailman3/lists/acl-dev.lists.linaro.org/
140*c217d954SCole Faust
141*c217d954SCole Faust<br>
142*c217d954SCole Faust
143*c217d954SCole Faust## License and Contributions
144*c217d954SCole Faust
145*c217d954SCole FaustThe software is provided under MIT license. Contributions to this project are accepted under the same license.
146*c217d954SCole Faust
147*c217d954SCole Faust### Other Projects
148*c217d954SCole FaustThis project contains code from other projects as listed below. The original license text is included in those source files.
149*c217d954SCole Faust
150*c217d954SCole Faust* The OpenCL header library is licensed under Apache License, Version 2.0, which is a permissive license compatible with MIT license.
151*c217d954SCole Faust
152*c217d954SCole Faust* The half library is licensed under MIT license.
153*c217d954SCole Faust
154*c217d954SCole Faust* The libnpy library is licensed under MIT license.
155*c217d954SCole Faust
156*c217d954SCole Faust* The stb image library is either licensed under MIT license or is in Public Domain. It is used by this project under the terms of MIT license.
157*c217d954SCole Faust
158*c217d954SCole Faust<br>
159*c217d954SCole Faust
160*c217d954SCole Faust## Trademarks and Copyrights
161*c217d954SCole Faust
162*c217d954SCole FaustAndroid is a trademark of Google LLC.
163*c217d954SCole Faust
164*c217d954SCole FaustArm, Cortex, Mali and Neon are registered trademarks or trademarks of Arm Limited (or its subsidiaries) in the US and/or elsewhere.
165*c217d954SCole Faust
166*c217d954SCole FaustBazel is a trademark of Google LLC., registered in the U.S. and other
167*c217d954SCole Faustcountries.
168*c217d954SCole Faust
169*c217d954SCole FaustCMake is a trademark of Kitware, Inc., registered in the U.S. and other
170*c217d954SCole Faustcountries.
171*c217d954SCole Faust
172*c217d954SCole FaustLinux® is the registered trademark of Linus Torvalds in the U.S. and other countries.
173*c217d954SCole Faust
174*c217d954SCole FaustMac and macOS are trademarks of Apple Inc., registered in the U.S. and other
175*c217d954SCole Faustcountries.
176*c217d954SCole Faust
177*c217d954SCole FaustTizen is a registered trademark of The Linux Foundation.
178*c217d954SCole Faust
179