 		cudaMemcpy(&temp_result, &output[0], sizeof(data_t), cudaMemcpyDeviceToHost);
 		result = op(result, temp_result);
 		output = base_output;
+		input = base_input;
+		cudaFree(input);
 		cudaFree(output);
 		//nvtxRangeEnd(nvtx2);
 
 		return result;
-	} // reduce()
+	} // reduce_single()
 
 
 } // namespace cuda

		data_t result = init;
		unsigned int n_grid = min(n, n_grid_max);
		unsigned int n_i = n;
		// the input data segment to process
		data_t *input = start;
		output = base_output;

		while(1) {

  *
  *  File: reduce.cuh
  *  Created: Feb 12, 2013
  *  Modified: Fri 23 Aug 2013 12:01:06 PM PDT
  *
  *  Author: Abhinav Sarje <asarje@lbl.gov>
  */
