- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
hi ,
I want to use FFT on the Xeon Phi ,but the MKL-FFT performance is not good.I want to try IPP ,but I can not find the FFT API in IPP guide .
And the path which the guide mentioned :<install_dir>/ipp/components not exist .
What is more, I found the oldversion sample for IPP8.0 named ipp-examples/ipp_fft but the compile said these function has been removed .
So please help me to find the FFT example for IPP9.0 ,thank you very much!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Please refer this page for the reference guide that matches your IPP version : https://software.intel.com/en-us/articles/intel-integrated-performance-primitives-documentation
Find Volume 1 : Signal Processing -> Transform Functions -> Fast Fourier Transform Functions.
Thank you
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Please refer this page for the reference guide that matches your IPP version : https://software.intel.com/en-us/articles/intel-integrated-performance-primitives-documentation
Find Volume 1 : Signal Processing -> Transform Functions -> Fast Fourier Transform Functions.
Thank you
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
JON J K. (Intel) wrote:
Hi,
Please refer this page for the reference guide that matches your IPP version : https://software.intel.com/en-us/articles/intel-integrated-performance-primitives-documentation
Find Volume 1 : Signal Processing -> Transform Functions -> Fast Fourier Transform Functions.
Thank you
Thank you for your help!I have found the cpu-FFT version according to your guide.
This code is the example for IPP 9.0:
#include "ipp.h" #include "ippi.h" #include <stdio.h> #define EXIT_MAIN exitLine: /* Label for Exit */ #define check_sts(st) if((st) != ippStsNoErr) goto exitLine; /* Go to Exit if IPP function returned status different from ippStsNoErr */ int main(int argc, char* argv[]) { IppStatus status; IppiFFTSpec_C_32fc *pSpec = NULL; /* Pointer to FFT spec structure */ Ipp32fc srcFwd[8 * 8] = {0}, dstFwd[8 * 8] = {0}; /* Source/destination images */ Ipp32fc m3 = {-3, 0}, one = {1, 0}; Ipp8u *pMemInit = NULL, *pBuffer = NULL; /* Pointer to the work buffers */ int sizeSpec = 0, sizeInit = 0, sizeBuf = 0; /* Size of FFT spec structure, init and work buffers */ srcFwd[0] = m3; srcFwd[9] = one; check_sts( status = ippiFFTGetSize_C_32fc(3, 3, IPP_FFT_DIV_INV_BY_N, ippAlgHintAccurate, &sizeSpec, &sizeInit, &sizeBuf) ) /* memory allocation */ pSpec = (IppiFFTSpec_C_32fc*) ippMalloc(sizeSpec); pBuffer = (Ipp8u*) ippMalloc(sizeBuf); pMemInit = (Ipp8u*) ippMalloc(sizeInit); check_sts( status = ippiFFTInit_C_32fc(3, 3, IPP_FFT_DIV_INV_BY_N, ippAlgHintAccurate, pSpec, pMemInit) ) /* forward FFT transform */ check_sts( status = ippiFFTFwd_CToC_32fc_C1R(srcFwd, 8*sizeof(Ipp32fc), dstFwd, 8*sizeof(Ipp32fc), pSpec, pBuffer) ) for(int i=0;i<8;i++) { for(int j=0;j<8;j++) { printf("%f+%f ",dstFwd[i*8+j].re,dstFwd[i*8+j].im); } printf("\n"); } EXIT_MAIN ippFree(pMemInit); ippFree(pSpec); ippFree(pBuffer); printf("Exit status %d (%s)\n", (int)status, ippGetStatusString(status)); return (int)status; }
Thank you very much .
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page