インテル® インテグレーテッド・パフォーマンス・プリミティブ 5.3 Linux* 版 (インテル® 64 アーキテクチャー用)
入門ガイド
目次
API について
インテル® インテグレーテッド・パフォーマンス・プリミティブ (インテル® IPP) の機能と使用方法について、さまざまな方法で学習することができます。
共有ライブラリーへのパスを LD_LIBRARY_PATH 変数に追加する必要があります (下記を参照してください)。また、インテル® IPP の include ファイルと lib ファイルの場所を指定する必要があります。tools/env ディレクトリーにあるシェルスクリプト、ippvarsem64t.sh を実行すると、インテル® IPP の lib 環境変数、include 環境変数および path 環境変数が設定されます。
ヘッダーファイル
インテル® IPP 関数と構造体は、include ディレクトリーのいくつかのヘッダーファイルで定義されます。ipp.h ファイルには、これらすべてが含まれています。上位互換性を確保するため、プログラムでは ipp.h のみをインクルードしてください。
インテル® IPP 関数の呼び出し
次に説明する共有ライブラリー・ディスパッチャーとマージド・スタティック・ライブラリーにより、インテル® IPP 関数の呼び出しはほかの C 関数の呼び出しと同様に簡単に行うことができます。各関数の最適化されたコードが、1 つのエントリーポイントにあります。
インテル ® IPP 関数の詳細は、マニュアルを参照してください。
インテル® IPP 共有ライブラリーとディスパッチャーの使用
インテル® IPP 共有ライブラリーを使用する前に、システム変数 LD_LIBRARY_PATH にライブラリーへのパスを追加する必要があります。例えば、ライブラリーが /opt/intel/ipp/5.3/em64t/sharedlib フォルダーに含まれている場合、次のコマンドを入力します。
インテル® 64 アーキテクチャー・ベースのシステム:
export LD_LIBRARY_PATH=/opt/intel/ipp/5.3/em64t/sharedlib:$LD_LIBRARY_PATH
共有ライブラリー、libipp*em64t.so は "ディスパッチャー" ダイナミック・ライブラリーです。実行時に、共有ライブラリーはプロセッサーを検出して、適切なプロセッサー固有の共有ライブラリーをロードします。自動で適切なバージョンがロードされ使用されるため、コードが実行されるプロセッサーに関係なくインテル® IPP 関数を呼び出すことができます。これらのプロセッサー固有のライブラリーには、*mx.so、*m7.so、*u8.so および *y8.so のように名前が付けられています。ライブラリーはすべて sharedlib ディレクトリーにあります。
注:
適切な libguide.so も PATH 環境変数に含まれている必要があります。IA-32 システムで実行するときは、sharedlib ディレクトリーを含めてください。ほかのバージョンの libguide.so とは互換性がありません。問題がある場合は、PATH にほかのバージョンの libguide.so が含まれていないことを確認してください。
プロセッサー・コード
- y8 - 45nm インテル® Core™2 Duo (開発コード名 Penryn) プロセッサー・ファミリーで動作する 64 ビット・アプリケーション向けに最適化
- u8 - インテル® Core™2 プロセッサーおよびインテル® Xeon® プロセッサー 5100 番台で動作する 64 ビット・アプリケーション向けに最適化
- mx - インテル® 64 ベースの
プラットフォーム向けに C の最適化
- m7 - インテル® 64 ベースの
プラットフォーム向けに最適化
インテル® IPP スタティック・ライブラリーの使用
インテル® IPP には各関数のすべてのインテル® 64 対応プロセッサー・バージョンを含む "マージ" スタティック・ライブラリー・ファイルが含まれています。ダイナミック・ディスパッチャーの場合と同じように、関数が呼び出されると、適切な関数のバージョンが実行されます。ダイナミックのメカニズムほど便利ではありませんが、コードサイズの合計がより小さくなります。
これらのスタティック・ライブラリーを使用するには、lib ディレクトリーの libipp*mergedem64t.a
ファイルにリンクします。詳細は、インテル® IPP リンクサンプル (英語) を参照してください。
インテル® IPP 共有オブジェクト検索ライブラリーの使用
概要
共有オブジェクト検索ライブラリーは、前のセクションで説明したマージド・ライブラリーのディスパッチャーです。インテル® IPP 関数を適用する方法を提供するため、マージド・ライブラリーを使用して呼び出すようにインテル® IPP 関数のエントリーポイントに特別な定義を作成する必要はありません。プロジェクトに共有オブジェクト検索ライブラリーを含めて、ソースコードからインテル® IPP 関数を呼び出すだけです。
また、共有オブジェクト検索ライブラリーにより、エンド・ユーザー・アプリケーションを新しいバージョンのインテル® IPP 関数で自動的に更新することができます。ディスパッチャーにより、インテル® IPP 共有オブジェクト・ディスパッチャー (libipps.so など) の PATH が検索されます。ディスパッチャーがインテル® IPP 共有オブジェクトに新しいバージョンのコードを検出すると、新しい共有オブジェクトからのコードがアプリケーションに組み込まれているコードの代わりに使用されます。そのため、最新のインテル® IPP の最適化や新しいインテル® プロセッサーを利用する際に、開発の手間がいりません。
マージド・ライブラリーと比べると、共有オブジェクト検索ライブラリーには、いくつかの短所があります。共有オブジェクト検索ライブラリーを使用する場合、CPU 固有のコードを除外することはできません。各関数のすべてのプロセッサー・バージョン (IA-32 のみ) がアプリケーションにリンクされます。また、共有オブジェクト検索ライブラリーをカーネルモードで使用することはできません。
ビルドの手順
次の手順に従って、インテル® IPP 共有オブジェクト検索ライブラリーを使用してアプリケーションをビルドします。
- ipp.h ファイル、libippcoreem64t.a ファイル、そして適切な libipp**emergedem64t.a ファイルをプロジェクトとビルドツリーに含めます。
- 注: ippcore 関数を静的にリンクしなければなりません (libippcore.a を使用)。
- 適切な libipp**mergedem64t.a ファイルがビルドツリーにあることを確認します。
- ほかのインテル® IPP 関数を呼び出す前に ippStaticInit() を呼び出します。
- 共有オブジェクト検索機能をオフにする (常に静的にリンクされたコードを使用する) ため、代わりに ippStaticInitBest() を呼び出します。
- ippStaticFree() を呼び出して ippStaticInit() で使用されているリソースを解放し、ippStaticInitBest() 関数を呼び出します。
- アプリケーションのソースコードに必要なインテル® IPP 関数を呼び出します。
インテル® IPP パッケージでは、API の各インテル® IPP 関数のパフォーマンスをテストする "perfsys" ツールが提供されています。インテル® 64 アーキテクチャーでのパフォーマンス・テスト・ツールの実行に関する詳細は、.\tools\perfsys\ ディレクトリーにある readme.htm を参照してください。
Intel、インテル、Intel ロゴ、Intel Core、Xeon は、アメリカ合衆国およびその他の国における Intel Corporation の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
© 2007 Intel Corporation. 無断での引用、転載を禁じます。