- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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...
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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 :) .
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.

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