|
#pragma once |
|
|
|
#include <ATen/native/DispatchStub.h> |
|
#include <c10/util/Optional.h> |
|
|
|
namespace c10 { |
|
class Scalar; |
|
} |
|
|
|
namespace at { |
|
struct TensorIterator; |
|
class Tensor; |
|
} |
|
|
|
namespace at { namespace native { |
|
|
|
using reduce_fn = void(*)(TensorIterator &); |
|
|
|
DECLARE_DISPATCH(reduce_fn, sum_stub); |
|
DECLARE_DISPATCH(reduce_fn, nansum_stub); |
|
DECLARE_DISPATCH(reduce_fn, prod_stub); |
|
DECLARE_DISPATCH(reduce_fn, mean_stub); |
|
DECLARE_DISPATCH(reduce_fn, and_stub); |
|
DECLARE_DISPATCH(reduce_fn, or_stub); |
|
DECLARE_DISPATCH(reduce_fn, min_values_stub); |
|
DECLARE_DISPATCH(reduce_fn, max_values_stub); |
|
DECLARE_DISPATCH(reduce_fn, argmax_stub); |
|
DECLARE_DISPATCH(reduce_fn, argmin_stub); |
|
|
|
using reduce_std_var_function = |
|
void (*)(TensorIterator&, int64_t correction, bool take_sqrt); |
|
DECLARE_DISPATCH(reduce_std_var_function, std_var_stub); |
|
|
|
using reduce_norm_fn = |
|
void (*)(Tensor&, const Tensor&, const c10::Scalar&, c10::optional<int64_t>); |
|
DECLARE_DISPATCH(reduce_norm_fn, norm_kernel); |
|
|
|
using reduce_fn_flag = void(*)(TensorIterator &, const c10::Scalar&); |
|
DECLARE_DISPATCH(reduce_fn_flag, norm_stub); |
|
|
|
using structured_cum_fn = void (*)(const Tensor&, const Tensor&, int64_t); |
|
using cum_fn = void (*)(Tensor&, const Tensor&, int64_t); |
|
DECLARE_DISPATCH(structured_cum_fn, cumsum_stub); |
|
DECLARE_DISPATCH(structured_cum_fn, cumprod_stub); |
|
DECLARE_DISPATCH(cum_fn, logcumsumexp_stub); |
|
|
|
DECLARE_DISPATCH(void (*)(const Tensor&, int64_t, bool, Tensor&, Tensor&), aminmax_stub); |
|
DECLARE_DISPATCH(void (*)(const Tensor&, Tensor&, Tensor&), aminmax_allreduce_stub); |
|
|
|
|
|
TORCH_API std::tuple<Tensor&,Tensor&> var_mean_out( |
|
Tensor &result1, Tensor &result2, const Tensor &self, IntArrayRef dim, |
|
int64_t correction, bool keepdim); |
|
|
|
}} |
|
|