Is there any ARM equivalent of Intel IPP?
Asked Answered
P

4

10

Certain DSP type workloads seem to show very significant performance improvement on Intel x86 x86_64 processors, when linked against Intel IPP library.

Wondering if there is something similar on ARM side ? Especially that might work accross ARM9, ARM11 and Cortex-A8/A9's (not necessarily with the same level of performance boost).

Finally, this following question, might not be right/acceptable here, so mods pls be kind to leave a comment and I can edit it out.

I've been trying to read the License Agreement of IPP, but it is not clear if the commercial IPP license on Linux, selling for US$199 + taxes, entitles one to a single personal copy (but for possibly commercial use) of the library, or can one link their application against this library and sell it for commercial gain ? Or does that need a different kind of license ? Couldn't figure out a place on intel site to ask this question (nothing like Contact sales) !

Pylos answered 2/3, 2012 at 4:16 Comment(0)
A
6

There are several answers to your question, depending on how you look at it.

Intel IPP is a library with many pre-cooked functions to do common tasks like fast-fourier-transforms and such. There are specific libraries in the open source community that do the same, look at:

and many others. Not all of these libraries come with optimizations for the various ARM cores.

The second angle to your question is why you want something that works across significantly different ARM cores. On Cortex A family processors, you have the (optional!) ARM NEON SIMD instructions that (like MMX/SSE/AltiVec) can take a set of data at once and apply several operations to it. This reduces the amount of instructions needed to process an amount of data. The ARM11xx family has something similar but much more restricted called VFP3. The ARM9xx family is really lacking this kind of optimizations. Apart from that, the ARM architecture has Thumb and Thumb2 that can result in smaller and faster code.

The end result is that optimized libraries that really run across a multitude of ARM cores, will need to have several implementations of the same algorithm for different workloads. This will increase the library size. Are you willing to pay that price?

Arteriosclerosis answered 2/3, 2012 at 13:18 Comment(0)
C
8

There is also ARM sponsored open source project Ne10 which initially covers a small set of floating-point, vector arithmetic, and matrix manipulation functions.

Contrapose answered 11/9, 2012 at 7:49 Comment(1)
Thanks for the tip-off ! Looks interesting.Pylos
A
6

There are several answers to your question, depending on how you look at it.

Intel IPP is a library with many pre-cooked functions to do common tasks like fast-fourier-transforms and such. There are specific libraries in the open source community that do the same, look at:

and many others. Not all of these libraries come with optimizations for the various ARM cores.

The second angle to your question is why you want something that works across significantly different ARM cores. On Cortex A family processors, you have the (optional!) ARM NEON SIMD instructions that (like MMX/SSE/AltiVec) can take a set of data at once and apply several operations to it. This reduces the amount of instructions needed to process an amount of data. The ARM11xx family has something similar but much more restricted called VFP3. The ARM9xx family is really lacking this kind of optimizations. Apart from that, the ARM architecture has Thumb and Thumb2 that can result in smaller and faster code.

The end result is that optimized libraries that really run across a multitude of ARM cores, will need to have several implementations of the same algorithm for different workloads. This will increase the library size. Are you willing to pay that price?

Arteriosclerosis answered 2/3, 2012 at 13:18 Comment(0)
F
4

On iOS there is the accelerate framework that is optimized for ARM using SIMD where available. See Apple's documentation here.

Fugacity answered 10/9, 2012 at 2:13 Comment(1)
Interesting. Never heard of that. Definitely it deserves to be looked at.Implied
E
1

What about OpenMAX / OpenKode ?

https://en.wikipedia.org/wiki/OpenMAX

https://www.khronos.org/openkode/

I am wondering if anyone tried to reimplement IIPP in OSS (even if just stubbed?)

Extrusion answered 1/9, 2017 at 14:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.