Turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- Intel Community
- Software
- Software Development SDKs and Libraries
- Intel® Integrated Performance Primitives
- FIR Half-band filter - Speed

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

Simon_B_

Novice

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

11-27-2013
10:30 AM

129 Views

FIR Half-band filter - Speed

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,

1 Solution

Simon_B_

Novice

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-02-2013
01:55 AM

129 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...

Link Copied

5 Replies

Igor_A_Intel

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

11-28-2013
07:00 AM

129 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

Simon_B_

Novice

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

11-28-2013
09:14 AM

129 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 :) .

Igor_A_Intel

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-01-2013
11:50 PM

129 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.

Simon_B_

Novice

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-02-2013
01:55 AM

130 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...

Simon_B_

Novice

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-03-2013
05:53 AM

129 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.

Topic Options

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

For more complete information about compiler optimizations, see our Optimization Notice.