- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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).
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Version 7.1 installed from l_ccompxe_intel64_2013.3.163.tgz and l_ccompxe_threaded_static_ipp_7.1.1.163.tgz.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Igor,
Thanks for your thoughtful response. I'll look for the new functions in the next release.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page