インテル® インテグレーテッド・パフォーマンス・プリミティブ 8.2 ユーザーズガイド
ライブラリーとその動作状況に関する情報を簡単に使用できるようにする汎用関数がいくつかあります。
ippInit 関数は、プロセッサーの種類を検出し、ディスパッチャーが利用可能な命令セットに対応するインテル® IPP ライブラリーのプロセッサー固有コードを使用するように設定します。
デバッグやパフォーマンス解析のように、同じマシンでプロセッサー固有コード間の違いに関するデータを取得する場合は、ippInitCpu 関数を使用します。 この関数は、ディスパッチャーがシステムを照会せずに、指定したプロセッサーのタイプに応じたプロセッサー固有コードを使用するように設定します。
ippInit 関数と ippInitCpu 関数は、ippCore ライブラリーの一部です。
ippGetStatusString 関数は、インテル® IPP 関数のリターンステータス (数値) を読みやすいテキスト形式にデコードします。
status= ippInit(); if( status != ippStsNoErr ) { printf("IppInit() Error:\n"); printf("%s\n", ippGetStatusString(status) ); return -1; }
ippGetStatusString 関数は、ippCore ライブラリーの一部です。
各ドメインには、ディスパッチャーからの使用中のライブラリー・レイヤーに関する情報を返す 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 を併せて使用すると、同一マシン上で異なる実装の出力を比較することができます。
インテル® IPP 関数は、ポインターがアライメントされているデータを処理すると、より高速に実行されます。データが 32 バイト境界にアライメントされることを保証するため、インテル® IPP は次の関数を提供します。
void* ippMalloc(int length) void ippFree(void* ptr)
ippMalloc 関数は 32 バイト境界にアライメントされたバッファーを提供し、ippFree 関数はそれを解放します。
信号/画像処理ライブラリーはそれぞれ、32 バイト境界にアライメントされたバッファーを割り当てる ippsMalloc 関数と ippiMalloc 関数、およびそれらを解放する ippsFree 関数と ippiFree 関数を提供します。
インテル® IPP 関数の詳細については、インテル® ソフトウェア・ドキュメント・ライブラリー (英語) にある『Intel® Integrated Performance Primitives for Intel® Architecture Reference Manual』を参照してください。