- 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