Intel® Integrated Performance Primitives
Community support and discussions relating to developing high-performance vision, signal, security, and storage applications.

problem with "ippsFFTGetBufSize_R_32f"

kholood_ezzeldeen
160 Views
hi,
when I use this function "ippsFFTGetBufSize_R_32f" in machine core2due the size of the buffer returns "Zero" .
When I run the same function on another machine but with processor Intel Pentium4 the buffer size return a value not "zero"


How can I solve this problem on core2due machine ??

Regards,
kholood
0 Kudos
2 Replies
Vladimir_Dudnik
Employee
160 Views
Hello,

there is no problem.IPP canuse different algorithms depending on target cpu to achieve maximum performance.

Regards,
Vladimir
Ying_H_Intel
Employee
160 Views
Hi kholood,

ippsFFTGetBufSize function calculates the necessary memory buffer size in dependence of FFT order and used algorithm (it may be different for different processors. Pleasesee Understanding CPU Dispatching in the Intel IPP Library ). 0 is also legal size. it means that for that particular order and library FFT does not need any external buffers on the target cpu.

Here is the tip of implement IPP image FFT (almost similar to signal FFT) , just for your reference,

1) definition,
IppiFFTSpec_R_32f *pFFTSpec;

2) call
ippiFFTInitAlloc_R_32f (&pFFTSpec,...)

3) allocate the work buffer.
pBufSize = new int[1];
// allocate the external work buffer
ippiFFTGetBufSize_R_32f (pFFTSpec,pBufSize);

Ipp8u *pBuffer = ippsMalloc_8u(*pBufSize);

4) then call
ippiFFTFwd_RToPack_32f_C1R(const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep, pFFTSpec, pBuffer);

ippiFFTFree_R_32f( pFFTSpec);
ippsFree(pBuffer);

Regards,

Ying

Reply