[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GRE: rogue comment: IEEE 754R and Reproducibility



My multicore collaborators think that, independent of floating point,
in order to support the vast majority of programmers at the
productivity level, the system
  (1) must support debugging at the productivity layer, i.e. give the 
same results
       twice in a row from a.out, if necessary with a performance hit, 
modulo the next point:
  (2) should not add nondeterminism to an otherwise deterministically
       constructed program at the "productivity layer", or at least require
       an explicit setting of an "allow nondeterminism if it speeds up 
up a lot"
       switch

My question about  IEEE 754R is whether there are any features that
make this (modest) level of reproducibility hard to achieve? Clearly
care must be taken to make sure operations like sum-reductions
can occur in a deterministic order if desired.

I don't think 754R adds any surprises - those would come from language
semantics, particularly languages that leave lots of things 
implementation-defined.

There is one explicitly non-deterministic group of 754R operations - 
the scaled product reductions - that were retained in 754R when the
other reductions were thrown out, because the scaled product reductions
allow 754R to avoid ever mentioning scaled exponents in underflow and
overflow trap handlers, or the 7094 counting mode which accomplished the
same end.     754R provides a deterministic way of getting scaled product
reductions - write a loop with logb and scalb.

754 | revision | FAQ | references | list archive