> I wonder if this line, right after
> you check "in" for denormality, might not be causing
> trouble:
>                 //
> very slight waveshape for extra stability
>                
> sv->b = sv->b - sv->b * sv->b * sv->b *
> 0.001f;
> Since cubing a tiny number and multiplying it by .001 could
> end up creating a denormal, which isn't checked for until
> it's gone through a series of further computations and ends
> up as the new "in".

Could be, but I tried applying an the exception handler to sv->b (which has a 
cubed version of itself - 0.001f taken away from it) and still pegged the CPU.

> Also (I don't really know), I thought that denormals were
> caught as a processor exception whenever they occurred, so
> neutralizing them in the code after the fact won't do
> anything to speed up the process, except to prevent a
> cascade of denormals. The thing to do would be to replace
> the exception handler with your own.

It seems from the article you flagged up that the Denormals-Are-Zero (DAZ) mode 
we really need is an SSE instruction. I wonder if you can do this without using 
intrinsics and native Intel code. I think there's some resistance to this since 
the code is meant to be compilable on PPC, i386, i686 and all variants, not 
just P3-and-beyond, and I'm trying to make my work generically compatible with 
all Pd-Extended distributions from 0.39 onwards.

> "To avoid serialization and performance issues due to
> denormals and underflow numbers, use the SSE and SSE2
> instructions to set Flush-to-Zero and Denormals-Are-Zero
> modes within the hardware to enable highest performance for
> floating-point applications."

Once again, I personally would like to have this implemented in the PD core, 
since denormals are a real pain in the ass and often cause CPU pegging. This 
limits the real-time uses of PD, since there are some performance patches that 
are realizable but ultimately un-performable. As such I'm surprised it doesn't 
class as a bug, but I guess this is up to the extern writer.
I notice a post on the pd-dev list - 
denormal bashing for feedback filters - ID: 1145279
cpole~ and rpole~ filters are not denormal save(sic) yet

How did zmoelnig fix this I wonder?

Ed

The article again for anyone reading this in the middle of the thread:
http://software.intel.com/en-us/articles/x87-and-sse-floating-point-assists-in-ia-32-flush-to-zero-ftz-and-denormals-are-zero-daz/


      


_______________________________________________
Pd-dev mailing list
Pd-dev@iem.at
http://lists.puredata.info/listinfo/pd-dev

Reply via email to