Creación de aplicaciones para Android* NDK con los Fundamentos integrados del rendimiento Intel®


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

  • Incluya los archivos de encabezado de los Fundamentos integrados del rendimiento Intel® (ipp.h) en los archivos de código fuente.
  • Llame a ippInit() antes de utilizar cualquier otra función de los Fundamentos integrados del rendimiento Intel®. Los Fundamentos integrados del rendimiento Intel® detectan las características del procesador y selecciona la ruta del código de optimización para los procesadores de destino. Antes de llamar a cualquier otra función de los Fundamentos integrados del rendimiento Intel®, llame a ippInit() para inicializar la CPU que despacha a los Fundamentos integrados del rendimiento Intel®.
  • Llame a las funciones de los Fundamentos integrados del rendimiento Intel® en su código fuente C/C++.

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

  • Copie las bibliotecas y los encabezados de los Fundamentos integrados del rendimiento Intel® en la carpeta de su proyecto.
  • Busque las bibliotecas Intel obligatorias para la aplicación: las bibliotecas de los Fundamentos integrados del rendimiento Intel® se categorizan en distintos dominios. Cada dominio tiene su propia biblioteca y algunas bibliotecas de dominios dependen de otras. Cada dominio necesita incluir todas las bibliotecas del dominio y sus dependencias en la línea de vinculación. Consulte el artículo “Intel IPP Library Dependencies” (Dependencias de bibliotecas de los Fundamentos integrados del rendimiento Intel®) para familiarizarse con las bibliotecas requeridas por los Fundamentos integrados del rendimiento Intel®.
  • Agregue las bibliotecas de los Fundamentos integrados del rendimiento Intel® en el archivo de la secuencia de comandos de creación para Android “jni/Android.mk”:
    Declare cada biblioteca de los Fundamentos integrados del rendimiento Intel® como el módulo de la biblioteca pregenerada. Por ejemplo, si la aplicación utiliza las dos bibliotecas de los Fundamentos integrados del rendimiento Intel® "libipps.a" y "libippcore.a", agregue lo siguiente en el archivo:
               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®.

Para obter informações mais completas sobre otimizações do compilador, consulte nosso aviso de otimização.
AnexoTamanho
Arquivo ippaddsample.tgz2.17 KB