Improve reduce_on_gpu kernel

	- loop unrolling
	- warp reduction using volatile local memory