Создание приложений с помощью комплекта Android* NDK и библиотек Intel® Integrated Performance Primitives


Библиотеки Intel® Integrated Performance Primitives содержат высоко оптимизированные функции компонентов для обработки изображений, сигналов, данных векторной математики и небольших матричных вычислений. Несколько доменов библиотек Intel Integrated Performance Primitives содержат оптимизированные вручную функции для процессоров Intel® Atom™ и используют при этом команды Intel® Streaming SIMD Extensions. Статическая беспотоковая библиотека Intel Integrated Performance Primitives теперь поддерживает ОС Android* и может использоваться с приложениями для этой платформы.

В этой статье представлен обзор добавления функций библиотек Intel Integrated Performance Primitives в приложения, создаваемые на основе комплекта Android NDK. Библиотеки Intel Integrated Performance Primitives могут использоваться для оптимизации работы конкретных процессоров, и только они могут быть привязаны к оригинальному коду C/C++ ОС Android. Для использования библиотек Intel Integrated Performance Primitives с вашим приложением необходимо включить их функции в исходный код, а также в командную строку во время сборки.

Использование библиотек Intel Integrated Performance Primitives

1. Добавление функций Intel Integrated Performance Primitives в исходный код

  • Включите файлы заголовков Intel Integrated Performance Primitives (ipp.h) в файлы исходного кода.
  • Перед использованием любых других функций библиотек Intel Integrated Performance Primitives вызовите функцию ippInit(). Intel Integrated Performance Primitives обнаружит функции процессора и выберет вариант оптимизации кода для целевых процессоров. Перед вызовом любых других функций Intel Integrated Performance Primitives также вызовите ippInit() для инициализации операций координации работы процессора.
  • Вызовите функции Intel Integrated Performance Primitives в своем исходном коде C/C++.

2. Включение библиотек Intel Integrated Performance Primitives в файлы сборки комплекта Android NDK

  • Скопируйте библиотеки Intel Integrated Performance Primitives и заголовки в папку проекта.
  • Выберите библиотеки Intel, необходимые для приложения: библиотеки Intel Integrated Performance Primitives подразделяются на различные домены. Каждый домен имеет собственную библиотеку, и некоторые библиотеки домена зависит от других библиотек. Домен должен содержать в строке связей все библиотеки и их зависимости. См. статью “Intel IPP Library Dependencies” (Зависимости библиотек Intel Integrated Performance Primitives), чтобы узнать, какие библиотеки необходимы.
  • Добавьте библиотеки Intel Integrated Performance Primitives в файл сценария сборки Android, “jni/Android.mk”:
    Объявите каждую библиотеку Intel Integrated Performance Primitives как предварительно подготовленный двоичный модуль. Например, если приложение использует две библиотеки Intel Integrated Performance Primitives, "libipps.a" и "libippcore.a", добавьте следующее в файл:
               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) 

Добавьте путь заголовка и библиотеки Intel Integrated Performance Primitives в модули, вызывающие функции Intel Integrated Performance Primitives:

               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)

Сборка одного примера кода

В следующем простом примере представлено использование Intel Integrated Performance Primitives в оригинальном коде Android. Код использует функцию Intel Integrated Performance Primitives ippsAdd_32f() для добавления данных в два массива.

Для проверки использования Intel Integrated Performance Primitives в коде:

  1. Загрузите пример кода и распакуйте его в папку проекта (<каталог_проекта>).
  2. Рассмотрите использование Intel Integrated Performance Primitives в исходных файлах: в файле "jni/IppAdd.c" представлена реализация одной оригинальной функции NativeIppAdd(). Эта функция вызывает функцию Intel Integrated Performance Primitives ippsAdd_32f(). Файл "src/com/example/testippadd/ArrayAddActivity.java" "вызывает оригинальную функцию "NativeIppAdd()" с помощью JNI.
  3. Проверьте файл "jni/Android.mk". Этот файл добавляет необходимые библиотеки Intel Integrated Performance Primitives в сценарий сборки. В примере используется функция ippsAdd_32f(), которая принадлежит к домену обработки сигналов Intel Integrated Performance Primitives. Эта функция зависима от библиотек "libipps.a" и "libippcore.a". Файл "Android.mk" создает для них две подготовленные библиотеки.

Вы можете выполнить сборку примера кода из командной строки комплектов SDK и NDK или с помощью Eclipse* IDE.

Сборка примера из командной строки

         >cd <projectdir> 
         ><ndkdir>/ndk-build 
         >cd <projectdir>
         >android update project -p . -s
         >ant debug
         >adb install bin/ArrayAddActivity-debug.apk 
  1. Скопируйте заголовки Intel Integrated Performance Primitives и библиотеки в папку вашего проекта (например, <каталог_проекта>/ipp).
  2. Запустите сценарий "ndk-build" из каталога проекта для сборки оригинального кода.
  3. Создайте пакет Android и установите приложение.

Сборка примера с помощью Eclipse* IDE

         >cd <projectdir>
         ><ndkdir>/ndk-build 
  1. Скопируйте заголовки Intel Integrated Performance Primitives и библиотеки в папку вашего проекта (например, <каталог_проекта>/ipp).
  2. В системе Eclipse щелкните File >> New >> Project... >> Android >> Android Project from Existing Code. В "корневом каталоге" выберите папку, где находится пример кода и нажмите Finish.
  3. Запустите сценарий "ndk-build" в каталоге проекта для сборки оригинального кода:
  4. Выполните сборку приложения в Eclipse IDE и установите файл .apk.

Заключение
В этой статье представлен краткий обзор использования библиотек Intel Integrated Performance Primitives с оригинальными приложениями Android. Для получения дополнительной информации о функциях Intel Integrated Performance Primitives см. руководство по Intel Integrated Performance Primitives.

Для получения подробной информации о возможностях оптимизации компилятора обратитесь к нашему Уведомлению об оптимизации.
Теги: