Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Cool. I see you're doing a regular (not compensated) horizontal sum in a loop. Horizontal sums are slow, but I'm guessing you wanted to have exactly the same result as if the sum was calculated sequentially (for doubles)? Do you know if any databases use more accurate summation methods (compensated summation)?


Are you referring to https://en.wikipedia.org/wiki/Kahan_summation_algorithm by any chance?

If this is the case - we can easily implement this algorithm.


There are several accurate summation algorithms; Kahan is one of them. Looks like Postgresql uses an accurate summation method[0] (and not Kahan), so that's probably a big factor in why theirs is so much slower and also makes for an unfair comparison. FWIW I posted AVX2 and AVX512 Kahan summation implementations here[1].

[0] https://github.com/postgres/postgres/blob/3ed2005ff595d34927...

[1] http://blog.zachbjornson.com/2019/08/11/fast-float-summation...


Thank you Zach, this is super interesting and useful! I wonder why PG do not use Kahan?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: