インテル® インテグレーテッド・パフォーマンス・プリミティブ 8.2 ユーザーズガイド

インテル® IPP アプリケーションのビルド

インテル® IPP を初めて使用される方のために、以下に簡単なアプリケーションのサンプルコードを示します。

#include "ipp.h"
#include <stdio.h>
int main(int argc, char* argv[])
{
        const IppLibraryVersion *lib;
        Ipp64u fm;
        IppStatus status;

        status= ippInit();            // 最高の最適化レイヤーで IPP を初期化
        if( status != ippStsNoErr ) {
                printf("IppInit() Error:\n");
                printf("%s\n", ippGetStatusString(status) );
                return -1;
        }

        // バージョン情報を取得
        lib = ippiGetLibVersion();
        printf("%s %s\n", lib->Name, lib->Version);

        // 選択されたライブラリー・レベルで有効な CPU 機能を取得
        fm=ippGetEnabledCpuFeatures();
        printf("SSE    :%c\n",(fm>>1)&1?'Y':'N');
        printf("SSE2   :%c\n",(fm>>2)&1?'Y':'N');
        printf("SSE3   :%c\n",(fm>>3)&1?'Y':'N');
        printf("SSSE3  :%c\n",(fm>>4)&1?'Y':'N');
        printf("SSE41  :%c\n",(fm>>6)&1?'Y':'N');
        printf("SSE42  :%c\n",(fm>>7)&1?'Y':'N');
        printf("AVX    :%c\n",(fm>>8)&1 ?'Y':'N');
        printf("AVX2   :%c\n", (fm>>15)&1 ?'Y':'N' );
        printf("----------\n");
        printf("OS Enabled AVX :%c\n", (fm>>9)&1 ?'Y':'N');
        printf("AES            :%c\n", (fm>>10)&1?'Y':'N');
        printf("CLMUL          :%c\n", (fm>>11)&1?'Y':'N');
        printf("RDRAND         :%c\n", (fm>>13)&1?'Y':'N');
        printf("F16C           :%c\n", (fm>>14)&1?'Y':'N');

        return 0;
}

このアプリケーションは、次の 3 つのセクションで構成されています。

  1. IPP を初期化します。このセクションは、IPP による最適化を最大限に利用するために必要です。ippInit() なしで IPP プログラムを実行すると、デフォルトでは最小の最適化が実装されます。 ippInit() があると、ランタイムに最高の最適化レイヤーがディスパッチされます。 特定のデバッグシナリオでは、ディスパッチャーにより選択される最適なレイヤーではなく、ippInitCpu を使用して特定の実装レイヤーを指定すると良いでしょう。

  2. ライブラリーのレイヤー名とバージョンを取得します。/include ディレクトリーの ippversion.h ファイルを使用してバージョン情報を取得することもできます。

  3. ライブラリー・レイヤーで使用されるハードウェアの最適化を示します。

Windows* 上の Microsoft* Visual Studio* 2010/2012 統合でのサンプルコードのビルド

Windows* 上では、Microsoft* Visual Studio* 2010 や Microsoft* Visual Studio* 2012 を使用したほうが、インテル® IPP アプリケーションを簡単にビルドできます。上記のサンプルコードをビルドする場合は、次のステップを実行します。

  1. Microsoft* Visual Studio* を起動して、空の C++ プロジェクトを作成します。

  2. 新しい c ファイルを追加し、上記のサンプルコードをペーストします。

  3. 「Microsoft* Visual Studio* プロジェクトとインテル® IPP の自動リンク」で説明されているように、インクルード・ディレクトリーとリンクモデルを設定します。

  4. アプリケーションをコンパイルして実行します。

統合プラグインをインストールしていない場合は、インテル® IPP アプリケーションをビルドするため、「Microsoft* Visual Studio* IDE でインテル® IPP をリンクする場合の構成」の手順に従って Microsoft* Visual Studio* IDE を設定します。

Linux* および OS X* でのサンプルコードのビルド

Linux* および OS X* 上で上記のサンプルコードをビルドする場合は、次のステップを実行します。

  1. サンプルコードをコピーして、エディターにペーストします。

  2. シェルでコンパイラー変数が設定されていることを確認してください。環境変数の設定方法については、「環境変数の設定」を参照してください。

  3. 次のコマンドを使用してコンパイルします: icc ipptest.cpp -o ipptest -I $IPPROOT/include -L $IPPROOT/lib/intel4 -lippi -lipps -lippcore。 リンクするインテル® IPP ライブラリーの詳細については、「ドメイン別のライブラリー依存関係」「リンクオプション」を参照してください。

  4. アプリケーションを実行します。

インテル® IPP ライブラリーの内部がスレッド化されている (マルチスレッド) バージョンは廃止されましたが、レガシー・アプリケーションでは利用できます。新しく開発する場合は、ライブラリーのシングルスレッド・バージョンを使用することを推奨します。

関連情報


このヘルプトピックについてのフィードバックを送信