11#ifndef EIGEN_TENSOR_TENSOR_FORWARD_DECLARATIONS_H
12#define EIGEN_TENSOR_TENSOR_FORWARD_DECLARATIONS_H
15#include "./InternalHeaderCheck.h"
28 typedef const T* ConstType;
32EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T* constCast(
const T* data) {
33 return const_cast<T*
>(data);
42template <
typename T,
typename device>
43struct StorageMemory : MakePointer<T> {};
46template <
typename A,
typename B>
47struct Pointer_type_promotion {
48 static constexpr bool val =
false;
51struct Pointer_type_promotion<A, A> {
52 static constexpr bool val =
true;
54template <
typename A,
typename B>
55struct TypeConversion {
60template <
typename PlainObjectType,
int Options_ = Unaligned,
template <
class>
class MakePointer_ = MakePointer>
62template <
typename Scalar_,
int NumIndices_,
int Options_ = 0,
typename IndexType = DenseIndex>
64template <
typename Scalar_,
typename Dimensions,
int Options_ = 0,
typename IndexType = DenseIndex>
66template <
typename PlainObjectType>
68template <
typename Derived,
int AccessLevel>
71template <
typename NullaryOp,
typename PlainObjectType>
73template <
typename UnaryOp,
typename XprType>
75template <
typename BinaryOp,
typename LeftXprType,
typename RightXprType>
77template <
typename TernaryOp,
typename Arg1XprType,
typename Arg2XprType,
typename Arg3XprType>
78class TensorCwiseTernaryOp;
79template <
typename IfXprType,
typename ThenXprType,
typename ElseXprType>
81template <
typename Op,
typename Dims,
typename XprType,
template <
class>
class MakePointer_ = MakePointer>
83template <
typename XprType>
85template <
typename ReduceOp,
typename Dims,
typename XprType>
86class TensorPairReducerOp;
87template <
typename Axis,
typename LeftXprType,
typename RightXprType>
89template <
typename Dimensions,
typename LeftXprType,
typename RightXprType,
typename OutputKernelType>
91template <
typename TargetType,
typename XprType>
93template <
typename Dimensions,
typename InputXprType,
typename KernelXprType>
95template <
typename FFT,
typename XprType,
int FFTDataType,
int FFTDirection>
97template <
typename PatchDim,
typename XprType>
99template <DenseIndex Rows, DenseIndex Cols,
typename XprType>
101template <DenseIndex Planes, DenseIndex Rows, DenseIndex Cols,
typename XprType>
103template <
typename Broadcast,
typename XprType>
105template <DenseIndex DimId,
typename XprType>
107template <
typename NewDimensions,
typename XprType>
109template <
typename XprType>
110class TensorLayoutSwapOp;
111template <
typename StartIndices,
typename Sizes,
typename XprType>
112class TensorSlicingOp;
113template <
typename ReverseDimensions,
typename XprType>
115template <
typename Rolls,
typename XprType>
117template <
typename PaddingDimensions,
typename XprType>
119template <
typename Shuffle,
typename XprType>
121template <
typename Str
ides,
typename XprType>
123template <
typename StartIndices,
typename StopIndices,
typename Str
ides,
typename XprType>
124class TensorStridingSlicingOp;
125template <
typename Str
ides,
typename XprType>
127template <
typename Generator,
typename XprType>
129template <
typename LeftXprType,
typename RightXprType>
131template <
typename Op,
typename XprType>
133template <
typename Dims,
typename XprType>
136template <
typename CustomUnaryFunc,
typename XprType>
138template <
typename CustomBinaryFunc,
typename LhsXprType,
typename RhsXprType>
141template <
typename XprType,
template <
class>
class MakePointer_ = MakePointer>
143template <
typename XprType>
146template <
typename ExpressionType,
typename DeviceType>
148template <
typename ExpressionType,
typename DeviceType,
typename DoneCallback>
150template <
typename Derived,
typename Device>
153struct NoOpOutputKernel;
156struct ThreadPoolDevice;
161namespace TensorSycl {
163template <
typename Evaluator,
typename Op>
164class GenericNondeterministicReducer;
169enum FFTResultType { RealPart = 0, ImagPart = 1, BothParts = 2 };
171enum FFTDirection { FFT_FORWARD = 0, FFT_REVERSE = 1 };
175template <
typename Device,
typename Expression>
176struct IsVectorizable {
177 static constexpr bool value = TensorEvaluator<Expression, Device>::PacketAccess;
180template <
typename Expression>
181struct IsVectorizable<GpuDevice, Expression> {
182 static constexpr bool value =
183 TensorEvaluator<Expression, GpuDevice>::PacketAccess && TensorEvaluator<Expression, GpuDevice>::IsAligned;
187enum TiledEvaluation {
192template <
typename Device,
typename Expression>
197 static constexpr bool BlockAccess =
198 TensorEvaluator<Expression, Device>::BlockAccess && TensorEvaluator<Expression, Device>::PreferBlockAccess;
200 static constexpr TiledEvaluation value = BlockAccess ? TiledEvaluation::On : TiledEvaluation::Off;
203template <typename Expression, typename Device, bool Vectorizable = IsVectorizable<Device, Expression>::value,
204 TiledEvaluation Tiling = IsTileable<Device, Expression>::value>
207template <
typename Expression,
typename Device,
typename DoneCallback,
208 bool Vectorizable = IsVectorizable<Device, Expression>::value,
209 TiledEvaluation Tiling = IsTileable<Device, Expression>::value>
Definition TensorAssign.h:47
Pseudo expression providing an operator = that will evaluate its argument asynchronously on the speci...
Definition TensorDevice.h:88
The tensor base class.
Definition TensorForwardDeclarations.h:69
Definition TensorBroadcasting.h:53
Definition TensorChipping.h:59
Tensor concatenation class.
Definition TensorConcatenation.h:49
Definition TensorContraction.h:335
Tensor conversion class. This class makes it possible to vectorize type casting operations when the n...
Definition TensorConversion.h:160
Definition TensorConvolution.h:223
Tensor custom class.
Definition TensorCustomOp.h:218
Tensor custom class.
Definition TensorCustomOp.h:54
Tensor binary expression.
Definition TensorExpr.h:153
Tensor nullary expression.
Definition TensorExpr.h:41
Tensor unary expression.
Definition TensorExpr.h:90
Pseudo expression providing an operator = that will evaluate its argument on the specified computing ...
Definition TensorDevice.h:31
Tensor FFT class.
Definition TensorFFT.h:100
The fixed sized version of the tensor class.
Definition TensorFixedSize.h:30
Tensor forced evaluation class.
Definition TensorForcedEval.h:48
Tensor generator class.
Definition TensorGenerator.h:44
Patch extraction specialized for image processing. This assumes that the input has at least 3 dimensi...
Definition TensorImagePatch.h:54
Tensor + Index Pair class.
Definition TensorArgMax.h:44
Tensor inflation class.
Definition TensorInflation.h:44
A tensor expression mapping an existing array of data.
Definition TensorMap.h:34
Tensor padding class. At the moment only padding with a constant value is supported.
Definition TensorPadding.h:46
Tensor patch class.
Definition TensorPatch.h:44
Tensor reduction class.
Definition TensorReduction.h:528
A reference to a tensor expression The expression will be evaluated lazily (as much as possible).
Definition TensorRef.h:246
Tensor reshaping class.
Definition TensorMorphing.h:44
Tensor reverse elements class.
Definition TensorReverse.h:45
Tensor roll (circular shift) elements class.
Definition TensorRoll.h:44
Tensor scan class.
Definition TensorScan.h:44
Tensor shuffling class.
Definition TensorShuffling.h:44
Tensor striding class.
Definition TensorStriding.h:44
Tensor Trace class.
Definition TensorTrace.h:48
Patch extraction specialized for processing of volumetric data. This assumes that the input has at le...
Definition TensorVolumePatch.h:50
The tensor class.
Definition Tensor.h:69
Definition TensorExecutor.h:70
The tensor executor class.
Definition TensorExecutor.h:38
Namespace containing all symbols from the Eigen library.
The tensor evaluator class.
Definition TensorEvaluator.h:47