NaN slowdown with some processors

Olli Saarela Olli.Saarela at kcl.fi
Wed Jun 4 05:55:41 CDT 2008


> I'm planning to buy a new desktop machine, and since my computations 
> utilize NaN values heavily, I'd like to know whether Intel Core 2 
> processors suffer from the same slowdown with NaN values as Pentium. For 
> details, see http://www.cygnus-software.com/papers/x86andinfinity.html

Thank you all, the data you have provided has clarified the issue. In 
addition to the replies posted to the list, I got some mail showing 100x 
slowdown with Core 2 / Debian / Octave 3.0.1. It looks like there still 
is a NaN related slowdown in Core 2 when the computation isn't carried 
out using SSE2/3.

If I have understood correctly, gcc can be forced to generate SSEn 
instructions, which avoids this performance degradation completely. 
There also seems to be a number of Linux installations of Octave out 
there that would benefit from such compile options.

The situation is slightly different with MSVC. The documentation on MSDN 
says

   The optimizer will choose when and how to make use of the SSE and SSE2
   instructions when /arch is specified. SSE and SSE2 instructions will
   be used for some scalar floating-point computations, when it is
   determined that it is faster to use the SSE/SSE2 instructions and
   registers rather than the x87 floating-point register stack. As a
   result, your code will actually use a mixture of both x87 and SSE/SSE2
   for floating-point computations.

This might explain the NaN-related slowdown on Windows machines with 
Intel processors. Drawing (extrapolating) conclusions from the posted 
figures, MSVC2008&SSE3 seem to do a much better job in this respect than 
MSVC2005&SSE2, even though some performance degradation still remains.

Thank you all once again!
   Olli



More information about the Help-octave mailing list