Creación de aplicaciones para Android* NDK con los Fundamentos integrados del rendimiento Intel®
miércoles, febrero 12, 2014 at 7:21AM
Abraham

Nota: Este tutorial ha sido donado a la comunidad de javaHispano por Intel. Intel espera que en el futuro sus procesadores incrementen considerablemente su presencia en los terminales móviles Android, por ello ha creído que este artículo sería interesante para nuestra comunidad. El artículo puede encontrarse en la web de Intel aquí. Podéis encontrar el primer artículo de la serie aquí.

Resumen

Los Fundamentos integrados del rendimiento Intel® proporcionan funciones de módulos altamente optimizados para procesamiento de imágenes, procesamiento de señales, matemática de vectores y computaciones en matriz pequeña. Varios dominios de los Fundamentos integrados del rendimiento Intel® contienen las funciones afinadas manualmente para el procesador Intel® Atom™ al aprovechar las instrucciones de Intel® Streaming SIMD Extensions (Intel® SSE). Las bibliotecas Linux* no subprocesadas y estáticas de los Fundamentos integrados del rendimiento Intel® ahora son compatibles con el sistema operativo Android*, y se pueden utilizar con las aplicaciones para Android.

Este artículo ofrece una introducción a la manera de agregar funciones de los Fundamentos integrados del rendimiento Intel® dentro las aplicaciones del NDK para Android. Los Fundamentos integrados del rendimiento Intel® proporcionan optimizaciones específicas para el procesador y solo se pueden vincular con código C/C++ para Android nativo. Para utilizar los Fundamentos integrados del rendimiento Intel® con su aplicación, necesita incluir las funciones de éstos en su código fuente y también necesita agregar las bibliotecas de éstos en la línea de comandos de creación.

Uso de los Fundamentos integrados del rendimiento Intel®

1. Adición de las funciones de los Fundamentos integrados del rendimiento Intel® en el código fuente

2. Inclusión de las bibliotecas de los Fundamentos integrados del rendimiento Intel® en los archivos de creación del NDK para Android

               include $(CLEAR_VARS)
               LOCAL_MODULE := ipps
               LOCAL_SRC_FILES := ../ipp/lib/ia32/libipps.a
               include $(PREBUILT_STATIC_LIBRARY)

               include $(CLEAR_VARS)
               LOCAL_MODULE := ippcore
               LOCAL_SRC_FILES := ../ipp/lib/ia32/libippcore.a
               include $(PREBUILT_STATIC_LIBRARY) 

Añada la ruta al encabezado y las bibliotecas de los Fundamentos integrados del rendimiento Intel® en los módulos que llaman a las funciones de los Fundamentos integrados del rendimiento Intel®:

               include $(CLEAR_VARS)
               LOCAL_MODULE := IppAdd
               LOCAL_SRC_FILES := IppAdd.c
               LOCAL_STATIC_LIBRARIES := ipps ippcore
               LOCAL_C_INCLUDES := ./ipp/include
               include $(BUILT_SHARED_LIBRARY)

Creación de un ejemplo de código

A continuación se incluye un ejemplo simple que muestra el uso de los Fundamentos integrados del rendimiento Intel® en el código nativo para Android. El código utiliza la función ippsAdd_32f() de los Fundamentos integrados del rendimiento Intel® para agregar datos en dos matrices.

Para revisar el uso de los Fundamentos integrados del rendimiento Intel® en el código:

  1. Descargue el ejemplo de código y desempaquételo en la carpeta de su proyecto (<projectdir>).
  2. Aprenda el uso de los Fundamentos integrados del rendimiento Intel® en los archivos de código fuente: El archivo "jni/IppAdd.c" proporciona la implementación de una función nativa NativeIppAdd(). La función llama a la función ippsAdd_32f() de los Fundamentos integrados del rendimiento Intel®. El archivo "src/com/example/testippadd/ArrayAddActivity.java" llama a la función nativa "NativeIppAdd()" mediante JNI.
  3. Revise el archivo "jni/Android.mk". Este archivo agrega las bibliotecas requeridas de los Fundamentos integrados del rendimiento Intel® a la secuencia de comandos de compilación. El ejemplo utiliza la función ippsAdd_32f(), la cual pertenece al dominio de procesamiento de señales de los Fundamentos integrados del rendimiento Intel®. La función depende de las bibliotecas "libipps.a" y "libippcore.a". El archivo "Android.mk" crea dos bibliotecas pregeneradas para ellas.

Puede crear el ejemplo de código ya sea con las herramientas de comandos SDK y NDK o con la ayuda de Eclipse* IDE

Creación del ejemplo desde una línea de comandos

         >cd <projectdir> 
         ><ndkdir>/ndk-build 
         >cd <projectdir>
         >android update project -p . -s
         >ant debug
         >adb install bin/ArrayAddActivity-debug.apk 
  1. Copie los encabezados y bibliotecas de los Fundamentos integrados del rendimiento Intel® en la carpeta de su proyecto (por ejemplo: <projectdir>/ipp).
  2. Ejecute la secuencia de comandos "ndk-build" desde el directorio de su proyecto para crear el código nativo
  3. Cree el paquete para Android e instale la aplicación

Creación del ejemplo por Eclipse* IDE

         >cd <projectdir>
         ><ndkdir>/ndk-build 
  1. Copie los encabezados y bibliotecas de los Fundamentos integrados del rendimiento Intel® en la carpeta de su proyecto (por ejemplo: <projectdir>/ipp).
  2. En Eclipse, haga clic en File (Archivo) >> New (Nuevo) >> Project... (Proyecto) >> Android>> Android Project from Existing Code (Proyecto para Android desde código existente). En "Root Directory" (Directorio raíz), seleccione la carpeta de ejemplo de código y, a continuación, haga clic en Finish (Finalizar).
  3. Ejecute la secuencia de comandos 'ndk-build' desde el directorio del proyecto para crear el código nativo:
  4. Cree la aplicación en Eclipse IDE y despliegue el archivo .apk.

Resumen
Este artículo ofrece una introducción al uso de los Fundamentos integrados del rendimiento Intel® con las aplicaciones nativas para Android. Consulte información adicional sobre las funciones de los Fundamentos integrados del rendimiento Intel® en el manual de los Fundamentos integrados del rendimiento Intel®.

Article originally appeared on javaHispano (http://www.javahispano.org/).
See website for complete article licensing information.