Yes, but the proposed variant uses four unnecessary global memory IO operations (write `a`, `b`, `c`, read `c`). I am sure this is the reason why it is still slower than the STL version. It should be easy to extend the parallel version of `accumulate` to work with generic random access iterators.