バッファーの再利用

一部のインテル® 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. 無断での引用、転載を禁じます。