ARM Releases Ne10: An Open Source Library with NEON Optimized Functions
The Advanced SIMD extension (aka NEON or “MPE” Media Processing Engine) is a combined 64- and 128-bit single instruction multiple data (SIMD) instruction set that provides standardized acceleration for media and signal processing applications for ARM Cortex A (ARMv7) processors and the goal of these instructions is similar to MMX, SSE and 3DNow! extensions for x86 processors.
Starting early 2011, ARM has been working internally on a project codenamed Snappy to develop common functions accelerated by NEON. They have now released the first version of Snappy, now called the Ne10 library, which is available on GitHub at https://github.com/projectNe10/Ne10 .
The code has been developed in C and Assembler and tested on Ubuntu on ARM (Linaro). A Makefile is also included to build it for Android (AOSP). The current functions include vector and matrix operations accelerated by NEON instructions.
Since the library is open source, ARM hopes developers to make use of the Ne10 library in their open source packages, add new functions and port the Ne10 libraries to other operating systems.
In the video below Rod Crawford, Principal Engineer at ARM, explains why they started the NE10 Project, what can be done with it, and what’s next for the project.
If you would like to contribute to the project, you can join the community at www.ProjectNe10.org.
Finally, you may also want to see the performance improvement brought by NEON instructions on a real project (JPEG Decoding) by reading “Faster JPEG decoding on ARM with libjpeg-turbo and NEON Instructions” blog post.