OpenCL 2.0 already has reductions for thread groups.
work_group_reduce_add()
this command adds all participant threads' elements into single value and broadcasts it to all participant threads.
Its execution time will be comparable to an optimized custom algorithm so it can get automatically upgraded for speed, depending on the hardware vendor's implementation of these functions.
You can say "just workgroup scope is not enough" but whole thing about OpenCL and CUDA is breaking a work into smaller pieces and computing them in parallel. You could use these functions to compute a global sum reduction with good enough performance.