ippsDFTInv_CToC_64f No Longer Supported?

ippsDFTInv_CToC_64f No Longer Supported?

I have the following working code:

IppsDFTSpec_C_64f *spec;
ippsDFTInitAlloc_C_64f(&spec, N, IPP_FFT_NODIV_BY_ANY, ippAlgHintAccurate);
ippsDFTInv_CToC_64f(pRealData, pImagData, pRealData, pImagData, spec, NULL);

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:

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[i].re = pRealData[i];
    pComplexData[i].im = pImagData[i];
}
ippsDFTInv_CToC_64fc(pComplexData, pComplexData, fftSpec, pWorkBuf);
for (EcUint4 i=0; i<N; i++) {
    pRealData[i] = pComplexData[i].re;
    pImagData[i] = pComplexData[i].im;
}
ippsFree(pComplexData);

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).

10 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

>>...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?

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

>>...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.

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.

>>...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.

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:

                        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

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)

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

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

Igor,

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

Leave a Comment

Please sign in to add a comment. Not a member? Join today