ippsFIR_32fc_I -> ippsFIR_32fc

ippsFIR_32fc_I -> ippsFIR_32fc

James v.'s picture

Can the source and destination parameters for ippsFIR_32fc (the non-inline version) safely be the same array? 

Thanks

11 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.
Sergey Kostrov's picture

This is what a comment in ipps.h header says:
...
// pSrcDst - pointer to the input/output vector in in-place operation
// pSrc - pointer to the input vector
// pDst - pointer to the output vector
...

James v.'s picture

That would be for the in-place version.  I'm interested the non-in-place version, which doesn't specify whether pSrc and pDst can be the same thing.

Sergey Kostrov's picture

>>...I'm interested the non-in-place version, which doesn't specify whether pSrc and pDst can be the same thing...

I could verify with another IPP function ippsFIR_Direct_32f because it has a similar set of parameters. If you try ippsFIR_32fc without success post codes for review.

Igor Astakhov (Intel)'s picture

Starting from 7.1.1 you can safely use pSrc=pDst for all functions that have _I analogue, moreover - all such "_I" functions are marked as deprecated with reccomendation to use corresponding out-of-place functionality with pSrc=pDst.

4 Sergey - don't use "direct" functions - they are also marked as deprecated and most of them internaly are implemented with InitAlloc and call to a function with state - so "direct" in most cases are just wrappers - for the question "why" I have only 1 answer - historically...

regards, Igor

Sergey Kostrov's picture

>>...don't use "direct" functions - they are also marked as deprecated...

Thanks and I'll look for a replacement.

James v.'s picture

Quote:

Igor Astakhov (Intel) wrote:

Starting from 7.1.1 you can safely use pSrc=pDst for all functions that have _I analogue, moreover - all such "_I" functions are marked as deprecated with reccomendation to use corresponding out-of-place functionality with pSrc=pDst.

4 Sergey - don't use "direct" functions - they are also marked as deprecated and most of them internaly are implemented with InitAlloc and call to a function with state - so "direct" in most cases are just wrappers - for the question "why" I have only 1 answer - historically...

Thanks Igor.  I've already replaced the simpler _I functions (add, mul, div, etc), but wasn't sure that the same applied to the FIR functions - thanks for confirming that.  I'm in the process of replacing the ippsFIRDirect functions with their non-direct counterparts too.

James v.'s picture

Quote:

Igor Astakhov (Intel) wrote:

Starting from 7.1.1 you can safely use pSrc=pDst for all functions that have _I analogue, moreover - all such "_I" functions are marked as deprecated with reccomendation to use corresponding out-of-place functionality with pSrc=pDst.

ippsFIR_32fc(Data, Data, FrameLength, FirStateCmplx);  //<- This does not work

ippsFIR_32fc_I(Data, FrameLength, FirStateCmplx); //<- This does work

It looks like a temporary array will be needed, in IPP 7.1.0 at least.  I'll test on 7.1.1 and see what happens there.

James v.'s picture

Actually, it looks like I might be stuck on 7.1.0.  Let me look into this a bit further.

Igor Astakhov (Intel)'s picture

Hi James,

we fixed all issues with pSrc==pDst (for out-of-place functions that have in-place deprecated analogues) in 7.1.1. If you find any problems in 7.1.1 with pSrc==pDst - please submit a bug - it will be fixed ASAP.

Regards, Igor

James v.'s picture

Thanks Igor, it looks like I jumped the gun.  Version 7.1.1 fixes the problem.  

Login to leave a comment.