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

ippsFIR_32fc_I -> ippsFIR_32fc

James_v_1
Beginner
810 Views

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

Thanks

0 Kudos
10 Replies
SergeyKostrov
Valued Contributor II
810 Views
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 ...
0 Kudos
James_v_1
Beginner
810 Views

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.

0 Kudos
SergeyKostrov
Valued Contributor II
810 Views
>>...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.
0 Kudos
Igor_A_Intel
Employee
810 Views

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

0 Kudos
SergeyKostrov
Valued Contributor II
810 Views
>>...don't use "direct" functions - they are also marked as deprecated... Thanks and I'll look for a replacement.
0 Kudos
James_v_1
Beginner
810 Views

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.

0 Kudos
James_v_1
Beginner
810 Views

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.

0 Kudos
James_v_1
Beginner
810 Views

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

0 Kudos
Igor_A_Intel
Employee
810 Views

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

0 Kudos
James_v_1
Beginner
810 Views

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

0 Kudos
Reply