インテル(R) インテグレーテッド・パフォーマンス・プリミティブ (インテル(R) IPP) 5.0 Linux* 版 (インテル(R) エクステンデッド・メモリ 64 テクノロジ (インテル(R) EM64T) 対応のインテル(R) Xeon(R) プロセッサ用)
入門ガイド
目次
API について
インテル(R) インテグレーテッド・パフォーマンス・プリミティブ (インテル(R) 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.0/em64t/sharedlib フォルダに含まれている場合、次のコマンドを入力します。
インテル EM64T ベース・システム
export LD_LIBRARY_PATH=/opt/intel/ipp/5.0/em64t/sharedlib:$LD_LIBRARY_PATH
共有ライブラリ、libipp*em64t.so は "ディスパッチャ" ダイナミック・ライブラリです。実行時に、共有ライブラリはプロセッサを検出して、適切なプロセッサ固有の共有ライブラリをロードします。自動で適切なバージョンがロードされ使用されるため、コードが実行されるプロセッサに関係なくインテル IPP 関数を呼び出すことができます。これらのプロセッサ固有のライブラリには、*mx.so および *m7.so のように名前が付けられています。ライブラリはすべて sharedlib ディレクトリにあります。
注: 適切な libguide.so も PATH 環境変数に含まれている必要があります。インテル EM64T 対応のシステムで実行するときは、sharedlib ディレクトリを含めてください。ほかのバージョンの libguide.so とは互換性がありません。問題がある場合は、PATH にほかのバージョンの libguide.so が含まれていないことを確認してください。
インテル IPP 5.0 は OpenMP* 2.0 を使用してスレッドを実装します。スレッド数とスレッド動作を制御するには、OpenMP 環境変数と API を使用してください。例えば、OMP_NUM_THREADS、omp_set_num_threads(int num_threads)、OMP_SET_NESTED などを使用します。該当する OpenMP 関数呼び出しと環境変数については次のドキュメントのセクション 3 と 4 で説明されています。
http://www.openmp.org/drupal/mp-documents/cspec20.pdf (英語)
プロセッサ・コード
- mx - インテル EM64T 対応のインテル Xeon プロセッサ向けに C 最適化
- m7 - インテル EM64T 対応のインテル Xeon プロセッサ向けに最適化
インテル IPP スタティック・ライブラリの使用
インテル IPP には各関数のすべての EM64T プロセッサ・バージョンを含む "マージ" スタティック・ライブラリ・ファイルが含まれています。ダイナミック・ディスパッチャの場合と同じように、関数が呼び出されると、適切な関数のバージョンが実行されます。ダイナミックのメカニズムほど便利ではありませんが、コードサイズの合計がより小さくなります。
これらのスタティック・ライブラリを使用するには、lib ディレクトリの libipp*mergedem64t.a
ファイルにリンクします。
インテル IPP パフォーマンス・ベンチマーク・ツールの使用
インテル IPP パッケージでは、API の各インテル IPP 関数のパフォーマンスをテストする "perfsys" ツールが提供されています。
インテル EM64T 対応のインテル Xeon プロセッサでのパフォーマンス・テスト・ツールの実行についての詳細は、.\tools\perfsys\ ディレクトリにある readme.htm を参照してください。
インテル IPP 共有オブジェクト検索ライブラリの使用
概要
共有オブジェクト検索ライブラリは、前のセクションで説明したマージ・ライブラリのディスパッチャです。インテル IPP 関数を適用する方法を提供するため、マージ・ライブラリを使用して呼び出すようにインテル IPP 関数のエントリポイントに特別な定義を作成する必要はありません。プロジェクトに共有オブジェクト検索ライブラリを含めて、ソースコードからインテル IPP 関数を呼び出すだけです。
また、共有オブジェクト検索ライブラリにより、エンドユーザ・アプリケーションを新しいバージョンのインテル IPP 関数で自動的に更新することができます。ディスパッチャにより、インテル IPP 共有オブジェクト・ディスパッチャ (libipps.so など) の PATH が検索されます。ディスパッチャがインテル IPP 共有オブジェクトに新しいバージョンのコードを検出すると、新しい共有オブジェクトからのコードがアプリケーションに組み込まれているコードの代わりに使用されます。そのため、最新のインテル IPP の最適化や新しいインテル(R) プロセッサを利用する際に、開発の手間がいりません。
マージ・ライブラリと比べると、共有オブジェクト検索ライブラリには、いくつかの短所があります。共有オブジェクト検索ライブラリを使用する場合、CPU 固有のコードを除外することはできません。各関数のすべてのプロセッサ・バージョンがアプリケーションにリンクされます。また、共有オブジェクト検索ライブラリをカーネルモードで使用することはできません。
ビルドの手順
次の手順に従って、インテル IPP 共有オブジェクト検索ライブラリを使用してアプリケーションをビルドします。
-
ipp.h ファイル、libippcoreem64t.a ファイル、そして適切な libipp**emergedem64t.a ファイルをプロジェクトとビルドツリーに含めます。
-
注: ippcore 関数を静的にリンクしなければなりません (libippcore.a を使用)。
-
適切な libipp**mergedem64t.a ファイルがビルドツリーにあることを確認します。
-
ほかのインテル IPP 関数を呼び出す前に ippStaticInit() を呼び出します。
-
共有オブジェクト検索機能をオフにする (常に静的にリンクされたコードを使用する) ため、代わりに ippStaticInitBest() を呼び出します。
-
ippStaticFree() を呼び出して ippStaticInit() で使用されているリソースを解放し、ippStaticInitBest() 関数を呼び出します。
-
アプリケーションのソースコードに必要なインテル IPP 関数を呼び出します。
Intel、インテル、Intel ロゴ、Xeon は、米国およびその他の国における Intel Corporation またはその子会社の商標または登録商標です。
* その他の社名、製品名などは、一般に各社の商標または登録商標です。
© 2002-2005, Intel Corporation.