一部のインテル® IPP 関数では、さまざまな最適化を行うための内部メモリーが必要です。ただし、関数の内部メモリーの割り当ては、キャッシュミスのように状況によってはパフォーマンスに悪影響を与える可能性があります。メモリー割り当てを回避または最小限にしてデータをホットキャッシュに保つため、一部の関数 (例えば、フーリエ変換関数) では、メモリーの利用と再利用に関するパラメーターが用意されています。
これらの関数を何度も呼び出す場合、外部バッファーを再利用することでパフォーマンスが向上します。
次の例は、メモリーバッファーを再利用して、2 つの別のスレッドの 2 つの FFT として FFT を計算しています。
ippsFFTInitAlloc_C_32fc(&ctxN2, order-1, IPP_FFT_DIV_INV_BY_N, ippAlgHintAccurate); ippsFFTGetBufSize_C_32fc( ctxN2, &sz ); buffer = sz > 0 ? ippsMalloc_8u( sz ) : 0; /// prepare source data for two FFTs int phase = 0; ippsSampleDown_32fc( x, fftlen, xleft, &fftlen2, 2, &phase ); phase = 1; ippsSampleDown_32fc( x, fftlen, xrght, &fftlen2, 2, &phase ); ippsFFTFwd_CToC_32fc( xleft, Xleft, ctxN2, buffer ); ippsFFTFwd_CToC_32fc( xrght, Xrght, ctxN2, buffer );
外部バッファーは必要ありません。バッファーのポインターが 0 の場合、関数は内部メモリーを割り当てます。
© 2007 - 2010 Intel Corporation. 無断での引用、転載を禁じます。