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

FIR Half-band filter - Speed

Simon_B_
Novice
609 Views

Hi,

I use FIR half-band filters a lot with 64-bit complex data. As there are a lot of zero coefficients, I'm wondering if there's a way of saving CPU cycles when using ippsFIR_64fc?

FWIW my coefficients are:

0.0003570668537809367,
0,
-0.0036789397980313754,
0,
0.01890553702015162,
0,
-0.069463173729395228,
0,
0.30387951429555071,
0.5,
0.30387951429555071,
0,
-0.069463173729395228,
0,
0.01890553702015162,
0,
-0.0036789397980313754,
0,
0.0003570668537809367,

0 Kudos
1 Solution
Simon_B_
Novice
609 Views

Igor Astakhov (Intel) wrote:

Simon,

IPP FIRs have internally 3 different code branches: so called "vertical" unrolling, than "horizontal" and finally, for rather big orders - FFT-based. For 64fc data type a criterion for switching to FFT-based algorithm is FIR order=32 (tapsLen). So if you use FIR orders greater than 32 - it doesn't matter if your filter is half-band. If less - yes, you may expect up to 1.5-2x speedup (but in this case FFT-criterion may be shifted up to the order~=64...). We'll consider half-band FIR implementation for some of the next IPP releases. You are not the first who've asked for such functionality.

regards, Igor.

 

Igor,

 

This would be great. My interest at the moment is with half-bandwidth filters where half the coefficients are NULL, format 32fc and 64fc. I can use multi-threading for now, but my data sources are delivering steadily increasing bandwidth, data sources such as hackRF, bladeRF and Ettus B200.

I envisage in the future bandwidths of 100 MSPS or more...

View solution in original post

0 Kudos
5 Replies
Igor_A_Intel
Employee
609 Views

Hi Simon,

for ippsFIR_64fc you should provide taps of 64fc type. The taps you've provided are not 64fc. Could you be more specific on what you want to do? We don't provide special support for half-band and symmetrical filters - general case only.

regards, Igor

0 Kudos
Simon_B_
Novice
609 Views

Igor Astakhov (Intel) wrote:

Hi Simon,

for ippsFIR_64fc you should provide taps of 64fc type. The taps you've provided are not 64fc. Could you be more specific on what you want to do? We don't provide special support for half-band and symmetrical filters - general case only.

regards, Igor

Igor,

 

I actually use 64fc taps, this is just some sample stuff indicating the zeros :) .

I was just wondering that as I have coefficients with lots of zeros maybe I could save some cycles using IPP functions I had not come across / found etc., if 50% of the coefficients are zero then 50% of my multiplications are a bit of a waste.

It's not a big problem at all, for the heavy-duty CPU work I have I'll use CUDA (FIR, FFT) but I *really* like IPP, it's the next best thing after Visual Studio :) .

0 Kudos
Igor_A_Intel
Employee
609 Views

Simon,

IPP FIRs have internally 3 different code branches: so called "vertical" unrolling, than "horizontal" and finally, for rather big orders - FFT-based. For 64fc data type a criterion for switching to FFT-based algorithm is FIR order=32 (tapsLen). So if you use FIR orders greater than 32 - it doesn't matter if your filter is half-band. If less - yes, you may expect up to 1.5-2x speedup (but in this case FFT-criterion may be shifted up to the order~=64...). We'll consider half-band FIR implementation for some of the next IPP releases. You are not the first who've asked for such functionality.

regards, Igor.

0 Kudos
Simon_B_
Novice
610 Views

Igor Astakhov (Intel) wrote:

Simon,

IPP FIRs have internally 3 different code branches: so called "vertical" unrolling, than "horizontal" and finally, for rather big orders - FFT-based. For 64fc data type a criterion for switching to FFT-based algorithm is FIR order=32 (tapsLen). So if you use FIR orders greater than 32 - it doesn't matter if your filter is half-band. If less - yes, you may expect up to 1.5-2x speedup (but in this case FFT-criterion may be shifted up to the order~=64...). We'll consider half-band FIR implementation for some of the next IPP releases. You are not the first who've asked for such functionality.

regards, Igor.

 

Igor,

 

This would be great. My interest at the moment is with half-bandwidth filters where half the coefficients are NULL, format 32fc and 64fc. I can use multi-threading for now, but my data sources are delivering steadily increasing bandwidth, data sources such as hackRF, bladeRF and Ettus B200.

I envisage in the future bandwidths of 100 MSPS or more...

0 Kudos
Simon_B_
Novice
609 Views

Igor Astakhov (Intel) wrote:

Hi Simon,

for ippsFIR_64fc you should provide taps of 64fc type. The taps you've provided are not 64fc. Could you be more specific on what you want to do? We don't provide special support for half-band and symmetrical filters - general case only.

regards, Igor

Igor,

Stupid question - is ippsFIR_32fc faster than ippsFIR_64fc with AVX or AVX2? I'm using fc64 but could use 32fc.

0 Kudos
Reply