コア関数

インテル® IPP を使用して単純化できる重要な関数がいくつかあります。ここでは、その方法を説明します。これには、リターンステータス、システム/ライブラリーの問い合わせ、メモリー割り当て、正規化が含まれます。

リターンステータス

インテル® IPP には、さまざまなエラーメッセージと警告メッセージがあります。ippGetStatusString 関数は、リターンステータス (数値) を読みやすいテキスト形式にデコードします。

IppStatus st = ippsAddC_16s_I (3, 0, 0);
printf(“%d : %s\n”, st, ippGetStatusString(st));
テキスト形式の値は、ippdefs.h にもありますが、この関数を使用することでエラー報告とデバッグが非常に簡単になります。

システムとライブラリーの問い合わせ

各ドメインには、ディスパッチされたライブラリー・レイヤーの情報を返す GetLibVersion 関数があります。

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

これは通常、実行中のインテル® IPP のレイヤーを特定するのに役立ちます。ippInitCpu と併せて使用すると、同一マシン上で異なる実装の出力を比較することができます。

また、最新のマシン上でスタティック・リンクを使用する際、ippInit() を実行すると、ライブラリー・バージョンが変更されます。 この初期化により、ディスパッチャーはシステムに最適なライブラリー・レイヤーを決定できます。ippInit がなくても関数呼び出しは動作しますが、利用可能な最小レベルの最適化が使用されます。

メモリー・アライメント

インテル® IPP 関数は、ポインターがアライメントされているデータを処理すると、より高速に実行されます。

ポインターのアライメント、メモリーの割り当ておよび割り当て解除には、以下のインテル® IPP 関数を使用します。

 void* ippAlignPtr(void*
ptr, int alignBytes)
ポインターを 2 の累乗、つまり 2、4、8、16... バイト境界にアライメントします。

 void* ippMalloc(int
length)
32 バイト境界にアライメントされたメモリーを割り当てます。メモリーを解放するには、ippFree 関数を使用します。

 void ippFree(void*
ptr)

ippMalloc 関数を使用して割り当てられたメモリーを解放します。

 Ipp<datatype>*
ippsMalloc_<datatype>(int len)

異なるデータ型の信号要素に、32 バイト境界にアライメントされたメモリーを割り当てます。メモリーを解放するには、ippsFree 関数を使用します。

 void ippsFree(void*
ptr)

ippsMalloc 関数を使用して割り当てられたメモリーを解放します。

 Ipp<datatype>*
ippiMalloc_<mod>(int widthPixels, int
heightPixels, int* pStepBytes)

すべての行がゼロでパディングされている画像に、32 バイト境界にアライメントされたメモリーを割り当てます。メモリーを解放するには、ippiFree 関数を使用します。

void ippiFree(void*
ptr)

ippiMalloc 関数を使用して割り当てられたメモリーを解放します。

割り当て可能なメモリー容量は、オペレーティング・システムとシステムのハードウェアによって決まります。ただし、2GB を超えることはできません。

警告

  • ippFreeippsFree および ippiFree 関数はそれぞれ、ippMallocippsMalloc および ippiMalloc 関数を使用して割り当てられたメモリーを解放します。

  • ippFreeippsFree および ippiFree 関数は、標準の malloc および calloc 標準関数を使用して割り当てられたメモリーの解放には使用できません。 ippMallocippsMalloc および ippiMalloc 関数を使用して割り当てられたメモリーを、標準の free 関数を使用して解放することはできません。


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