使用采用 Android* OS 的英特尔® 集成性能基元

本教程介绍了如何使用英特尔® IPP 设置 Android* OS 应用。该库可提供多种功能,可让您将重心放在应用的开发而非特定处理器细节上。它们是面向英特尔处理器(包括英特尔® 凌动™、酷睿™ 和至强™)的通用接口,但是它们可以在任何支持英特尔® SIMD 流指令扩展 2(Intel® SSE2) 或更新的指令集的处理器上使用。本教程旨在通过示范如何设置一个简单示例帮助您了解如何在面向 Android* 的 Beacon Mountain 开发环境中使用英特尔® IPP。

您可以在 Beacon Mountain 中预览英特尔® IPP 的功能。该软件包中包含了开发 Android* 软件的主要组件。它非常适合普通的 Android* 开发,但是它绑定了其他工具,如英特尔® IPP、 英特尔® 线程构建模块 (TBB) 和  英特尔® 图形性能分析器 (GPA),而且需要具备一些前提条件,如 Android* 网络开发套件(NDK),以便利用该工具套件的性能和功耗优势简化移动应用的开发。 在您运行本文的“hello world”应用后,切换到 IPP 库中的各种功能将会非常简单。

入门步骤如下所示:

1. 启动 Eclipse

点击 “Eclipse for Android ADT”图标,启动开发环境。

Android* ADT 快捷方式

2. 启用 Android* NDK

IPP 可通过 Android* 原生开发套件(NDK)来访问。 也就是说,IPP 需要通过 C/C++(和在 Windows*、Linux* 和 OSX* 中比较类似)来调用,而非直接通过 Java 调用。 Eclipse 环境支持原生开发,但是您必须确保 NDK 可用且 Eclipse 安装了其位置。 执行该操作的位置位于“Preferences”下的 “Window”菜单。

设置 NDK 位置

如果尚未填入 NDK 安装位置,请添加。 下列是 Beacon Mountain 默认设置。

设置 NDK 位置 2

3. 创建 HelloIPP 项目

下一步是创建新的 HelloIPP 项目。 名称需区分大小写。 为了与该示例中的代码匹配,需要按照下列方式填写名称:

创建 HelloIPP 项目

该活动也称为 HelloIPP,因此,请同样确保它使用了正确的名称和字体创建。

创建 HelloIPP 项目 2

4. 向 HelloIPP 项目中添加原生支持

虽然 Eclipse 环境本身的设置能够启用 NDK 编程(见步骤 2),但是您仍须在项目中添加原生支持。 通过右击 Eclipse Package Explorer 中的 HelloIPP 项目,您可以看到执行该操作的选项,然后点击 “Android Tools->Add Native Support”。 这将会自动执行对项目的所有变更,以支持在 C/C++ 中编写 Java 原生接口(JNI)功能。

在项目中添加原生支持

5. 将文件复制到 Eclipse* 工作区

现在,您可将示例文件和 IPP 预览复制到 Eclipse 工作区中的 HelloIPP 项目 jni 文件夹。 首先,删除该目录自动生成的内容。 您可从两个位置复制文件: 1)示例来源(如下所示)和 2) Beacon Mountain IPP 目录(默认 c:/Intel/BeaconMountain/IPP)。  

HelloIPP 示例的源代码如下:helloippexamplecode.zip

HelloIPP.java 主文件也应复制到 workspace/HelloIPP/src/intel/example/HelloIPP。 这将会替换该目录下已经自动生成的文件。

6. 运行应用

现在,您可以启动应用。 为了获得最佳性能,请在使用英特尔凌动 (x86) CPU/ABI 的 Android 虚拟设备(AVD)模拟器或基于英特尔硬件的 Android* 设备上运行。 此时,您应看到与下列输出类似的内容。

Android 模拟器视图

该输出是 IPP ippGetLibVersion 功能返回的主要和次要版本编号。

 

如何从 Beacon Mountain 英特尔® IPP 预览图切换至 IPP 库中的各种功能

Android* 应用中可能使用了 32 位非线程化静态 Linux* 功能。 如果您有 Intel® IPP for Linux* 的许可,请将静态库文件(扩展名为 .a)以及 Linux 安装中扩展名为 .h 的文件复制到您的主机。 随后,这些文件将添加至 Eclipse* 项目工作区的 JNI 文件夹而非预览文件,如下所示。

工作区 JNI 内容

注: 您无需添加所有库,只需添加您的项目要使用的文件。 如果不需要一个域中包括的某个文件,仅需在 ipp.h 中将其注释掉即可。

与面向 Linux* 的 IPP 中的文件成功编译后,您将会看到与使用预览构建时相同的输出。

总结

本文简要介绍了如何开始使用面向 Android* 应用的 IPP。 它包括以您自己的代码访问 IPP 功能的性能和功耗优势的所有要素。 现在,调用一个功能的所有要素都已准备就绪,您可以轻松扩展至 IPP 预览中的其他功能和 IPP 库中的其他广泛功能。

有关编译器优化的更完整信息,请参阅优化通知