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