10 #ifndef EIGEN_CXX11_TENSOR_TENSOR_FORWARD_DECLARATIONS_H 11 #define EIGEN_CXX11_TENSOR_TENSOR_FORWARD_DECLARATIONS_H 14 #include "./InternalHeaderCheck.h" 27 typedef const T* ConstType;
31 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T* constCast(
const T* data) {
32 return const_cast<T*
>(data);
41 template <
typename T,
typename device>
42 struct StorageMemory : MakePointer<T> {};
45 template <
typename A,
typename B>
46 struct Pointer_type_promotion {
47 static const bool val =
false;
50 struct Pointer_type_promotion<A, A> {
51 static const bool val =
true;
53 template <
typename A,
typename B>
54 struct TypeConversion {
59 template <
typename PlainObjectType,
int Options_ = Unaligned,
template <
class>
class MakePointer_ = MakePointer>
61 template <
typename Scalar_,
int NumIndices_,
int Options_ = 0,
typename IndexType = DenseIndex>
63 template <
typename Scalar_,
typename Dimensions,
int Options_ = 0,
typename IndexType = DenseIndex>
65 template <
typename PlainObjectType>
67 template <
typename Derived,
int AccessLevel>
70 template <
typename NullaryOp,
typename PlainObjectType>
72 template <
typename UnaryOp,
typename XprType>
74 template <
typename BinaryOp,
typename LeftXprType,
typename RightXprType>
76 template <
typename TernaryOp,
typename Arg1XprType,
typename Arg2XprType,
typename Arg3XprType>
77 class TensorCwiseTernaryOp;
78 template <
typename IfXprType,
typename ThenXprType,
typename ElseXprType>
80 template <
typename Op,
typename Dims,
typename XprType,
template <
class>
class MakePointer_ = MakePointer>
82 template <
typename XprType>
84 template <
typename ReduceOp,
typename Dims,
typename XprType>
85 class TensorPairReducerOp;
86 template <
typename Axis,
typename LeftXprType,
typename RightXprType>
88 template <
typename Dimensions,
typename LeftXprType,
typename RightXprType,
typename OutputKernelType>
90 template <
typename TargetType,
typename XprType>
92 template <
typename Dimensions,
typename InputXprType,
typename KernelXprType>
94 template <
typename FFT,
typename XprType,
int FFTDataType,
int FFTDirection>
96 template <
typename PatchDim,
typename XprType>
98 template <DenseIndex Rows, DenseIndex Cols,
typename XprType>
100 template <DenseIndex Planes, DenseIndex Rows, DenseIndex Cols,
typename XprType>
102 template <
typename Broadcast,
typename XprType>
104 template <DenseIndex DimId,
typename XprType>
106 template <
typename NewDimensions,
typename XprType>
108 template <
typename XprType>
109 class TensorLayoutSwapOp;
110 template <
typename StartIndices,
typename Sizes,
typename XprType>
111 class TensorSlicingOp;
112 template <
typename ReverseDimensions,
typename XprType>
114 template <
typename Rolls,
typename XprType>
116 template <
typename PaddingDimensions,
typename XprType>
118 template <
typename Shuffle,
typename XprType>
120 template <
typename Str
ides,
typename XprType>
122 template <
typename StartIndices,
typename StopIndices,
typename Str
ides,
typename XprType>
123 class TensorStridingSlicingOp;
124 template <
typename Str
ides,
typename XprType>
126 template <
typename Generator,
typename XprType>
128 template <
typename LeftXprType,
typename RightXprType>
130 template <
typename Op,
typename XprType>
132 template <
typename Dims,
typename XprType>
135 template <
typename CustomUnaryFunc,
typename XprType>
137 template <
typename CustomBinaryFunc,
typename LhsXprType,
typename RhsXprType>
140 template <
typename XprType,
template <
class>
class MakePointer_ = MakePointer>
141 class TensorEvalToOp;
142 template <
typename XprType>
145 template <
typename ExpressionType,
typename DeviceType>
147 template <
typename ExpressionType,
typename DeviceType,
typename DoneCallback>
149 template <
typename Derived,
typename Device>
152 struct NoOpOutputKernel;
154 struct DefaultDevice;
155 struct ThreadPoolDevice;
159 #ifdef EIGEN_USE_SYCL 160 namespace TensorSycl {
162 template <
typename Evaluator,
typename Op>
163 class GenericNondeterministicReducer;
168 enum FFTResultType { RealPart = 0, ImagPart = 1, BothParts = 2 };
170 enum FFTDirection { FFT_FORWARD = 0, FFT_REVERSE = 1 };
174 template <
typename Device,
typename Expression>
175 struct IsVectorizable {
176 static const bool value = TensorEvaluator<Expression, Device>::PacketAccess;
179 template <
typename Expression>
180 struct IsVectorizable<GpuDevice, Expression> {
181 static const bool value =
182 TensorEvaluator<Expression, GpuDevice>::PacketAccess && TensorEvaluator<Expression, GpuDevice>::IsAligned;
186 enum TiledEvaluation {
191 template <
typename Device,
typename Expression>
196 static constexpr
bool BlockAccess =
197 TensorEvaluator<Expression, Device>::BlockAccess && TensorEvaluator<Expression, Device>::PreferBlockAccess;
199 static const TiledEvaluation value = BlockAccess ? TiledEvaluation::On : TiledEvaluation::Off;
202 template <typename Expression, typename Device, bool Vectorizable = IsVectorizable<Device, Expression>::value,
203 TiledEvaluation Tiling = IsTileable<Device, Expression>::value>
204 class TensorExecutor;
206 template <
typename Expression,
typename Device,
typename DoneCallback,
207 bool Vectorizable = IsVectorizable<Device, Expression>::value,
208 TiledEvaluation Tiling = IsTileable<Device, Expression>::value>
209 class TensorAsyncExecutor;
215 #endif // EIGEN_CXX11_TENSOR_TENSOR_FORWARD_DECLARATIONS_H Tensor FFT class.
Definition: TensorFFT.h:101
Tensor custom class.
Definition: TensorCustomOp.h:49
Tensor + Index Pair class.
Definition: TensorArgMax.h:50
Tensor binary expression.
Definition: TensorExpr.h:170
Tensor scan class.
Definition: TensorForwardDeclarations.h:131
Tensor unary expression.
Definition: TensorExpr.h:98
Tensor custom class.
Definition: TensorCustomOp.h:192
Tensor reshaping class.
Definition: TensorForwardDeclarations.h:107
Tensor generator class.
Definition: TensorForwardDeclarations.h:127
Tensor inflation class.
Definition: TensorForwardDeclarations.h:125
Tensor striding class.
Definition: TensorForwardDeclarations.h:121
Tensor padding class. At the moment only padding with a constant value is supported.
Definition: TensorForwardDeclarations.h:117
Tensor reshaping class.
Definition: TensorForcedEval.h:55
Namespace containing all symbols from the Eigen library.
The tensor evaluator class.
Definition: TensorEvaluator.h:30
Pseudo expression providing an operator = that will evaluate its argument on the specified computing ...
Definition: TensorDevice.h:30
Definition: TensorAssign.h:55
Definition: TensorChipping.h:65
Patch extraction specialized for image processing. This assumes that the input has a least 3 dimensio...
Definition: TensorForwardDeclarations.h:99
Tensor reverse elements class.
Definition: TensorForwardDeclarations.h:113
A tensor expression mapping an existing array of data.
Definition: TensorForwardDeclarations.h:60
Patch extraction specialized for processing of volumetric data. This assumes that the input has a lea...
Definition: TensorForwardDeclarations.h:101
Tensor roll (circular shift) elements class.
Definition: TensorForwardDeclarations.h:115
Tensor shuffling class.
Definition: TensorForwardDeclarations.h:119
Definition: TensorBroadcasting.h:66
Tensor conversion class. This class makes it possible to vectorize type casting operations when the n...
Definition: TensorConversion.h:166
Definition: TensorContraction.h:302
Tensor reduction class.
Definition: TensorForwardDeclarations.h:81
The fixed sized version of the tensor class.
Definition: TensorFixedSize.h:29
The tensor base class.
Definition: TensorForwardDeclarations.h:68
Pseudo expression providing an operator = that will evaluate its argument asynchronously on the speci...
Definition: TensorDevice.h:87
Definition: TensorConvolution.h:231
Tensor patch class.
Definition: TensorForwardDeclarations.h:97
Tensor nullary expression.
Definition: TensorExpr.h:42
Tensor Trace class.
Definition: TensorForwardDeclarations.h:133
A reference to a tensor expression The expression will be evaluated lazily (as much as possible)...
Definition: TensorForwardDeclarations.h:66
Tensor concatenation class.
Definition: TensorConcatenation.h:58
The tensor class.
Definition: Tensor.h:68