Complex left-divide and SVD give ireproducible results

Sergei Steshenko sergstesh at yahoo.com
Mon Jul 28 14:35:52 CDT 2008




--- On Mon, 7/28/08, David Bateman <David.Bateman at motorola.com> wrote:

> From: David Bateman <David.Bateman at motorola.com>
> Subject: Re: Complex left-divide and SVD give ireproducible results
> To: "Dirk Laurie" <dpl at sun.ac.za>
> Cc: bug at octave.org
> Date: Monday, July 28, 2008, 8:24 AM
> Dirk Laurie wrote:
> > --------
> > Bug report for Octave 2.1.73 configured for
> i486-pc-linux-gnu    
... 
> Basically, I think you just have to live with it for the
> latest
> compilers and if you use an optimized blas. My take on the
> reason for
> such issues is that the x86 processors have 80 bit internal
> registers
> and optimized blas implementations and the 4.0.x release of
> the gnu tool
> chain and later make use of these additional bits of
> precision. That is
> between operations on the x86 registers, the floating-point
> values don't
> have to be stored back to the 64-bit value that contains it
> saving the
> cost of a memory copy from and back to the registers. This
> can give
> significant improvement in the performance and a marginal
> (and
> unpredictable) improvement in the accuracy.
> 
> However, during a context switch on the x86 processors, all
> of the
> registers are swapped back to memory and those 64-bit
> values and because
> you can't control when the context switches might
> happen when the matrix
> sizes start to get large you can get unpredictable
> differences in the
> numerical solutions.
> 
> So what can you do if you absolutely have to always have
> the same
> numerical values
...
> Cheers
> David
> 
> 
> -- 
> David Bateman                               

Won't using SSE2 arithmetic fix the problem ?

I think, though I'm not 100% sure, that SSE2 FP registers aew 64 bit,
not 80 bit.

--Sergei.


      


More information about the Bug-octave mailing list