Albert Graef a écrit :
> Yann Orlarey wrote:
> [denormals issues]
>> This is a real problem but it should be solved on modern intel cpu by
>> enabling the FTZ mode.
>
> It would be useful if the Faust guide had a brief explanation of
> denormals, along with instructions on how to enable FTZ with gcc and the
> Intel compiler, and other workarounds. Or maybe it's time to start a
> Faust FAQ? This problem is surely going to bite a lot of dsp newbies who
> start playing with Faust on the "wrong" system.
>
> Albert
>
Right. The interactions with the various gcc flags are not very easy to
understand. The FTZ mode is supposed to be enabled by the -ffast-math
flag. But alone this flag is not enough.
Here are various tests I did on karplus32.dsp to figure out the right
combination of gcc flags to avoid denormals.
The first thing is to modify Karplus32 to produce denormals by
commenting out " :+(leak)" line 21 :
trigger(n) = upfront : release(n) : >(0.0); // : +(leak);
Then compile karplus32.dsp only with "-O3". If you play with the
modified karplus32, after few seconds (~30s) of inactivity it starts
using 100% of the CPU.
Now if you recompile karplus32.dsp using "-O3 -ffast-math" you will
still have denormals because you need to be in sse mode. Being in sse
mode "-O3 -march=native -mfpmath=sse" is not enough and still produces
denormals.
The minimal combination to activate FTZ mode seems to be :
"-O3 -march=native -mfpmath=sse -ffast-math"
when you are on a sse capable cpu. Here it works, you don't have
denormals any more :-).
Yann
PS : from the gcc manual about -ffast-math : "This option should never
be turned on by any ‘-O’ option since it can result in incorrect output
for programs which depend on an exact implementation of IEEE or ISO
rules/specifications for math functions."
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev
Received on Fri Feb 1 12:15:02 2008
This archive was generated by hypermail 2.1.8 : Fri Feb 01 2008 - 12:15:02 EET