インテル(R) インテグレーテッド・パフォーマンス・プリミティブ (インテル(R) IPP) 5.1 Linux* 版 (インテル(R) エクステンデッド・メモリー 64 テクノロジー (インテル(R) EM64T) ベース・プラットフォーム用)
入門ガイド

目次

API について
環境変数
ヘッダーファイル
インテル IPP 関数の呼び出し
インテル IPP 共有ライブラリーとディスパッチャーの使用
インテル IPP スタティック・ライブラリーの使用
インテル IPP パフォーマンス・ベンチマーク・ツールの使用
インテル IPP 共有オブジェクト検索ライブラリーの使用

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.1/em64t/sharedlib フォルダーに含まれている場合、次のコマンドを入力します。

インテル EM64T ベース・システム
export LD_LIBRARY_PATH=/opt/intel/ipp/5.1/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.1 は 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 (英語)

プロセッサー・コード

インテル IPP スタティック・ライブラリーの使用

インテル IPP には各関数のすべての EM64T プロセッサー・バージョンを含む "マージ" スタティック・ライブラリー・ファイルが含まれています。ダイナミック・ディスパッチャーの場合と同じように、関数が呼び出されると、適切な関数のバージョンが実行されます。ダイナミックのメカニズムほど便利ではありませんが、コードサイズの合計がより小さくなります。

これらのスタティック・ライブラリーを使用するには、lib ディレクトリーの libipp*mergedem64t.a ファイルにリンクします。詳細は、インテル IPP リンクサンプル (英語) を参照してください。


インテル IPP パフォーマンス・ベンチマーク・ツールの使用

インテル IPP パッケージでは、API の各インテル IPP 関数のパフォーマンスをテストする "perfsys" ツールが提供されています。

インテル EM64T 対応のインテル(R) Xeon(R) プロセッサーでのパフォーマンス・テスト・ツールの実行に関する詳細は、.\tools\perfsys\ ディレクトリーにある readme.htm を参照してください。

インテル IPP 共有オブジェクト検索ライブラリーの使用

概要

共有オブジェクト検索ライブラリーは、前のセクションで説明したマージド・ライブラリーのディスパッチャーです。インテル IPP 関数を適用する方法を提供するため、マージド・ライブラリーを使用して呼び出すようにインテル IPP 関数のエントリーポイントに特別な定義を作成する必要はありません。プロジェクトに共有オブジェクト検索ライブラリーを含めて、ソースコードからインテル IPP 関数を呼び出すだけです。

また、共有オブジェクト検索ライブラリーにより、エンド・ユーザー・アプリケーションを新しいバージョンのインテル IPP 関数で自動的に更新することができます。ディスパッチャーにより、インテル IPP 共有オブジェクト・ディスパッチャー (libipps.so など) の PATH が検索されます。ディスパッチャーがインテル IPP 共有オブジェクトに新しいバージョンのコードを検出すると、新しい共有オブジェクトからのコードがアプリケーションに組み込まれているコードの代わりに使用されます。そのため、最新のインテル IPP の最適化や新しいインテル(R) プロセッサーを利用する際に、開発の手間がいりません。

マージド・ライブラリーと比べると、共有オブジェクト検索ライブラリーには、いくつかの短所があります。共有オブジェクト検索ライブラリーを使用する場合、CPU 固有のコードを除外することはできません。各関数のすべてのプロセッサー・バージョンがアプリケーションにリンクされます。また、共有オブジェクト検索ライブラリーをカーネルモードで使用することはできません。

ビルドの手順

次の手順に従って、インテル IPP 共有オブジェクト検索ライブラリーを使用してアプリケーションをビルドします。

Intel、インテル、Intel ロゴ、Xeon は、米国およびその他の国における Intel Corporation またはその子会社の商標または登録商標です。

* その他の社名、製品名などは、一般に各社の商標または登録商標です。
 
(C) 2002-2006, Intel Corporation.