RFR 8005311: Add Scalable Updatable Variables, DoubleAccumulator, DoubleAdder, LongAccumulator, LongAdder
Howard Lovatt
howard.lovatt at gmail.com
Mon Jan 14 06:18:59 UTC 2013
If you make a binary tree and sum it, the rounding errors aren't that bad and this algorithm is easy to parallelise.
Higham, Nicholas J 1993 the accuracy of floating point summation SIAM Sci Comp 14 (4) 783-799
Also see Wikipedia for a description of Kahan summation and a general discussion of this topic.
Why not commit to binary tree reductions and that will allow everyone to understand what is going on and design lambdas accordingly.
-- Howard.
Sent from my iPad
On 13/01/2013, at 2:04 AM, Doug Lea <dl at cs.oswego.edu> wrote:
> On 01/11/13 21:37, Joe Darcy wrote:
>
>> I would prefer to cautionary note along the lines of "if you want numerical
>> accuracy, take care to use a summation algorithm with defined worst-case behavior."
>>
>> (Varying magnitude is not so much of a problem if you add things up in the right
>> order.)
>
> Thanks. I do not believe such an algorithm exists, because
> no ordering control is possible, and all other known accuracy
> improvements (like Kahn) require multiword atomicity, which we
> explicitly do not provide.
>
> Which leaves me thinking that the current disclaimer (below)
> is the best we can do.
>
> -Doug
>
>>>> "The order of accumulation within or across threads is not guaranteed.
>>>> Thus, this class may not be applicable if numerical stability is
>>>> required, especially when combining values of substantially different
>>>> orders of magnitude."
>>>>
More information about the core-libs-dev
mailing list