You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The first results in a filter with two denormal filter coefficients, the impact of which is extreme. In the following flowgraph on my particular system:
Using normal taps results in a throughput of ~32 MS/s
Using the first set of taps with two denormal values results in a throughput of ~ 8.8 MS/s
Using a set of taps which are all denormal results in a throughput of ~2.2 MS/s
This is a contrived example of a real world issue I faced on two different hardware platforms due to a single denormal tap returned by firdes cutting throughput in half.
Even near-denormal taps can cause issues as they can produce denormal output which is also a performance problem.
GR cannot save users completely from themselves, but it should probably not return denormal values from tap generators. Other recommendations from chat.gnuradio are to use compiler flags to set the FTZ and DAZ flags.
The text was updated successfully, but these errors were encountered:
Note: using the -ffast-math complier flag (as suggested by @noc0lour) does resolve this, however it seems like this does more than just enable the DAZ and FTZ flags.
For avoiding this issue in real time systems we could add a build option to set the correct flags (not fastmath). Maybe coercing taps from (almost) denormal to 0 in filter design function is a good idea.
should consider using a better implementation of a Gaussian shape in firdes. For now, this persists. (it's really not hard to write a better Gaussian generator, we can calculate an acceptable cutoff by the area under the curve we're losing when setting small coefficients to zero)
This can result in substantial performance impact.
Consider the following:
The first results in a filter with two denormal filter coefficients, the impact of which is extreme. In the following flowgraph on my particular system:
Using normal taps results in a throughput of ~32 MS/s
Using the first set of taps with two denormal values results in a throughput of ~ 8.8 MS/s
Using a set of taps which are all denormal results in a throughput of ~2.2 MS/s
This is a contrived example of a real world issue I faced on two different hardware platforms due to a single denormal tap returned by firdes cutting throughput in half.
Even near-denormal taps can cause issues as they can produce denormal output which is also a performance problem.
GR cannot save users completely from themselves, but it should probably not return denormal values from tap generators. Other recommendations from chat.gnuradio are to use compiler flags to set the FTZ and DAZ flags.
The text was updated successfully, but these errors were encountered: