2012-03-02 21 views
9

Ciertas cargas de trabajo de tipo DSP parecen mostrar una mejora de rendimiento muy significativa en los procesadores Intel x86 x86_64, cuando se vinculan con la biblioteca Intel IPP.¿Hay algún equivalente ARM de Intel IPP?

¿Se pregunta si hay algo similar en el lado de ARM? Especialmente, eso podría funcionar en ARM9, ARM11 y Cortex-A8/A9 (no necesariamente con el mismo nivel de aumento de rendimiento).

Finalmente, esta pregunta siguiente, puede no ser correcta/aceptable aquí, entonces mods pls ser amable dejar un comentario y puedo editarlo.

He intentado leer el Acuerdo de licencia de IPP, pero no está claro si la licencia comercial de IPP en Linux, que se vende por 199 dólares + impuestos, da derecho a una sola copia personal (pero posiblemente para uso comercial)) de la biblioteca, o puede vincular su aplicación a esta biblioteca y venderla con fines comerciales? ¿O necesita un tipo diferente de licencia? No se pudo encontrar un lugar en el sitio de Intel para hacer esta pregunta (¡nada parecido a las ventas de contacto)!

Respuesta

6

Existen varias respuestas a su pregunta, según cómo la mire.

Intel IPP es una biblioteca con muchas funciones precocinadas para realizar tareas comunes como Fast-Fourier-Transforms y demás. hay bibliotecas específicas en la comunidad de código abierto que haga lo mismo, a ver:

y muchos otros. No todas estas bibliotecas vienen con optimizaciones para los distintos núcleos ARM.

El segundo aspecto de su pregunta es por qué quiere algo que funcione en núcleos de ARM significativamente diferentes. En los procesadores familiares Cortex A, tiene las instrucciones (opcionales) ARM NEON SIMD que (como MMX/SSE/AltiVec) pueden tomar un conjunto de datos a la vez y aplicarle varias operaciones. Esto reduce la cantidad de instrucciones necesarias para procesar una cantidad de datos. La familia ARM11xx tiene algo similar pero mucho más restringido llamado VFP3. La familia ARM9xx realmente carece de este tipo de optimizaciones. Aparte de eso, la arquitectura ARM tiene Thumb y Thumb2 que pueden dar como resultado un código más pequeño y más rápido.

El resultado final es que las bibliotecas optimizadas que realmente se ejecutan en una multitud de núcleos ARM, necesitarán tener varias implementaciones del mismo algoritmo para diferentes cargas de trabajo. Esto aumentará el tamaño de la biblioteca. ¿Estás dispuesto a pagar ese precio?

4

En iOS existe el marco de aceleración que está optimizado para ARM usando SIMD donde esté disponible. Consulte la documentación de Apple here.

+0

interesante. Nunca escuché de eso. Definitivamente merece ser mirado. –

8

También hay ARM sponsored proyecto de código abierto Ne10 que inicialmente cubre un pequeño conjunto de funciones de manipulación de matrices de vector flotante y aritmética.

+0

¡Gracias por el consejo! Parece interesante. – icarus74

Cuestiones relacionadas