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

コア関数とサポート関数

ライブラリーとその動作状況に関する情報を簡単に使用できるようにする汎用関数がいくつかあります。

Init/InitCpu

ippInit 関数は、プロセッサーの種類を検出し、ディスパッチャーが利用可能な命令セットに対応するインテル® IPP ライブラリーのプロセッサー固有コードを使用するように設定します。

デバッグやパフォーマンス解析のように、同じマシンでプロセッサー固有コード間の違いに関するデータを取得する場合は、ippInitCpu 関数を使用します。 この関数は、ディスパッチャーがシステムを照会せずに、指定したプロセッサーのタイプに応じたプロセッサー固有コードを使用するように設定します。

ippInit 関数と ippInitCpu 関数は、ippCore ライブラリーの一部です。

GetStatusString

ippGetStatusString 関数は、インテル® IPP 関数のリターンステータス (数値) を読みやすいテキスト形式にデコードします。

        status= ippInit();
        if( status != ippStsNoErr ) {
                printf("IppInit() Error:\n");
                printf("%s\n", ippGetStatusString(status) );
                return -1;
        }

ippGetStatusString 関数は、ippCore ライブラリーの一部です。

GetLibVersion

各ドメインには、ディスパッチャーからの使用中のライブラリー・レイヤーに関する情報を返す GetLibVersion 関数があります。 次のコードは、画像処理ドメインから ippiGetLibVersion を使用する方法を示します。

const IppLibraryVersion* lib = ippiGetLibVersion();
printf(“%s %s %d.%d.%d.%d\n”, lib->Name, lib->Version,
lib->major, lib->minor, lib->majorBuild, lib->build);

この関数と ippInitCpu を併せて使用すると、同一マシン上で異なる実装の出力を比較することができます。

Malloc/Free

インテル® IPP 関数は、ポインターがアライメントされているデータを処理すると、より高速に実行されます。データが 32 バイト境界にアライメントされることを保証するため、インテル® IPP は次の関数を提供します。

void* ippMalloc(int length)
void ippFree(void* ptr)

ippMalloc 関数は 32 バイト境界にアライメントされたバッファーを提供し、ippFree 関数はそれを解放します。

信号/画像処理ライブラリーはそれぞれ、32 バイト境界にアライメントされたバッファーを割り当てる ippsMalloc 関数と ippiMalloc 関数、およびそれらを解放する ippsFree 関数と ippiFree 関数を提供します。

  • インテル® IPP とは異なるルーチンにより割り当てられたバッファーを使用する場合、開始アドレスがアライメントされていたほうがより高速に実行される可能性があります。バッファーがアライメントされていない場合は、ippAlignPtr 関数を使用します
  • インテル® IPP の Malloc 関数は、サイズ・パラメーターが 32 ビットの符号付き整数であるため、2GB-1 を超えるサイズのバッファーを割り当てることができません。 ほかのアロケーターにより割り当てられた大きなバッファーの使用は推奨しません。詳細は、「キャッシュの最適化」 を参照してください。

インテル® IPP 関数の詳細については、インテル® ソフトウェア・ドキュメント・ライブラリー (英語) にある『Intel® Integrated Performance Primitives for Intel® Architecture Reference Manual』を参照してください。

関連情報


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