Gpureduce: support multiple dtype, prod, max and min