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  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[](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://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://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://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-neon.tar.gz) [](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-cl.tar.gz) [](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://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-neon.tar.gz) [](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-cl.tar.gz) [](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://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-armv7a-neon.tar.gz) [](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-armv7a-cl.tar.gz) [](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://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-android-arm64-v8a-neon.tar.gz) [](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-android-arm64-v8a-cl.tar.gz) [](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://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-neon.tar.gz) [](https://github.com/ARM-software/ComputeLibrary/releases/download/v23.02.1/arm_compute-v23.02.1-bin-linux-arm64-v8a-cl.tar.gz) [](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://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://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://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://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://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://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://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