works so-so, pointcloud reduction is buggy-by-design.
split up CUDA code for reuse - doesn't compile :|