10#ifndef EIGEN_CXX11_TENSOR_TENSOR_FORWARD_DECLARATIONS_H
11#define EIGEN_CXX11_TENSOR_TENSOR_FORWARD_DECLARATIONS_H
21template<
typename T>
struct MakePointer {
23 typedef const T* ConstType;
27EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T* constCast(
const T* data) {
28 return const_cast<T*
>(data);
37template<
typename T,
typename device>
struct StorageMemory: MakePointer <T> {};
40template<
typename A,
typename B>
struct Pointer_type_promotion {
41 static const bool val=
false;
43template<
typename A>
struct Pointer_type_promotion<A, A> {
44 static const bool val =
true;
46template<
typename A,
typename B>
struct TypeConversion {
52template<
typename PlainObjectType,
int Options_ = Unaligned,
template <
class>
class MakePointer_ = MakePointer>
class TensorMap;
53template<
typename Scalar_,
int NumIndices_,
int Options_ = 0,
typename IndexType = DenseIndex>
class Tensor;
54template<
typename Scalar_,
typename Dimensions,
int Options_ = 0,
typename IndexType = DenseIndex>
class TensorFixedSize;
55template<
typename PlainObjectType>
class TensorRef;
56template<
typename Derived,
int AccessLevel>
class TensorBase;
60template<
typename BinaryOp,
typename LeftXprType,
typename RightXprType>
class TensorCwiseBinaryOp;
61template<
typename TernaryOp,
typename Arg1XprType,
typename Arg2XprType,
typename Arg3XprType>
class TensorCwiseTernaryOp;
62template<
typename IfXprType,
typename ThenXprType,
typename ElseXprType>
class TensorSelectOp;
63template<
typename Op,
typename Dims,
typename XprType,
template <
class>
class MakePointer_ = MakePointer >
class TensorReductionOp;
65template<
typename ReduceOp,
typename Dims,
typename XprType>
class TensorTupleReducerOp;
67template<
typename Dimensions,
typename LeftXprType,
typename RightXprType,
typename OutputKernelType>
class TensorContractionOp;
69template<
typename Dimensions,
typename InputXprType,
typename KernelXprType>
class TensorConvolutionOp;
70template<
typename FFT,
typename XprType,
int FFTDataType,
int FFTDirection>
class TensorFFTOp;
71template<
typename PatchDim,
typename XprType>
class TensorPatchOp;
73template<DenseIndex Planes, DenseIndex Rows, DenseIndex Cols,
typename XprType>
class TensorVolumePatchOp;
77template<
typename XprType>
class TensorLayoutSwapOp;
78template<
typename StartIndices,
typename Sizes,
typename XprType>
class TensorSlicingOp;
79template<
typename ReverseDimensions,
typename XprType>
class TensorReverseOp;
80template<
typename PaddingDimensions,
typename XprType>
class TensorPaddingOp;
83template<
typename StartIndices,
typename StopIndices,
typename Str
ides,
typename XprType>
class TensorStridingSlicingOp;
86template<
typename LeftXprType,
typename RightXprType>
class TensorAssignOp;
87template<
typename Op,
typename XprType>
class TensorScanOp;
91template<
typename CustomBinaryFunc,
typename LhsXprType,
typename RhsXprType>
class TensorCustomBinaryOp;
93template<
typename XprType,
template <
class>
class MakePointer_ = MakePointer>
class TensorEvalToOp;
96template<
typename ExpressionType,
typename DeviceType>
class TensorDevice;
97template<
typename ExpressionType,
typename DeviceType,
typename DoneCallback>
class TensorAsyncDevice;
100struct NoOpOutputKernel;
103struct ThreadPoolDevice;
109template <
typename T>
struct MakeSYCLPointer {
110 typedef Eigen::TensorSycl::internal::RangeAccess<cl::sycl::access::mode::read_write, T> Type;
114EIGEN_STRONG_INLINE
const Eigen::TensorSycl::internal::RangeAccess<cl::sycl::access::mode::read_write, T>&
115constCast(
const Eigen::TensorSycl::internal::RangeAccess<cl::sycl::access::mode::read_write, T>& data) {
120struct StorageMemory<T, SyclDevice> : MakeSYCLPointer<T> {};
122struct StorageMemory<T, const SyclDevice> : StorageMemory<T, SyclDevice> {};
124namespace TensorSycl {
126template <
typename Evaluator,
typename Op>
class GenericNondeterministicReducer;
146template <
typename Device,
typename Expression>
147struct IsVectorizable {
148 static const bool value = TensorEvaluator<Expression, Device>::PacketAccess;
151template <
typename Expression>
152struct IsVectorizable<GpuDevice, Expression> {
153 static const bool value = TensorEvaluator<Expression, GpuDevice>::PacketAccess &&
154 TensorEvaluator<Expression, GpuDevice>::IsAligned;
158enum TiledEvaluation {
163template <
typename Device,
typename Expression>
168 static const bool BlockAccess =
169 TensorEvaluator<Expression, Device>::BlockAccess &&
170 TensorEvaluator<Expression, Device>::PreferBlockAccess;
172 static const TiledEvaluation value =
173 BlockAccess ? TiledEvaluation::On : TiledEvaluation::Off;
176template <
typename Expression,
typename Device,
177 bool Vectorizable = IsVectorizable<Device, Expression>::value,
178 TiledEvaluation Tiling = IsTileable<Device, Expression>::value>
181template <
typename Expression,
typename Device,
typename DoneCallback,
182 bool Vectorizable = IsVectorizable<Device, Expression>::value,
183 TiledEvaluation Tiling = IsTileable<Device, Expression>::value>
Definition TensorAssign.h:57
Pseudo expression providing an operator = that will evaluate its argument asynchronously on the speci...
Definition TensorDevice.h:83
The tensor base class.
Definition TensorForwardDeclarations.h:56
Definition TensorBroadcasting.h:63
Definition TensorChipping.h:73
Tensor concatenation class.
Definition TensorConcatenation.h:57
Definition TensorContraction.h:322
Tensor conversion class. This class makes it possible to vectorize type casting operations when the n...
Definition TensorConversion.h:176
Definition TensorConvolution.h:254
Tensor custom class.
Definition TensorCustomOp.h:215
Tensor custom class.
Definition TensorCustomOp.h:49
Tensor binary expression.
Definition TensorExpr.h:198
Tensor nullary expression.
Definition TensorExpr.h:43
Tensor unary expression.
Definition TensorExpr.h:111
Pseudo expression providing an operator = that will evaluate its argument on the specified computing ...
Definition TensorDevice.h:27
Tensor FFT class.
Definition TensorFFT.h:86
The fixed sized version of the tensor class.
Definition TensorFixedSize.h:26
Tensor reshaping class.
Definition TensorForcedEval.h:55
Tensor generator class.
Definition TensorGenerator.h:50
Patch extraction specialized for image processing. This assumes that the input has a least 3 dimensio...
Definition TensorImagePatch.h:120
Tensor + Index Pair class.
Definition TensorArgMax.h:52
Tensor inflation class.
Definition TensorInflation.h:50
A tensor expression mapping an existing array of data.
Definition TensorMap.h:30
Tensor padding class. At the moment only padding with a constant value is supported.
Definition TensorPadding.h:52
Tensor patch class.
Definition TensorPatch.h:50
Tensor reduction class.
Definition TensorReduction.h:472
A reference to a tensor expression The expression will be evaluated lazily (as much as possible).
Definition TensorRef.h:125
Tensor reshaping class.
Definition TensorMorphing.h:50
Tensor reverse elements class.
Definition TensorReverse.h:53
Tensor scan class.
Definition TensorScan.h:51
Tensor shuffling class.
Definition TensorShuffling.h:50
Tensor striding class.
Definition TensorStriding.h:50
Tensor Trace class.
Definition TensorTrace.h:50
Patch extraction specialized for processing of volumetric data. This assumes that the input has a lea...
Definition TensorVolumePatch.h:56
The tensor class.
Definition Tensor.h:64
Definition TensorExecutor.h:114
The tensor executor class.
Definition TensorExecutor.h:79
Namespace containing all symbols from the Eigen library.
The tensor evaluator class.
Definition TensorEvaluator.h:27