[Numpy-discussion] deterministic, reproducible matmul / __matmult_
pav at iki.fi
Mon Jul 11 15:27:37 EDT 2016
Mon, 11 Jul 2016 13:01:49 -0400, Jason Newton kirjoitti:
> Does the ML have any ideas on how one could get a matmul that will not
> allow any funny business on the evaluation of the products? Funny
> business here is something like changing the evaluation order additions
> of terms. I want strict IEEE 754 compliance - no 80 bit registers, and
> perhaps control of the rounding mode, no unsafe math optimizations.
If you link Numpy with a BLAS and LAPACK libraries that have been
compiled for this purpose, and turn on the compiler flags that enforce
strict IEEE (and disable SSE) when compiling Numpy, you probably will get
reproducible builds. Numpy itself just offloads the dot computations to
BLAS, so if your BLAS is reproducible, things should mainly be OK.
You may also need to turn off the SSE optimizations in Numpy, because
these can make results depend on memory alignment --- not in dot
products, but in other computations.
Out of curiosity, what is the application where this is necessary?
Maybe there is a numerically stable formulation?
More information about the NumPy-Discussion