73inline void ReduceGeneric(
const T *input_data,
const int *input_dims,
const int input_num_dims,
74 T *output_data,
const int *axis,
const int64_t num_axis_dimensions,
75 T init_value,
const int output_flat_size, T reducer(
const T,
const T))
78 for (
int i = 0; i < input_num_dims; ++i)
80 if (input_dims[i] == 0)
84 for (
size_t idx = 0; idx < output_flat_size; ++idx)
86 output_data[idx] = init_value;
90 int num_resolved_axis = 0;
91 if (!resolveAxis(input_num_dims, axis, num_axis_dimensions, &num_resolved_axis))
98 for (
int idx = 0; idx < input_num_dims; ++idx)
105 size_t input_offset =
reducedOutputOffset(input_num_dims, input_dims, temp_index, 0,
nullptr);
106 size_t output_offset =
108 output_data[output_offset] = reducer(output_data[output_offset], input_data[input_offset]);
109 }
while (
nextIndex(input_num_dims, input_dims, temp_index));
void ReduceGeneric(const T *input_data, const int *input_dims, const int input_num_dims, T *output_data, const int *axis, const int64_t num_axis_dimensions, T init_value, const int output_flat_size, T reducer(const T, const T))