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

ippsDFTInv_CToC_64f No Longer Supported?

Jared_M_
Beginner
1,109 Views

I have the following working code:

[cpp]

IppsDFTSpec_C_64f *spec;

ippsDFTInitAlloc_C_64f(&spec, N, IPP_FFT_NODIV_BY_ANY, ippAlgHintAccurate);

ippsDFTInv_CToC_64f(pRealData, pImagData, pRealData, pImagData, spec, NULL);

[/cpp]

Yet the newer compilers (version 13.0.1 in my case) complain about the InitAlloc being deprecated.  I tried to switch to the new recommended way, but there seems to be no ippsDFTInit_C_64f function.  There is a ippsDFTInit_C_64fc version (note fc vice f at the end), but to use this I have to introduce 2 data copies to make it work:

[cpp]

int specSize, initSize, workSize;

IppStatus status = ippsDFTGetSize_C_64fc(N, IPP_FFT_NODIV_BY_ANY, ippAlgHintAccurate, &specSize, &initSize, &workSize);

IppsDFTSpec_C_64fc *fftSpec = (IppsDFTSpec_C_64fc*)ippsMalloc_8u(specSize);

Ipp8u* pInitBuf = ippsMalloc_8u(initSize);

status = ippsDFTInit_C_64fc(N, IPP_FFT_NODIV_BY_ANY, ippAlgHintAccurate, fftSpec, pInitBuf);

if (pInitBuf) ippsFree(pInitBuf);

Ipp8u* pWorkBuf = ippsMalloc_8u(workSize);

Ipp64fc* pComplexData = ippsMalloc_64fc(N);

for (int i=0; i<N; i++) {

    pComplexData.re = pRealData;

    pComplexData.im = pImagData;\

}

ippsDFTInv_CToC_64fc(pComplexData, pComplexData, fftSpec, pWorkBuf);

for (EcUint4 i=0; i<N; i++) {

    pRealData = pComplexData.re;

    pImagData = pComplexData.im;

}

ippsFree(pComplexData);

[/cpp]

Is there any way to use ippsDFTInv_CToC_64f?  If not, it seems to me the better option is to stick with the deprecated code to avoid the data copying (and the code bloat).

0 Kudos
9 Replies
SergeyKostrov
Valued Contributor II
1,109 Views
>>...Yet the newer compilers (version 13.0.1 in my case) complain about the InitAlloc being deprecated... Could you specify what version ( and update ) of IPP do you use?
0 Kudos
Jared_M_
Beginner
1,109 Views

Version 7.1 installed from l_ccompxe_intel64_2013.3.163.tgz and l_ccompxe_threaded_static_ipp_7.1.1.163.tgz.

0 Kudos
SergeyKostrov
Valued Contributor II
1,109 Views
>>...Is there any way to use ippsDFTInv_CToC_64f... I just verified ipps.h header file ( IPP version 7.1.1 ) and I don't see that ippsDFTInv_CToC_64f is marked as deprecated. Could you post a piece of code from ipps.h with declaration of ippsDFTInv_CToC_64f for review? Also, even if some IPP functions are marked as deprecated they could be used in a mixed ( let me call it so ) IPP environment. It means, that several versions of IPP could co-exist on a computer system and could be used in applications at the same time.
0 Kudos
Jared_M_
Beginner
1,109 Views

The function marked deprecated is:  ippsDFTInitAlloc_C_64f.  All of the ipps?FTInitAlloc_* functions have been marked so.

To write code that will be supported in the future, the function I need and which seems to be missing is:  ippsDFTInit_C_64f.  

The ippsDFTInv_CToC_64f function (which still exists) requires an argument of type IppsDFTSpec_C_64f* which must be properly initialized.

Thanks.

0 Kudos
SergeyKostrov
Valued Contributor II
1,109 Views
>>...To write code that will be supported in the future, the function I need and which seems to be missing is: ippsDFTInit_C_64f. Try to use older version of IPP library if it creates some implementation problems.
0 Kudos
Jared_M_
Beginner
1,109 Views

Using older versions of the software is not a satisfactory answer.  To me, it seems you have an obvious hole in your interface.  It's either by design because you plan on deprecating this one function, or it's a bug that you need to fix.  Let me try to present the information in a different way:

[cpp]

                        Deprecated                 Current

Function                Dependancy                 Dependancy

-------------------------------------------------------------------------------------

ippsFFTFwd_CToC_32f    ippsFFTInitAlloc_C_32f    ippsFFTInit_C_32f

ippsFFTFwd_CToC_64f    ippsFFTInitAlloc_C_64f    ippsFFTInit_C_64f

ippsFFTFwd_CToC_32fc   ippsFFTInitAlloc_C_32fc   ippsFFTInit_C_32fc

ippsFFTFwd_CToC_64fc   ippsFFTInitAlloc_C_64fc   ippsFFTInit_C_64fc

ippsDFTFwd_CToC_32f     ippsDFTInitAlloc_C_32f            ???

ippsDFTFwd_CToC_64f     ippsDFTInitAlloc_C_64f            ???

ippsDFTFwd_CToC_32fc   ippsDFTInitAlloc_C_32fc   ippsDFTInit_C_32fc

ippsDFTFwd_CToC_64fc   ippsDFTInitAlloc_C_64fc   ippsDFTInit_C_64fc

ippsFFTInv_CToC_32f    ippsFFTInitAlloc_C_32f    ippsFFTInit_C_32f

ippsFFTInv_CToC_64f    ippsFFTInitAlloc_C_64f    ippsFFTInit_C_64f

ippsFFTInv_CToC_32fc   ippsFFTInitAlloc_C_32fc   ippsFFTInit_C_32fc

ippsFFTInv_CToC_64fc   ippsFFTInitAlloc_C_64fc   ippsFFTInit_C_64fc

ippsDFTInv_CToC_32f     ippsDFTInitAlloc_C_32f            ???

ippsDFTInv_CToC_64f     ippsDFTInitAlloc_C_64f            ???

ippsDFTInv_CToC_32fc   ippsDFTInitAlloc_C_32fc   ippsDFTInit_C_32fc

ippsDFTInv_CToC_64fc   ippsDFTInitAlloc_C_64fc   ippsDFTInit_C_64fc

[/cpp]

What is the plan for IPP?  Please pick one:

1.  The functions that replace the ??? will be implemented (i.e.ippsDFTInit_C_32f and ippsDFTInit_C_64f)

2.  The functions that depend on deprecated ippsDFTInitAlloc_C_32f and ippsDFTInitAlloc_C_64f will be deprecated (i.e.
ippsDFTFwd_CToC_32f, ippsDFTFwd_CToC_64f, ippsDFTInv_CToC_32f, and ippsDFTInv_CToC_64f)

0 Kudos
Igor_A_Intel
Employee
1,108 Views

Hi,

there are special functions for your purpose - ippsRealToCplx and CplxToReal. Your last question is correct - let's think till tomorrow - (1) to implement Init+GetSize alternatives or (2) to deprecate corresponding processing functions. I'll provide you the final answer tomorrow.

Regards, Igor

0 Kudos
Igor_A_Intel
Employee
1,108 Views

Ok, we'll implement corresponding GetSize & Init functions in the next IPP release - use InitAlloc for a while - you'll be able to substite it in the nearest future.

Regards, Igor

0 Kudos
Jared_M_
Beginner
1,109 Views

Igor,

Thanks for your thoughtful response.  I'll look for the new functions in the next release.

0 Kudos
Reply