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

Intel Signal Processing Library from 1996 advice needed

刘__振
Beginner
1,227 Views

Dear community,
Dear Intel support,

We had some legacy software from awhile ago. And there is a piece of code that uses nsp.dll, nspa6.dll, nspm5.dll, nspm6.dll , etc. Which are the part of Interl Signal Processing library. And application calls these functions:

void  _cdecl nspsRealFftl(float* samps, int order, int flags);

void  _cdecl nspsCcsFftl(float* samps, int order, int flags);

Here is how they called:

nspsRealFftl(&TrfmData[ctr * ChunkSize], 11, 0x81);  // NSP_Forw|NSP_OutBitRev

nspsCcsFftl(&TrfmData[ctr * ChunkSize], 11, 0x0202); // NSP_Inv|NSP_OutRCPerm

DLLs creation date is 30.07.1996

1. Does anyone know what are those functions inside?

2. Is there a document fully describing these functions and which exactly algorithm is used to compute FFT? Would anyone be so kind to provide a manual that came with that old version?

I took a look at the manual to Intel Signal Processing Library version 4.5 from year 2000 (the oldest one we have) and there is indeed a description of these functions. But when we try to replace original DLLs with DLLs from version 4.5 the application crushes.

3. Our goal is to update implementation and,maybe, replace these calls  with open-source implementations of FFT if possible. If not - we will go with Intel IPP. But we want to ensure complete backwards compatibility, so the output from new application would be 100% identical to the old one. What would be your suggestion, respected friends? What is the best way to migrate this algorithm to a new codebase? Is there a way to migrate and keep output results to be the same?

Thanks.

 

0 Kudos
11 Replies
刘__振
Beginner
1,227 Views

And application calls these functions:

void _cdecl nspsRealFftl(float* samps, int order, int flags);

void _cdecl nspsCcsFftl(float* samps, int order, int flags);

Here is how they are called:

nspsRealFftl(&TrfmData[ctr * ChunkSize], 11, 0x81); // NSP_Forw|NSP_OutBitRev

nspsCcsFftl(&TrfmData[ctr * ChunkSize], 11, 0x0202); // NSP_Inv|NSP_OutRCPerm

0 Kudos
Gennady_F_Intel
Moderator
1,227 Views

3)  Ruslan, using this version will not take your application to extract all performance benefits from the latest microarchitectures. May be taking the eval version of IPP ( 30 days ) will help you and with this issue?  

0 Kudos
刘__振
Beginner
1,227 Views

Yes, it will surely extract. And we would be glad to migrate. 
But let me explain my concern again. First, we need to understand what those methods were originally doing,which algorithm they were using under the hood, etc. Then we need to find what methods in latest IPP will give us the same(!) results.
In order to do it, we probably need documentation or any other sort of information about that original package. Thats why I approached you, as an Intel Support Representative, and a whole Intel Development community.
We would appreciate your sincere cooperation on this matter.
Thanks. 

0 Kudos
Gennady_F_Intel
Moderator
1,227 Views

You can look at the IPP FFT into CCS format and make the comparision of ourput results.   At the  first glance the desrciption of nspsRealFftl and CCS format are similar.  Thanks.

 

0 Kudos
Igor_A_Intel
Employee
1,227 Views

Hi Ruslan,

what do you mean under "crashes"? Do you see something like exception, abort, or just the result of IPP FFT differs from NSP one?

Regarding IPP - could you provide a piece of code how do you use FFT functions? The right order is GetBufSize, Init, only then FFT itself.

regards, Igor

0 Kudos
Peter_C_2
Beginner
1,227 Views

This might help you

 

Good luck

0 Kudos
Peter_C_2
Beginner
1,227 Views

And this

0 Kudos
SergeyKostrov
Valued Contributor II
1,227 Views

I've checked IPL v1.00.01 ( an Intel performance library before IPP ) installed on my machine and this is what I have:

...
/*---------------------------  Library Version  ---------------------------*/
#if !defined _OWN_BLDPCS

typedef struct _IPLLibVersion {
  int    major;                         /* e.g. 1                          */
  int    minor;                         /* e.g. 00                         */
  int    build;                         /* e.g. 01                         */
  const char * Name;                    /* e.g. "ipl6l.lib","iplm5.dll"    */
  const char * Version;                 /* e.g. "v1.00"                    */
  const char * InternalVersion;         /* e.g. "[1.00.01, 07/25/96]"      */
  const char * BuildDate;               /* e.g. "Jun 1 96"                 */
  const char * CallConv;                /* e.g. "DLL","Microsoft*","Borland*"*/
} IPLLibVersion;
...

and I didn't find any references to functions you've mentioned in Post #1.

 

0 Kudos
SergeyKostrov
Valued Contributor II
1,227 Views
Here are all doc-files I have in a Doc folder...
0 Kudos
SergeyKostrov
Valued Contributor II
1,227 Views
>>...a piece of code that uses nsp.dll, nspa6.dll, nspm5.dll, nspm6.dll , etc... Could you check properties ( in Windows Explorer ) of these DLLs to confirm that these DLLs are from Intel Corporation?
0 Kudos
SergeyKostrov
Valued Contributor II
1,227 Views
IPL version I have is 2.5. Take into account that all functions in IPL have a prefix ipl.
0 Kudos
Reply