Software Tuning, Performance Optimization & Platform Monitoring
Discussion regarding monitoring and software tuning methodologies, Performance Monitoring Unit (PMU) of Intel microprocessors, and platform updating.
1745 Discussions

Performance loss from ippsFIR_32f in IPP V8.0 to ippsFIRSR_32f in IPP V2020

Yngwie
Beginner
1,384 Views

Last year we did an IPP upgrade IPP V8.0 to IPP V2020.
After adjusted all function calls to new style usage we recognized performance round about factor 10

from ippsFIR_32f(...) in IPP V7.0

to ippsFIRSRInit_32f() in IPP V2020

We use IPP in single threaded mode, ippGetNumThreads () == 1.

Does anybody have similar behavior using ippFIR or other functions in IPP V2020?

What might be the reason ot performance loss?

Is there a way to get same performance in IPP V2020 like we had in IPP V8.0

1 Solution
Yngwie
Beginner
1,309 Views

After some tests I found the solution for our / my performance problem. This does not mean I found the solution for all configurations (sample rate, block size, filter length, ...) you can construct. My solution:


Instead of the IPP function ippsFIRSR (Performs single-rate FIR filtering of a source vector.) i used the function ippsFIRMR (Performs multi-rate FIR filtering of a source vector.). If values for up- and downFactor are set to 1 and values for up- and downPhase are set to 0 the MR Filter should act like the SR filter.
Doing that I returned to the old (IPP V8.0) performance values. The results are also comparable (e.g. visual inspection using Matlab). Of course the results are not 100% identical because of different filter algorithm is used.


The following can be found in the IPP documentation:
The multi-rate filtering is considered as a sequence of three operations: up sampling, filtering with a single-rate FIR filter, and down sampling. The algorithm is implemented as a single operation including the mentioned above three steps.

The IPP documentation let me think, ippsFIRMR is much more complex than ippsFIRSR. As there is additional up and down sampling I assumed the performance of ippsFIRMR is much lower than ippsFIRSR filtering. But ippsFIRMR is 10 times faster than ippsFIRSR.

Maybe my solution helps other users to beware of performance problems. As mentioned above I can not guarantee my solution is the one and only but in my case it helped.

View solution in original post

0 Kudos
1 Reply
Yngwie
Beginner
1,310 Views

After some tests I found the solution for our / my performance problem. This does not mean I found the solution for all configurations (sample rate, block size, filter length, ...) you can construct. My solution:


Instead of the IPP function ippsFIRSR (Performs single-rate FIR filtering of a source vector.) i used the function ippsFIRMR (Performs multi-rate FIR filtering of a source vector.). If values for up- and downFactor are set to 1 and values for up- and downPhase are set to 0 the MR Filter should act like the SR filter.
Doing that I returned to the old (IPP V8.0) performance values. The results are also comparable (e.g. visual inspection using Matlab). Of course the results are not 100% identical because of different filter algorithm is used.


The following can be found in the IPP documentation:
The multi-rate filtering is considered as a sequence of three operations: up sampling, filtering with a single-rate FIR filter, and down sampling. The algorithm is implemented as a single operation including the mentioned above three steps.

The IPP documentation let me think, ippsFIRMR is much more complex than ippsFIRSR. As there is additional up and down sampling I assumed the performance of ippsFIRMR is much lower than ippsFIRSR filtering. But ippsFIRMR is 10 times faster than ippsFIRSR.

Maybe my solution helps other users to beware of performance problems. As mentioned above I can not guarantee my solution is the one and only but in my case it helped.

0 Kudos
Reply