10 #ifndef EIGEN_PARTIALREDUX_H
11 #define EIGEN_PARTIALREDUX_H
43 template <
typename Func,
typename Evaluator>
46 OuterSize =
int(Evaluator::IsRowMajor) ? Evaluator::RowsAtCompileTime : Evaluator::ColsAtCompileTime,
54 template <
typename PacketType,
typename Func>
57 return pset1<PacketType>(
zero);
61 template <
typename PacketType,
typename Scalar>
63 return pset1<PacketType>(
Scalar(1));
67 template <typename Func, typename Evaluator, int Unrolling = packetwise_redux_traits<Func, Evaluator>::Unrolling>
71 template <
typename Func,
typename Evaluator>
76 template <
typename PacketType>
88 template <
typename Func,
typename Evaluator, Index Start>
90 template <
typename PacketType>
92 return packetwise_redux_empty_value<PacketType>(
f);
97 template <
typename Func,
typename Evaluator>
102 template <
typename PacketType>
104 if (
size == 0)
return packetwise_redux_empty_value<PacketType>(
func);
107 PacketType p =
eval.template packetByOuterInner<Unaligned, PacketType>(0, 0);
112 for (;
i < size4;
i += 4)
114 p,
func.packetOp(
func.packetOp(
eval.template packetByOuterInner<Unaligned, PacketType>(
i + 0, 0),
115 eval.template packetByOuterInner<Unaligned, PacketType>(
i + 1, 0)),
116 func.packetOp(
eval.template packetByOuterInner<Unaligned, PacketType>(
i + 2, 0),
117 eval.template packetByOuterInner<Unaligned, PacketType>(
i + 3, 0))));
118 for (;
i <
size; ++
i)
p =
func.packetOp(
p,
eval.template packetByOuterInner<Unaligned, PacketType>(
i, 0));
123 template <
typename ArgType,
typename MemberOp,
int Direction>
125 :
evaluator_base<PartialReduxExpr<ArgType, MemberOp, Direction> > {
146 (TraversalSize != 0),
170 template <
int LoadMode,
typename PacketType>
175 template <
int LoadMode,
typename PacketType>
190 if (PacketSize == 1)
return internal::pset1<PacketType>(coeff(idx));
193 PanelEvaluator panel_eval(panel);
194 typedef typename MemberOp::BinaryOp BinaryOp;
196 panel_eval, m_functor.binaryFunc(), m_arg.outerSize());
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Direction
An enum that indicates the direction in Cartesian coordinates.
Definition: GeneralDefine.h:56
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
#define EIGEN_UNROLLING_LIMIT
Definition: Settings.h:23
#define EIGEN_INTERNAL_CHECK_COST_VALUE(C)
Definition: StaticAssert.h:101
float * p
Definition: Tutorial_Map_using.cpp:9
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
Expression of a fixed-size or dynamic-size block.
Definition: Block.h:110
Generic expression of a partially reduxed matrix.
Definition: VectorwiseOp.h:58
static int f(const TensorMap< Tensor< int, 3 > > &tensor)
Definition: cxx11_tensor_map.cpp:237
DirectionType
Definition: Constants.h:263
@ CompleteUnrolling
Definition: Constants.h:306
@ NoUnrolling
Definition: Constants.h:301
@ Vertical
Definition: Constants.h:266
const unsigned int PacketAccessBit
Definition: Constants.h:97
const unsigned int LinearAccessBit
Definition: Constants.h:133
const unsigned int RowMajorBit
Definition: Constants.h:70
typename remove_all< T >::type remove_all_t
Definition: Meta.h:142
EIGEN_DEVICE_FUNC PacketType packetwise_redux_empty_value(const Func &)
Definition: PartialReduxEvaluator.h:55
typename add_const_on_value_type< T >::type add_const_on_value_type_t
Definition: Meta.h:274
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
squared absolute value
Definition: GlobalFunctions.h:87
const unsigned int HereditaryBits
Definition: Constants.h:198
const int HugeCost
Definition: Constants.h:48
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
const int Dynamic
Definition: Constants.h:25
Extend namespace for flags.
Definition: fsi_chan_precond_driver.cc:56
Definition: Eigen_Colamd.h:49
Definition: TensorMeta.h:47
Definition: XprHelper.h:427
ArgType::Scalar InputScalar
Definition: PartialReduxEvaluator.h:130
add_const_on_value_type_t< ArgTypeNested > ConstArgTypeNested
Definition: PartialReduxEvaluator.h:128
PartialReduxExpr< ArgType, MemberOp, Direction > XprType
Definition: PartialReduxEvaluator.h:126
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC PacketType packet(Index idx) const
Definition: PartialReduxEvaluator.h:176
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar coeff(Index index) const
Definition: PartialReduxEvaluator.h:166
MemberOp::template Cost< int(TraversalSize)> CostOpType
Definition: PartialReduxEvaluator.h:135
internal::remove_all_t< ArgTypeNested > ArgTypeNestedCleaned
Definition: PartialReduxEvaluator.h:129
internal::nested_eval< ArgType, 1 >::type ArgTypeNested
Definition: PartialReduxEvaluator.h:127
ConstArgTypeNested m_arg
Definition: PartialReduxEvaluator.h:201
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType packet(Index i, Index j) const
Definition: PartialReduxEvaluator.h:171
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar coeff(Index i, Index j) const
Definition: PartialReduxEvaluator.h:162
XprType::Scalar Scalar
Definition: PartialReduxEvaluator.h:131
const MemberOp m_functor
Definition: PartialReduxEvaluator.h:202
EIGEN_DEVICE_FUNC evaluator(const XprType xpr)
Definition: PartialReduxEvaluator.h:154
XprType::CoeffReturnType CoeffReturnType
Definition: PartialReduxEvaluator.h:160
Definition: CoreEvaluators.h:118
Definition: CoreEvaluators.h:104
Definition: XprHelper.h:205
std::conditional_t< Evaluate, PlainObject, typename ref_selector< T >::type > type
Definition: XprHelper.h:549
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType run(const Evaluator &eval, const Func &func, Index)
Definition: PartialReduxEvaluator.h:77
redux_novec_unroller< Func, Evaluator, 0, Evaluator::SizeAtCompileTime > Base
Definition: PartialReduxEvaluator.h:73
Evaluator::Scalar Scalar
Definition: PartialReduxEvaluator.h:74
static EIGEN_DEVICE_FUNC PacketType run(const Evaluator &eval, const Func &func, Index size)
Definition: PartialReduxEvaluator.h:103
Evaluator::Scalar Scalar
Definition: PartialReduxEvaluator.h:99
redux_traits< Func, Evaluator >::PacketType PacketScalar
Definition: PartialReduxEvaluator.h:100
Definition: PartialReduxEvaluator.h:68
Definition: PartialReduxEvaluator.h:44
@ Cost
Definition: PartialReduxEvaluator.h:47
@ OuterSize
Definition: PartialReduxEvaluator.h:46
find_best_packet< typename Evaluator::Scalar, Evaluator::SizeAtCompileTime >::type PacketType
Definition: Redux.h:32
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketType run(const Evaluator &, const Func &f)
Definition: PartialReduxEvaluator.h:91
Template functor to compute the product of two scalars.
Definition: BinaryFunctors.h:73
Definition: ForwardDeclarations.h:21
Definition: GenericPacketMath.h:134
Definition: benchGeometry.cpp:21
EIGEN_DONT_INLINE Scalar zero()
Definition: svd_common.h:232
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2
Definition: ZVector/PacketMath.h:50