Go to the documentation of this file.
10 #ifndef EIGEN_CXX11_TENSOR_TENSOR_EVALUATOR_H
11 #define EIGEN_CXX11_TENSOR_TENSOR_EVALUATOR_H
27 template<
typename Derived,
typename Device>
83 #ifdef EIGEN_USE_THREADS
84 template <
typename EvalSubExprsCallback>
90 #endif // EIGEN_USE_THREADS
107 return internal::ploadt<PacketReturnType, LoadMode>(
m_data + index);
119 return internal::ploadu<PacketReturnTypeT>(
m_data + index, umask);
125 return internal::pstoret<Scalar, PacketReturnType, StoreMode>(
m_data + index,
x);
159 bool =
false)
const {
164 template<
typename TensorBlock>
174 TensorBlockAssign::Run(
175 TensorBlockAssign::target(
desc.dimensions(),
183 #ifdef EIGEN_USE_SYCL
197 T loadConstant(
const T* address) {
201 #if defined(EIGEN_CUDA_ARCH) && EIGEN_CUDA_ARCH >= 350
203 float loadConstant(
const float* address) {
204 return __ldg(address);
207 double loadConstant(
const double* address) {
208 return __ldg(address);
215 #ifdef EIGEN_USE_SYCL
217 template <cl::sycl::access::mode AcMd,
typename T>
218 T &loadConstant(
const Eigen::TensorSycl::internal::RangeAccess<AcMd, T> &address) {
226 template<
typename Derived,
typename Device>
279 #ifdef EIGEN_USE_THREADS
280 template <
typename EvalSubExprsCallback>
286 #endif // EIGEN_USE_THREADS
292 return loadConstant(
m_data+index);
298 return internal::ploadt_ro<PacketReturnType, LoadMode>(
m_data + index);
310 return internal::ploadu<PacketReturnTypeT>(
m_data + index, umask);
316 :
m_dims.IndexOfRowMajor(coords);
317 return loadConstant(
m_data+index);
332 bool =
false)
const {
338 #ifdef EIGEN_USE_SYCL
355 template<
typename NullaryOp,
typename ArgType,
typename Device>
361 : m_functor(op.functor()), m_argImpl(op.nestedExpression(), device), m_wrapper()
376 #ifdef EIGEN_USE_SYCL
395 #ifdef EIGEN_USE_THREADS
396 template <
typename EvalSubExprsCallback>
401 #endif // EIGEN_USE_THREADS
407 return m_wrapper(m_functor, index);
410 template<
int LoadMode>
413 return m_wrapper.template packetOp<PacketReturnType, Index>(m_functor, index);
424 #ifdef EIGEN_USE_SYCL
441 template<
typename UnaryOp,
typename ArgType,
typename Device>
459 m_functor(op.functor()),
460 m_argImpl(op.nestedExpression(), device)
488 m_argImpl.evalSubExprsIfNeeded(
NULL);
492 #ifdef EIGEN_USE_THREADS
493 template <
typename EvalSubExprsCallback>
496 m_argImpl.evalSubExprsIfNeededAsync(
nullptr, [done](
bool) { done(
true); });
498 #endif // EIGEN_USE_THREADS
506 return m_functor(m_argImpl.coeff(index));
509 template<
int LoadMode>
512 return m_functor.packetOp(m_argImpl.template packet<LoadMode>(index));
517 return m_argImpl.costPerCoeff(vectorized) +
524 return m_argImpl.getResourceRequirements().addCostPerCoeff(
530 bool =
false)
const {
536 #ifdef EIGEN_USE_SYCL
553 template<
typename BinaryOp,
typename LeftArgType,
typename RightArgType,
typename Device>
575 m_functor(op.functor()),
576 m_leftImpl(op.lhsExpression(), device),
577 m_rightImpl(op.rhsExpression(), device)
612 return m_leftImpl.dimensions();
616 m_leftImpl.evalSubExprsIfNeeded(
NULL);
617 m_rightImpl.evalSubExprsIfNeeded(
NULL);
621 #ifdef EIGEN_USE_THREADS
622 template <
typename EvalSubExprsCallback>
626 m_leftImpl.evalSubExprsIfNeededAsync(
nullptr, [
this, done](
bool) {
627 m_rightImpl.evalSubExprsIfNeededAsync(
nullptr,
628 [done](
bool) { done(
true); });
631 #endif // EIGEN_USE_THREADS
634 m_leftImpl.cleanup();
635 m_rightImpl.cleanup();
640 return m_functor(m_leftImpl.coeff(index), m_rightImpl.coeff(index));
642 template<
int LoadMode>
645 return m_functor.packetOp(m_leftImpl.template packet<LoadMode>(index), m_rightImpl.template packet<LoadMode>(index));
651 return m_leftImpl.costPerCoeff(vectorized) +
652 m_rightImpl.costPerCoeff(vectorized) +
660 m_leftImpl.getResourceRequirements(),
661 m_rightImpl.getResourceRequirements())
667 bool =
false)
const {
668 desc.DropDestinationBuffer();
670 m_rightImpl.block(
desc, scratch), m_functor);
675 #ifdef EIGEN_USE_SYCL
678 m_leftImpl.bind(cgh);
679 m_rightImpl.bind(cgh);
691 template<
typename TernaryOp,
typename Arg1Type,
typename Arg2Type,
typename Arg3Type,
typename Device>
712 : m_functor(op.functor()),
713 m_arg1Impl(op.arg1Expression(), device),
714 m_arg2Impl(op.arg2Expression(), device),
715 m_arg3Impl(op.arg3Expression(), device)
721 STORAGE_KIND_MUST_MATCH)
724 STORAGE_KIND_MUST_MATCH)
727 STORAGE_INDEX_MUST_MATCH)
730 STORAGE_INDEX_MUST_MATCH)
751 return m_arg1Impl.dimensions();
755 m_arg1Impl.evalSubExprsIfNeeded(
NULL);
756 m_arg2Impl.evalSubExprsIfNeeded(
NULL);
757 m_arg3Impl.evalSubExprsIfNeeded(
NULL);
761 m_arg1Impl.cleanup();
762 m_arg2Impl.cleanup();
763 m_arg3Impl.cleanup();
768 return m_functor(m_arg1Impl.coeff(index), m_arg2Impl.coeff(index), m_arg3Impl.coeff(index));
770 template<
int LoadMode>
773 return m_functor.packetOp(m_arg1Impl.template packet<LoadMode>(index),
774 m_arg2Impl.template packet<LoadMode>(index),
775 m_arg3Impl.template packet<LoadMode>(index));
781 return m_arg1Impl.costPerCoeff(vectorized) +
782 m_arg2Impl.costPerCoeff(vectorized) +
783 m_arg3Impl.costPerCoeff(vectorized) +
789 #ifdef EIGEN_USE_SYCL
792 m_arg1Impl.bind(cgh);
793 m_arg2Impl.bind(cgh);
794 m_arg3Impl.bind(cgh);
808 template<
typename IfArgType,
typename ThenArgType,
typename ElseArgType,
typename Device>
832 : m_condImpl(op.ifExpression(), device),
833 m_thenImpl(op.thenExpression(), device),
834 m_elseImpl(op.elseExpression(), device)
863 struct TensorSelectOpBlockFactory {
864 template <
typename IfArgXprType,
typename ThenArgXprType,
typename ElseArgXprType>
869 template <
typename IfArgXprType,
typename ThenArgXprType,
typename ElseArgXprType>
871 const IfArgXprType& if_expr,
const ThenArgXprType& then_expr,
const ElseArgXprType& else_expr)
const {
877 IfArgTensorBlock, ThenArgTensorBlock,
885 return m_condImpl.dimensions();
889 m_condImpl.evalSubExprsIfNeeded(
NULL);
890 m_thenImpl.evalSubExprsIfNeeded(
NULL);
891 m_elseImpl.evalSubExprsIfNeeded(
NULL);
895 #ifdef EIGEN_USE_THREADS
896 template <
typename EvalSubExprsCallback>
899 m_condImpl.evalSubExprsIfNeeded(
nullptr, [
this, done](
bool) {
900 m_thenImpl.evalSubExprsIfNeeded(
nullptr, [
this, done](
bool) {
901 m_elseImpl.evalSubExprsIfNeeded(
nullptr, [done](
bool) { done(
true); });
905 #endif // EIGEN_USE_THREADS
908 m_condImpl.cleanup();
909 m_thenImpl.cleanup();
910 m_elseImpl.cleanup();
915 return m_condImpl.coeff(index) ? m_thenImpl.coeff(index) : m_elseImpl.coeff(index);
917 template<
int LoadMode>
923 select.
select[
i] = m_condImpl.coeff(index+
i);
926 m_thenImpl.template packet<LoadMode>(index),
927 m_elseImpl.template packet<LoadMode>(index));
933 return m_condImpl.costPerCoeff(vectorized) +
934 m_thenImpl.costPerCoeff(vectorized)
935 .
cwiseMax(m_elseImpl.costPerCoeff(vectorized));
940 auto then_req = m_thenImpl.getResourceRequirements();
941 auto else_req = m_elseImpl.getResourceRequirements();
945 merged_req.cost_per_coeff =
946 then_req.cost_per_coeff.cwiseMax(else_req.cost_per_coeff);
949 m_condImpl.getResourceRequirements(), merged_req);
954 bool =
false)
const {
957 desc.DropDestinationBuffer();
960 m_condImpl.block(
desc, scratch), m_thenImpl.block(
desc, scratch),
961 m_elseImpl.block(
desc, scratch), TensorSelectOpBlockFactory());
966 #ifdef EIGEN_USE_SYCL
969 m_condImpl.bind(cgh);
970 m_thenImpl.bind(cgh);
971 m_elseImpl.bind(cgh);
983 #endif // EIGEN_CXX11_TENSOR_TENSOR_EVALUATOR_H
EIGEN_STRONG_INLINE void cleanup()
EIGEN_DEVICE_FUNC const EIGEN_STRONG_INLINE Dimensions & dimensions() const
static const int NumCoords
XprType< IfArgXprType, ThenArgXprType, ElseArgXprType >::type expr(const IfArgXprType &if_expr, const ThenArgXprType &then_expr, const ElseArgXprType &else_expr) const
#define EIGEN_DEVICE_FUNC
Storage::Type EvaluatorPointerType
internal::TensorBlockDescriptor< NumCoords, Index > TensorBlockDesc
Namespace containing all symbols from the Eigen library.
static EIGEN_STRONG_INLINE TensorMaterializedBlock materialize(const Scalar *data, const DataDimensions &data_dims, TensorBlockDesc &desc, TensorBlockScratch &scratch)
Eigen::internal::traits< TensorCwiseTernaryOp >::Index Index
internal::remove_const< Scalar >::type ScalarNoConst
TensorEvaluator< const ThenArgType, Device >::TensorBlock ThenArgTensorBlock
EIGEN_DEVICE_FUNC EvaluatorPointerType data() const
const internal::nullary_wrapper< CoeffReturnType, NullaryOp > m_wrapper
Storage::Type EvaluatorPointerType
PacketType< CoeffReturnType, Device >::type PacketReturnType
const Device EIGEN_DEVICE_REF m_device
TensorEvaluator(const XprType &op, const Device &device)
Eigen::internal::traits< TensorCwiseBinaryOp >::Index Index
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorBlock block(TensorBlockDesc &desc, TensorBlockScratch &scratch, bool=false) const
const EIGEN_DEVICE_FUNC Dimensions & dimensions() const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(const array< DenseIndex, NumCoords > &coords) const
const EIGEN_DEVICE_FUNC Dimensions & dimensions() const
PacketType< CoeffReturnType, Device >::type PacketReturnType
const EIGEN_DEVICE_FUNC Dimensions & dimensions() const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorBlock block(TensorBlockDesc &desc, TensorBlockScratch &scratch, bool=false) const
EvaluatorPointerType m_data
Storage::Type EvaluatorPointerType
TensorEvaluator< Arg3Type, Device > m_arg3Impl
Eigen::internal::traits< TensorCwiseNullaryOp >::Index Index
EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(EvaluatorPointerType)
internal::traits< Derived >::template MakePointer< const Scalar >::Type TensorPointerType
internal::TensorBlockNotImplemented TensorBlock
internal::TensorBlockScratchAllocator< Device > TensorBlockScratch
internal::TensorCwiseBinaryBlock< BinaryOp, LeftTensorBlock, RightTensorBlock > TensorBlock
EIGEN_STRONG_INLINE void cleanup()
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE internal::TensorBlockResourceRequirements getResourceRequirements() const
internal::TensorMaterializedBlock< ScalarNoConst, NumCoords, Layout, Index > TensorBlock
TensorEvaluator< RightArgType, Device > m_rightImpl
const NullaryOp m_functor
EIGEN_STRONG_INLINE TensorEvaluator(const Derived &m, const Device &device)
const EIGEN_DEVICE_FUNC Dimensions & dimensions() const
internal::TensorBlockDescriptor< NumDims, Index > TensorBlockDesc
internal::traits< XprType >::Scalar CoeffReturnType
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const
TensorEvaluator< ArgType, Device >::Dimensions Dimensions
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
internal::TensorBlockDescriptor< NumDims, Index > TensorBlockDesc
StorageMemory< CoeffReturnType, Device > Storage
TensorEvaluator< IfArgType, Device > m_condImpl
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorBlockResourceRequirements merge(const TensorBlockResourceRequirements &lhs, const TensorBlockResourceRequirements &rhs)
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType & coeffRef(const array< DenseIndex, NumCoords > &coords)
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
TensorEvaluator< ArgType, Device > m_argImpl
TensorEvaluator< IfArgType, Device >::Dimensions Dimensions
static const int PacketSize
const EIGEN_DEVICE_FUNC Dimensions & dimensions() const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE internal::TensorBlockResourceRequirements getResourceRequirements() const
EIGEN_STRONG_INLINE void cleanup()
EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(EvaluatorPointerType dest)
internal::remove_const< Scalar >::type ScalarNoConst
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE internal::TensorBlockResourceRequirements getResourceRequirements() const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorBlock block(TensorBlockDesc &desc, TensorBlockScratch &scratch, bool=false) const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorBlock block(TensorBlockDesc &desc, TensorBlockScratch &scratch, bool=false) const
EIGEN_STRONG_INLINE void cleanup()
const Device EIGEN_DEVICE_REF m_device
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool dimensions_match(Dims1 dims1, Dims2 dims2)
StorageMemory< CoeffReturnType, Device > Storage
TensorEvaluator< ElseArgType, Device > m_elseImpl
TensorSelectOp< const IfArgXprType, const ThenArgXprType, const ElseArgXprType > type
internal::traits< XprType >::Scalar CoeffReturnType
TensorCwiseTernaryOp< TernaryOp, Arg1Type, Arg2Type, Arg3Type > XprType
EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(EvaluatorPointerType)
Eigen::internal::traits< TensorSelectOp >::Scalar Scalar
StorageMemory< CoeffReturnType, Device > Storage
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE internal::TensorBlockResourceRequirements getResourceRequirements() const
EIGEN_STRONG_INLINE void cleanup()
Eigen::internal::traits< TensorCwiseUnaryOp >::Index Index
internal::TensorBlockScratchAllocator< Device > TensorBlockScratch
Derived::Dimensions Dimensions
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
EIGEN_DEVICE_FUNC EvaluatorPointerType data() const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const
Eigen::internal::traits< TensorCwiseNullaryOp >::Scalar Scalar
TensorEvaluator< const RightArgType, Device >::TensorBlock RightTensorBlock
EIGEN_STRONG_INLINE void cleanup()
#define EIGEN_STRONG_INLINE
EIGEN_DEVICE_FUNC EvaluatorPointerType data() const
#define EIGEN_UNROLL_LOOP
internal::remove_const< Scalar >::type ScalarNoConst
EIGEN_STRONG_INLINE Packet4i pblend(const Selector< 4 > &ifPacket, const Packet4i &thenPacket, const Packet4i &elsePacket)
EIGEN_DEVICE_FUNC EvaluatorPointerType data() const
internal::TensorBlockDescriptor< NumDims, Index > TensorBlockDesc
EIGEN_STRONG_INLINE TensorEvaluator(const Derived &m, const Device &device)
TensorEvaluator< ArgType, Device >::Dimensions Dimensions
#define EIGEN_ALWAYS_INLINE
Eigen::internal::traits< TensorCwiseTernaryOp >::Scalar Scalar
TensorCwiseBinaryOp< BinaryOp, LeftArgType, RightArgType > XprType
TensorEvaluator< ArgType, Device > m_argImpl
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
PacketType< CoeffReturnType, Device >::type PacketReturnType
EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(EvaluatorPointerType)
const Device EIGEN_DEVICE_REF m_device
EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(EvaluatorPointerType)
EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index index) const
internal::traits< XprType >::Scalar CoeffReturnType
EIGEN_DEVICE_FUNC TensorBlockResourceRequirements & addCostPerCoeff(TensorOpCost cost)
TensorEvaluator(const XprType &op, const Device &device)
TensorEvaluator< ThenArgType, Device > m_thenImpl
PacketType< CoeffReturnType, Device >::type PacketReturnType
TensorEvaluator< const IfArgType, Device >::TensorBlock IfArgTensorBlock
EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index index) const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType & coeffRef(Index index)
TensorEvaluator(const XprType &op, const Device &device)
EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(EvaluatorPointerType data)
TensorCwiseNullaryOp< NullaryOp, ArgType > XprType
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const
StorageMemory< const Scalar, Device > Storage
EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index index) const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE internal::TensorBlockResourceRequirements getResourceRequirements() const
internal::TensorBlockDescriptor< NumCoords, Index > TensorBlockDesc
EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index index) const
internal::TensorBlockScratchAllocator< Device > TensorBlockScratch
Eigen::internal::traits< TensorSelectOp >::Index Index
EIGEN_STRONG_INLINE void cleanup()
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writeBlock(const TensorBlockDesc &desc, const TensorBlock &block)
#define EIGEN_STATIC_ASSERT(CONDITION, MSG)
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(const array< DenseIndex, NumCoords > &coords) const
const typedef Derived XprType
EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(EvaluatorPointerType)
internal::traits< XprType >::Scalar CoeffReturnType
Storage::Type EvaluatorPointerType
PacketType< CoeffReturnType, Device >::type PacketReturnType
TensorEvaluator(const XprType &op, const Device &device)
StorageMemory< Scalar, Device > Storage
Eigen::internal::traits< TensorCwiseUnaryOp >::Scalar Scalar
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR __half_raw raw_uint16_to_half(numext::uint16_t x)
TensorEvaluator< LeftArgType, Device > m_leftImpl
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE internal::enable_if< internal::unpacket_traits< PacketReturnTypeT >::masked_load_available, PacketReturnTypeT >::type partialPacket(Index index, typename internal::unpacket_traits< PacketReturnTypeT >::mask_t umask) const
TensorEvaluator< const LeftArgType, Device >::TensorBlock LeftTensorBlock
StorageMemory< CoeffReturnType, Device > Storage
Derived::Scalar CoeffReturnType
TensorCwiseUnaryOp< UnaryOp, ArgType > XprType
internal::TensorBlockScratchAllocator< Device > TensorBlockScratch
internal::TensorTernaryExprBlock< TensorSelectOpBlockFactory, IfArgTensorBlock, ThenArgTensorBlock, ElseArgTensorBlock > TensorBlock
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
A cost model used to limit the number of threads used for evaluating tensor expression.
const Device EIGEN_DEVICE_REF m_device
TensorEvaluator< Arg1Type, Device >::Dimensions Dimensions
TensorEvaluator< Arg1Type, Device > m_arg1Impl
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void writePacket(Index index, const PacketReturnType &x)
TensorEvaluator(const XprType &op, const Device &device)
const XprType & expr() const
EvaluatorPointerType m_data
EIGEN_DEVICE_FUNC EvaluatorPointerType data() const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
Derived::Scalar CoeffReturnType
PacketType< CoeffReturnType, Device >::type PacketReturnType
internal::traits< XprType >::Scalar CoeffReturnType
Eigen::internal::traits< TensorCwiseBinaryOp >::Scalar Scalar
EIGEN_DEVICE_FUNC PacketReturnType packet(Index index) const
TensorEvaluator< const ArgType, Device >::TensorBlock ArgTensorBlock
internal::TensorCwiseUnaryBlock< UnaryOp, ArgTensorBlock > TensorBlock
TensorEvaluator< LeftArgType, Device >::Dimensions Dimensions
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost cwiseMax(const TensorOpCost &rhs) const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorBlock block(TensorBlockDesc &desc, TensorBlockScratch &scratch, bool=false) const
internal::TensorMaterializedBlock< ScalarNoConst, NumCoords, Layout, Index > TensorBlock
internal::TensorBlockScratchAllocator< Device > TensorBlockScratch
EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index index) const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const
internal::traits< Derived >::template MakePointer< Scalar >::Type TensorPointerType
PacketType< CoeffReturnType, Device >::type PacketReturnType
TensorEvaluator< Arg2Type, Device > m_arg2Impl
internal::TensorBlockNotImplemented TensorBlock
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EvaluatorPointerType data() const
Container::iterator get(Container &c, Position position)
Storage::Type EvaluatorPointerType
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE internal::enable_if< internal::unpacket_traits< PacketReturnTypeT >::masked_load_available, PacketReturnTypeT >::type partialPacket(Index index, typename internal::unpacket_traits< PacketReturnTypeT >::mask_t umask) const
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Storage::Type EvaluatorPointerType
EIGEN_DEVICE_FUNC const EIGEN_STRONG_INLINE Dimensions & dimensions() const
const TernaryOp m_functor
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorBlockResourceRequirements any()
TensorSelectOp< IfArgType, ThenArgType, ElseArgType > XprType
Derived::Dimensions Dimensions
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const
Storage::Type EvaluatorPointerType
EIGEN_DEVICE_FUNC EvaluatorPointerType data() const
TensorEvaluator< const ElseArgType, Device >::TensorBlock ElseArgTensorBlock
StorageMemory< CoeffReturnType, Device > Storage
gtsam
Author(s):
autogenerated on Sat Nov 16 2024 04:05:52