Android* でインテル® インテグレーテッド・パフォーマンス・プリミティブ (インテル® IPP) を使用する

同カテゴリーの次の記事

サンプルコード: データ暗号化アプリケーション

この記事は、インテル® デベロッパー・ゾーンに掲載されている「Using Intel® Integrated Performance Primitives with Android* OS」の日本語参考訳です。


このチュートリアルでは、Android* アプリケーションでインテル® インテグレーテッド・パフォーマンス・プリミティブ (インテル® IPP) を使用する方法を説明します。インテル® IPP のさまざまな関数を利用することで、プロセッサー固有の詳細ではなく、アプリケーションの開発に集中することができます。インテル® IPP は、インテル® Atom™ プロセッサー、インテル® Core™ プロセッサー、インテル® Xeon® プロセッサーを含む、インテル® プロセッサー向けにチューニングされた一般的なインターフェイス実装であり、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) 以降の命令セットをサポートするプロセッサーで利用できます。このチュートリアルの目的は、簡単なサンプルを通して、Android* 向け Beacon Mountain 開発環境でインテル® IPP を使用する方法を示すことです。

インテル® IPP プレビュー版は Beacon Mountain パッケージに含まれています。このパッケージには、Android* ソフトウェア開発向けの主要コンポーネントがまとめられています。一般的な Android* 開発向けのコンポーネントだけでなく、インテル® IPP、インテル® スレッディング・ビルディング・ブロック (インテル® TBB)、インテル® グラフィックス・パフォーマンス・アナライザー (インテル® GPA) などのツールや Android* NDK などの必須コンポーネントも含まれており、パフォーマンスと電力効率に優れたモバイル・アプリケーションを効率良く開発することができます。インテル® IPP プレビュー版を使用してサンプル・アプリケーションの実行に成功したら、インテル® IPP 製品版のライブラリーには簡単に切り替えられます。

以下に手順を示します。

1. Eclipse* を起動する

[Eclipse for Android ADT] アイコンをクリックして、開発環境を起動します。

Android* ADT ショートカット

2. Android* NDK を有効にする

Android* Native Development Kit (NDK) を介してインテル® IPP にアクセスします。つまり、Java* から直接ではなく、(Windows*、Linux*、OSX* の場合と同様に) C/C++ を利用してインテル® IPP を呼び出します。Eclipse* 環境ではネイティブ開発がサポートされます。NDK が利用可能で、Eclipse* の [Window] > [Preferences] で NDK の場所が設定されていることを確認します。

NDK の場所を設定するためのメニュー

まだ設定されていない場合は、NDK の場所を指定します。以下は、Beacon Mountain のデフォルトの NDK のインストール場所です。

NDK の場所の設定

3. HelloIPP プロジェクトを作成する

新しい HelloIPP プロジェクトを作成します。名前は、大文字と小文字が区別されます。このサンプルコードと同じにする場合は、以下のように入力します。

HelloIPP プロジェクトの作成

アクティビティー名も HelloIPP にします。大文字と小文字に注意して正確に入力してください。

HelloIPP プロジェクトの作成

4. HelloIPP プロジェクトにネイティブサポートを追加する

ステップ 2 により Eclipse* 環境で NDK プログラミングが可能になりましたが、プロジェクトにネイティブサポートを追加する必要があります。Eclipse の [Package Explorer] で HelloIPP プロジェクトを右クリックして、[Android Tools] > [Add Native Support] を選択します。これにより、C/C++ で JNI (Java* Native Interface) 関数を使用するのに必要なすべての変更が自動的にプロジェクトに適用されます。

プロジェクトへのネイティブサポートの追加

5. Eclipse* ワークスペースにファイルをコピーする

まず、Eclipse* ワークスペースの HelloIPP プロジェクトの jni フォルダー内にある自動生成されたコンテンツを削除します。その後、このフォルダーに 1) サンプルソース (以下を参照) と 2) Beacon Mountain の IPP ディレクトリー (デフォルトでは c:/Intel/BeaconMountain/IPP) をコピーします。

HelloIPP サンプルのソースコード (helloippexamplecode.zip) はこちらからダウンロードできます。

ワークスペースの JNI コンテンツ

メインの HelloIPP.java ファイルも workspace/HelloIPP/src/intel/example/HelloIPP にコピーします。ディレクトリー内に自動生成されたこのファイルがある場合は上書きされます。

6. アプリケーションを実行する

これで、アプリケーションを実行する準備ができました。最良の結果を得るためには、Intel Atom (x86) CPU/ABI を使用する Android* Virtual Device (AVD) エミュレーターか、インテル® プロセッサー・ベースの Android* デバイスでアプリケーションを実行すると良いでしょう。次のような出力結果が表示されます。

Android* エミュレーターのビュー

このサンプル・アプリケーションは、IPP ippGetLibVersion 関数によって返されるメジャーバージョンとマイナーバージョンを出力します。

Beacon Mountain のインテル® IPP プレビュー版からインテル® IPP 製品版 (すべての機能を利用可能) に変更する方法 

Android* アプリケーションでは、32 ビットのスレッド化されていないスタティック Linux* 関数を利用できます。インテル® IPP Linux* 版のライセンスをお持ちの場合は、スタティック・ライブラリー・ファイル (.a) とインクルード・ファイル (.h) を、インテル® IPP Linux* 版のインストール・フォルダーからホストマシンへコピーします。   そして、以下のように、これらのファイルを Eclipse* プロジェクト・ワークスペースの JNI フォルダーに追加します。

インテル® IPP を含むワークスペースの JNI コンテンツ

注: プロジェクトで使用するライブラリーとインクルード・ファイルのみ追加します。すべてを追加する必要はありません。不要なドメインのインクルード・ファイルは、ipp.h でコメントアウトできます。

インテル® IPP Linux* 版からファイルをコピーした後にビルドしたアプリケーションを実行すると、インテル® IPP プレビュー版と同じ出力結果が表示されます。

まとめ

このチュートリアルでは、Android* アプリケーションでインテル® IPP を使用する方法を紹介しました。ここで紹介したサンプルを参考にして、インテル® IPP 関数をご自身のコードで利用し、パフォーマンスと電力効率を向上してください。1 つの関数の呼び出し方法が分かれば、それをほかのインテル® IPP プレビュー版の関数、そしてインテル® IPP 製品版の広範なライブラリーに簡単に応用できるでしょう。

ここで使用したサンプルコードは、インテル・サンプル・ソース・コード使用許諾契約書 (英語) の下で公開されています。

サンプルコードのダウンロード

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事