Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

FFT 16bits

SChbi
Beginner
716 Views

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
716 Views

Hi Samy,

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

regards, Igor

0 Kudos
SChbi
Beginner
716 Views

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

0 Kudos
Igor_A_Intel
Employee
716 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

0 Kudos
SChbi
Beginner
716 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)

0 Kudos
Igor_A_Intel
Employee
716 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

 

0 Kudos
SChbi
Beginner
716 Views
Yes, I found a 8.2.2 in the ippversion.h
0 Kudos
Reply