Community
cancel
Showing results for 
Search instead for 
Did you mean: 
SChbi
Beginner
129 Views

FFT 16bits

Hello,

I try to change the exemple found on https://software.intel.com/en-us/articles/how-to-use-intel-ipp-s-1d-fourier-transform-functions

To use 16 bits instead of 32, but I have linking problems:

icc fftIPP_16.c -o fftIPP_16 -L/opt/intel/composer_xe_2015.3.187/ipp/../compiler/lib -lm -lippcore -lipps -lippi

Undefined symbols for architecture x86_64:

  "_ippsDFTFwd_CToC_16sc", referenced from:

      _main in iccGavA8K.o

  "_ippsDFTGetSize_C_16sc", referenced from:

      _main in iccGavA8K.o

  "_ippsDFTInit_C_16sc", referenced from:

      _main in iccGavA8K.o

  "_ippsDFTInv_CToC_16sc", referenced from:

      _main in iccGavA8K.o

ld: symbol(s) not found for architecture x86_64

Any Idea of what's wrong? Which library should I use instead?

0 Kudos
6 Replies
Igor_A_Intel
Employee
129 Views

Hi Samy,

is everything OK with 32fc functions that are used in the example code?

regards, Igor

SChbi
Beginner
129 Views

Yes, with the 32fc the same build command could compile, link and run and then validate with DFT OK

Igor_A_Intel
Employee
129 Views

Can you find 16-bit FFT in ipps.h?

These functions were marked as deprecated in 8.x and removed in 9.0. The main reason for this particular functionality - because there was no 16-bit implementation for FFT - internally this functionality was implemented via ippsConvert_16s32, FFT_32f and ippsConvert_32f16s_Sfs. If you need 16-bit implementation - you can do the same in your app.

regards, Igor

SChbi
Beginner
129 Views

I have this int he ipps.h

typedef struct FFTSpec_C_16sc   IppsFFTSpec_C_16sc;

typedef struct FFTSpec_C_16s    IppsFFTSpec_C_16s;

typedef struct FFTSpec_R_16s    IppsFFTSpec_R_16s;

 

How do I know my release is 8 or 9?

The files are from the evaluation tar.gz on MacOSX  (composer_xe_2015.3.187)

Igor_A_Intel
Employee
129 Views

These are just rudiment data types residues, - there are no 16-bit FFTs in ippSP anymore. In order to understand which IPP version do you use just call

/* /////////////////////////////////////////////////////////////////////////////
//  Name:       ippsGetLibVersion
//  Purpose:    get the library version
//  Parameters:
//  Returns:    pointer to structure describing version of the ipps library
//
//  Notes:      don't free the pointer
*/
IPPAPI( const IppLibraryVersion*, ippsGetLibVersion, (void) )
 

(or use an example from the user manual):

const IppLibraryVersion* lib = ippsGetLibVersion(); printf(“%s %s %d.%d.%d.%d\n”, lib->Name, lib->Version, lib->major, lib->minor, lib->majorBuild, lib->build);

regards, Igor

 

SChbi
Beginner
129 Views

Yes, I found a 8.2.2 in the ippversion.h
Reply