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