ReduceOps.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #pragma once
  2. #include <ATen/native/DispatchStub.h>
  3. #include <c10/util/Optional.h>
  4. namespace c10 {
  5. class Scalar;
  6. }
  7. namespace at {
  8. struct TensorIterator;
  9. class Tensor;
  10. }
  11. namespace at { namespace native {
  12. using reduce_fn = void(*)(TensorIterator &);
  13. DECLARE_DISPATCH(reduce_fn, sum_stub);
  14. DECLARE_DISPATCH(reduce_fn, nansum_stub);
  15. DECLARE_DISPATCH(reduce_fn, prod_stub);
  16. DECLARE_DISPATCH(reduce_fn, mean_stub);
  17. DECLARE_DISPATCH(reduce_fn, and_stub);
  18. DECLARE_DISPATCH(reduce_fn, or_stub);
  19. DECLARE_DISPATCH(reduce_fn, min_values_stub);
  20. DECLARE_DISPATCH(reduce_fn, max_values_stub);
  21. DECLARE_DISPATCH(reduce_fn, argmax_stub);
  22. DECLARE_DISPATCH(reduce_fn, argmin_stub);
  23. using reduce_std_var_function =
  24. void (*)(TensorIterator&, int64_t correction, bool take_sqrt);
  25. DECLARE_DISPATCH(reduce_std_var_function, std_var_stub);
  26. using reduce_norm_fn =
  27. void (*)(Tensor&, const Tensor&, const c10::Scalar&, c10::optional<int64_t>);
  28. DECLARE_DISPATCH(reduce_norm_fn, norm_kernel);
  29. using reduce_fn_flag = void(*)(TensorIterator &, const c10::Scalar&);
  30. DECLARE_DISPATCH(reduce_fn_flag, norm_stub);
  31. using structured_cum_fn = void (*)(const Tensor&, const Tensor&, int64_t);
  32. using cum_fn = void (*)(Tensor&, const Tensor&, int64_t);
  33. DECLARE_DISPATCH(structured_cum_fn, cumsum_stub);
  34. DECLARE_DISPATCH(structured_cum_fn, cumprod_stub);
  35. DECLARE_DISPATCH(cum_fn, logcumsumexp_stub);
  36. DECLARE_DISPATCH(void (*)(const Tensor&, int64_t, bool, Tensor&, Tensor&), aminmax_stub);
  37. DECLARE_DISPATCH(void (*)(const Tensor&, Tensor&, Tensor&), aminmax_allreduce_stub);
  38. // Used in cuda/Normalization.cu
  39. TORCH_API std::tuple<Tensor&,Tensor&> var_mean_out(
  40. Tensor &result1, Tensor &result2, const Tensor &self, IntArrayRef dim,
  41. int64_t correction, bool keepdim);
  42. }} // namespace at::native