127inline void TopKV2(
const Shape &input_shape,
const T *input_data,
const uint32_t k,
128 T *output_value_data, Tidx *output_indices_data)
131 int32_t num_rows = 1;
134 num_rows *= input_shape.
Dims(i);
138 for (int32_t row = 0; row < num_rows; ++row)
140 const T *values_row = input_data + row * row_size;
142 for (int32_t c = 0; c < row_size; ++c)
148 Tidx *indexes_row = output_indices_data + row * k;
149 T *output_row = output_value_data + row * k;
152 std::copy(top_k.begin(), top_k.end(), indexes_row);
153 std::transform(top_k.begin(), top_k.end(), output_row,
154 [values_row](
const int32_t loc) { return values_row[loc]; });
void TopKV2(const Shape &input_shape, const T *input_data, const uint32_t k, T *output_value_data, Tidx *output_indices_data)