26 #ifndef MSHADOW_EXTENSION_REDUCETO1D_H_ 27 #define MSHADOW_EXTENSION_REDUCETO1D_H_ 28 #include "../extension.h" 41 template<
typename SrcExp,
typename DType,
typename Reducer,
int m_dimkeep>
43 public Exp<ReduceTo1DExp<SrcExp, DType, Reducer, m_dimkeep>,
44 DType, type::kComplex> {
50 ReduceTo1DExp(
const SrcExp& src, DType scale) : src_(src), scale_(scale) {}
60 template<
int dimkeep,
typename SrcExp,
typename DType,
int etype>
75 template<
int dimkeep,
typename Reducer,
typename SrcExp,
typename DType,
int etype>
89 template<
typename SrcExp,
typename DType,
int etype>
93 ::Error_Expression_Does_Not_Meet_Dimension_Req();
94 return sumall_except_dim<1>(exp);
96 template<
typename SV,
typename Device,
typename DType,
97 typename SrcExp,
typename Reducer,
int m_dimkeep>
105 Reducer, m_dimkeep> &exp) {
108 MapReduceKeepHighDim<SV, Reducer, dimkeep>(dst, exp.src_, exp.scale_);
111 template<
typename SV,
typename Device,
typename DType,
112 typename SrcExp,
typename Reducer>
118 MapReduceKeepLowest<SV, Reducer>(dst, exp.
src_, exp.
scale_);
123 #endif // MSHADOW_EXTENSION_REDUCETO1D_H_ static void Eval(Tensor< Device, 1, DType > *dst, const ReduceTo1DExp< SrcExp, DType, Reducer, m_dimkeep > &exp)
Definition: reduceto1d.h:103
const SrcExp & src_
source operand
Definition: reduceto1d.h:46
ReduceTo1DExp(const SrcExp &src, DType scale)
construct a repmat expression from src and nrow
Definition: reduceto1d.h:50
used to help static type check
Definition: expr_engine-inl.h:331
ReduceTo1DExp< SrcExp, DType, Reducer, ExpInfo< SrcExp >::kDim-dimkeep > reduce_except_dim(const Exp< SrcExp, DType, etype > &exp)
reduce over all dimensions, except dimkeep
Definition: reduceto1d.h:78
DType scale_
source operand, scale of the
Definition: reduceto1d.h:48
reduction to 1 dimension tensor input: Tensor<Device,k>: ishape output: Tensor<Device,1> shape[0] = ishape[dimkeep];
Definition: reduceto1d.h:42
static type inference template, used to get the dimension of each expression, if ExpInfo<E>::kDim == ...
Definition: expr_engine-inl.h:263
static void Eval(Tensor< Device, 1, DType > *dst, const ReduceTo1DExp< SrcExp, DType, Reducer, 1 > &exp)
Definition: reduceto1d.h:116
some engine that evaluate complex expression
Definition: expr_engine-inl.h:456
sum reducer
Definition: base.h:891
defines how expression exp can be evaluated and stored into dst
Definition: expression.h:80
const SubType & self(void) const
Definition: expression.h:83
overloaded + operator between half_t and bf16_t
Definition: base.h:327
general tensor
Definition: tensor.h:421
ReduceTo1DExp< SrcExp, DType, red::sum, 1 > sum_rows(const Exp< SrcExp, DType, etype > &exp)
a expression that sum over rows of a matrix
Definition: reduceto1d.h:91
ReduceTo1DExp< SrcExp, DType, red::sum, ExpInfo< SrcExp >::kDim-dimkeep > sumall_except_dim(const Exp< SrcExp, DType, etype > &exp)
a sum over all dimensions, except dimkeep
Definition: reduceto1d.h:63