Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType > Class Template Reference

#include <TensorReductionSycl.h>

Public Types

typedef Evaluator::CoeffReturnType CoeffReturnType
 
typedef Evaluator::EvaluatorPointerType EvaluatorPointerType
 
typedef Evaluator::Index Index
 
typedef OpDefiner< OpType, CoeffReturnType, Index, false > OpDef
 
typedef OpDef::type Op
 

Public Member Functions

template<typename Scratch >
 GenericNondeterministicReducer (Scratch, Evaluator evaluator_, EvaluatorPointerType output_accessor_, OpType functor_, Index range_, Index num_values_to_reduce_)
 
void operator() (cl::sycl::nd_item< 1 > itemID) const
 

Private Attributes

Evaluator evaluator
 
EvaluatorPointerType output_accessor
 
Op functor
 
Index range
 
Index num_values_to_reduce
 

Member Typedef Documentation

◆ CoeffReturnType

template<typename Evaluator , typename OpType >
typedef Evaluator::CoeffReturnType Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::CoeffReturnType

◆ EvaluatorPointerType

template<typename Evaluator , typename OpType >
typedef Evaluator::EvaluatorPointerType Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::EvaluatorPointerType

◆ Index

template<typename Evaluator , typename OpType >
typedef Evaluator::Index Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::Index

◆ Op

template<typename Evaluator , typename OpType >
typedef OpDef::type Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::Op

◆ OpDef

template<typename Evaluator , typename OpType >
typedef OpDefiner<OpType, CoeffReturnType, Index, false> Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::OpDef

Constructor & Destructor Documentation

◆ GenericNondeterministicReducer()

template<typename Evaluator , typename OpType >
template<typename Scratch >
Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::GenericNondeterministicReducer ( Scratch  ,
Evaluator  evaluator_,
EvaluatorPointerType  output_accessor_,
OpType  functor_,
Index  range_,
Index  num_values_to_reduce_ 
)
inline
227  : evaluator(evaluator_),
228  output_accessor(output_accessor_),
229  functor(OpDef::get_op(functor_)),
230  range(range_),
231  num_values_to_reduce(num_values_to_reduce_) {}
Op functor
Definition: TensorReductionSycl.h:250
Index range
Definition: TensorReductionSycl.h:251
Index num_values_to_reduce
Definition: TensorReductionSycl.h:252
Evaluator evaluator
Definition: TensorReductionSycl.h:248
EvaluatorPointerType output_accessor
Definition: TensorReductionSycl.h:249
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE type get_op(Op &op)
Definition: TensorReductionSycl.h:41

Member Function Documentation

◆ operator()()

template<typename Evaluator , typename OpType >
void Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::operator() ( cl::sycl::nd_item< 1 >  itemID) const
inline
233  {
234  // This is to bypass the statefull condition in Eigen meanReducer
235  Op non_const_functor;
236  std::memcpy(&non_const_functor, &functor, sizeof(Op));
237  auto output_accessor_ptr = output_accessor;
238  Index globalid = static_cast<Index>(itemID.get_global_linear_id());
239  if (globalid < range) {
240  CoeffReturnType accum = functor.initialize();
242  evaluator, evaluator.firstInput(globalid), non_const_functor, &accum);
243  output_accessor_ptr[globalid] = OpDef::finalise_op(functor.finalize(accum), num_values_to_reduce);
244  }
245  }
Evaluator::Index Index
Definition: TensorReductionSycl.h:221
Evaluator::CoeffReturnType CoeffReturnType
Definition: TensorReductionSycl.h:219
OpDef::type Op
Definition: TensorReductionSycl.h:223
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType finalise_op(const PacketReturnType &accumulator, const Index &)
Definition: TensorReductionSycl.h:43
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const Self &self, typename Self::Index firstIndex, Op &reducer, typename Self::CoeffReturnType *accum)
Definition: TensorReduction.h:139

References Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::evaluator, Eigen::TensorSycl::internal::OpDefiner< Op, CoeffReturnType, Index, Vectorizable >::finalise_op(), Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::functor, Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::num_values_to_reduce, Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::output_accessor, Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::range, and Eigen::internal::GenericDimReducer< DimIndex, Self, Op >::reduce().

Member Data Documentation

◆ evaluator

template<typename Evaluator , typename OpType >
Evaluator Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::evaluator
private

◆ functor

template<typename Evaluator , typename OpType >
Op Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::functor
private

◆ num_values_to_reduce

template<typename Evaluator , typename OpType >
Index Eigen::TensorSycl::internal::GenericNondeterministicReducer< Evaluator, OpType >::num_values_to_reduce
private

◆ output_accessor

◆ range


The documentation for this class was generated from the following file: