Re: [LAD] Floating point Denormals: C++ and Waf

From: David Robillard <d@email-addr-hidden>
Date: Thu Aug 02 2012 - 17:46:00 EEST

On Thu, 2012-08-02 at 13:06 +0100, Harry van Haaren wrote:
> Hi all,
>
>
> I've working on a LV2 instrument plugin, and it consumes about 1-2%
> CPU on idle. When I leave it for about 20 seconds, the CPU usage jumps
> to 38 / 40 % of a core, and JACK xruns. The code contains IIR's for a
> reverb effect, so I'm going to blame this CPU burning on denormal
> values.
>
>
> I'm using waf as the build system, and appending "-O3" and
> "-ffast-math" to the CFLAGS and CXXFLAGS. Building with ./waf -v shows
> the runner thread to have the "-O3" and "-ffast-math" in the command.
> Yet when I run it it still hogs CPU after about 10-20 seconds.
>
>
> Reading on gcc's pages
> (http://www.acsu.buffalo.edu/~charngda/cc.html) tells me that if
> DenomalsAreZero and FlushToZero are set, it should be linked with
> crtfastmath.o. I don't know how to check if this is happening?
>
>
> I'm not sure where to look next to fix the problem. Help appreciated!

Have you tried in Ardour, or another host with denormal protection? I
know you were using Jalv recently, which does not.

On that note, a couple of denormal questions:

Is there a reason Jack can't do this for everything? I am not really
keen on putting a bunch of mysterious assembler crap in a host meant to
be a relatively clean example, and it's even worse to make plugins have
to do this...

What is the scope of the state of the flush-to-zero flag? Process?
Thread?

Thanks,

-dr

_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-dev

Received on Thu Aug 2 20:15:03 2012

This archive was generated by hypermail 2.1.8 : Thu Aug 02 2012 - 20:15:03 EEST