10 #ifndef EIGEN_CXX11_TENSOR_TENSOR_META_H
11 #define EIGEN_CXX11_TENSOR_TENSOR_META_H
21 template <
typename T1,
typename T2>
26 template <
typename T1,
typename T2>
37 static const size_t size = 1;
46 template <
typename Scalar,
typename Device>
52 #if defined(EIGEN_USE_GPU) && defined(EIGEN_HAS_GPU_FP16) && defined(EIGEN_GPU_COMPILE_PHASE)
54 typedef ulonglong2 Packet4h2;
57 typedef Packet4h2
type;
58 static const int size = 8;
86 #if defined(EIGEN_USE_SYCL)
88 namespace TensorSycl {
91 template <
typename Index, Index A, Index B>
96 template <
typename Index, Index A, Index B>
103 template <
typename UnaryOperator>
109 template <
typename Index,
Index end,
Index step,
template <
class Indx, Indx...>
class StepOp>
111 template <
typename UnaryOperator>
115 template <
typename OutScalar,
typename Device,
bool Vectorizable>
117 static constexpr
int PacketSize = 1;
118 typedef OutScalar PacketReturnType;
121 template <
typename OutScalar,
typename Device>
122 struct Vectorise<OutScalar, Device, true> {
133 struct PacketType<half, SyclDevice> {
135 static const int size = 1;
151 template <
typename Scalar>
152 struct PacketType<
Scalar, SyclDevice> : internal::default_packet_traits {
174 template <
typename Scalar>
175 struct PacketType<
Scalar, const SyclDevice> : PacketType<Scalar, SyclDevice> {};
177 #ifndef EIGEN_DONT_VECTORIZE_SYCL
178 #define PACKET_TYPE(CVQual, Type, val, lengths, DEV) \
180 struct PacketType<CVQual Type, DEV> : internal::sycl_packet_traits<val, lengths> { \
181 typedef typename internal::packet_traits<Type>::type type; \
182 typedef typename internal::packet_traits<Type>::half half; \
185 PACKET_TYPE(
const,
float, 1, 4, SyclDevice)
186 PACKET_TYPE(,
float, 1, 4, SyclDevice)
187 PACKET_TYPE(
const,
float, 1, 4,
const SyclDevice)
188 PACKET_TYPE(,
float, 1, 4,
const SyclDevice)
190 PACKET_TYPE(
const,
double, 0, 2, SyclDevice)
191 PACKET_TYPE(,
double, 0, 2, SyclDevice)
192 PACKET_TYPE(
const,
double, 0, 2,
const SyclDevice)
193 PACKET_TYPE(,
double, 0, 2,
const SyclDevice)
197 struct PacketType<half, const SyclDevice> : PacketType<half, SyclDevice> {};
199 struct PacketType<const half, const SyclDevice> : PacketType<half, SyclDevice> {};
204 template <
typename U,
typename V>
226 template <
typename U,
typename V>
228 return (
x.first ==
y.first &&
x.second ==
y.second);
231 template <
typename U,
typename V>
237 template <
typename Idx>
253 template <
typename IndexType,
typename Index,
Index First,
Index... Is>
256 return {
static_cast<Index>(idx[First]),
static_cast<Index>(idx[Is])...};
258 template <
typename IndexType,
typename Index>
265 template <
typename Index, std::
size_t NumIndices,
typename IndexType>
270 template <
typename B,
typename D>
275 template <
typename BB,
typename DD>
277 operator BB*()
const;
281 template <
typename T>
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
dominoes D
Definition: Domino.cpp:55
MatrixXcd V
Definition: EigenSolver_EigenSolver_MatrixType.cpp:15
#define EIGEN_ALWAYS_INLINE
Definition: Macros.h:845
#define EIGEN_DEPRECATED
Definition: Macros.h:931
#define EIGEN_CONSTEXPR
Definition: Macros.h:758
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW
Definition: Memory.h:879
SCALAR Scalar
Definition: bench_gemm.cpp:45
Matrix< SCALARA, Dynamic, Dynamic, opt_A > A
Definition: bench_gemm.cpp:47
Matrix< SCALARB, Dynamic, Dynamic, opt_B > B
Definition: bench_gemm.cpp:48
Definition: matrices.h:74
static int f(const TensorMap< Tensor< int, 3 > > &tensor)
Definition: cxx11_tensor_map.cpp:237
static constexpr lastp1_t end
Definition: IndexedViewHelper.h:79
Scalar * y
Definition: level1_cplx_impl.h:128
RealScalar s
Definition: level1_cplx_impl.h:130
char char * op
Definition: level2_impl.h:374
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE array< Index, 1+sizeof...(Is)> customIndices2Array(IndexType &idx, numeric_list< Index, First, Is... >)
Definition: TensorMeta.h:254
EIGEN_STRONG_INLINE void swap(T &a, T &b)
Definition: Meta.h:536
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE EIGEN_CONSTEXPR T div_ceil(T a, T b)
Definition: MathFunctions.h:1251
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
EIGEN_DEPRECATED EIGEN_DEVICE_FUNC constexpr EIGEN_ALWAYS_INLINE T divup(const T x, const T y)
Definition: TensorMeta.h:41
std::array< T, N > array
Definition: EmulateArray.h:231
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE const T1 & choose(Cond< true >, const T1 &first, const T2 &)
Definition: TensorMeta.h:22
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool operator!=(const Pair< U, V > &x, const Pair< U, V > &y)
Definition: TensorMeta.h:232
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool operator==(const Pair< U, V > &x, const Pair< U, V > &y)
Definition: TensorMeta.h:227
double U
Swimming speed.
Definition: two_d_variable_diff_adapt.cc:53
val
Definition: calibrate.py:119
Definition: Eigen_Colamd.h:49
void start(const unsigned &i)
(Re-)start i-th timer
Definition: oomph_utilities.cc:243
list x
Definition: plotDoE.py:28
GenericValue< UTF8<> > Value
Value with UTF8 encoding.
Definition: document.h:679
Definition: TensorMeta.h:19
Definition: TensorMeta.h:238
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE IndexPair()
Definition: TensorMeta.h:239
EIGEN_DEVICE_FUNC void set(IndexPair< Idx > val)
Definition: TensorMeta.h:242
Idx first
Definition: TensorMeta.h:247
Idx second
Definition: TensorMeta.h:248
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE IndexPair(Idx f, Idx s)
Definition: TensorMeta.h:240
Definition: TensorMeta.h:47
internal::packet_traits< Scalar >::type type
Definition: TensorMeta.h:48
Definition: TensorMeta.h:205
U first_type
Definition: TensorMeta.h:212
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Pair(const U &f, const V &s)
Definition: TensorMeta.h:217
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void swap(Pair &rhs)
Definition: TensorMeta.h:219
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Pair()
Definition: TensorMeta.h:215
V second
Definition: TensorMeta.h:210
V second_type
Definition: TensorMeta.h:213
EIGEN_MAKE_ALIGNED_OPERATOR_NEW U first
Definition: TensorMeta.h:209
@ HasRsqrt
Definition: GenericPacketMath.h:74
@ HasBlend
Definition: GenericPacketMath.h:66
@ HasLog10
Definition: GenericPacketMath.h:79
@ HasArg
Definition: GenericPacketMath.h:64
@ HasLog1p
Definition: GenericPacketMath.h:78
@ HasPow
Definition: GenericPacketMath.h:80
@ HasExp
Definition: GenericPacketMath.h:75
@ HasSqrt
Definition: GenericPacketMath.h:73
@ HasExpm1
Definition: GenericPacketMath.h:76
@ HasLog
Definition: GenericPacketMath.h:77
@ HasDiv
Definition: GenericPacketMath.h:71
Definition: MoreMeta.h:55
Definition: TensorMeta.h:276
Definition: TensorMeta.h:271
static const bool value
Definition: TensorMeta.h:285
static no check(B *, int)
char(& yes)[1]
Definition: TensorMeta.h:272
char(& no)[2]
Definition: TensorMeta.h:273
Definition: MoreMeta.h:33
Definition: GenericPacketMath.h:108
@ size
Definition: GenericPacketMath.h:113
@ AlignedOnScalar
Definition: GenericPacketMath.h:114
@ Vectorizable
Definition: GenericPacketMath.h:112
Scalar half
Definition: GenericPacketMath.h:110
@ HasSub
Definition: GenericPacketMath.h:118
@ HasMax
Definition: GenericPacketMath.h:124
@ HasNegate
Definition: GenericPacketMath.h:120
@ HasMul
Definition: GenericPacketMath.h:119
@ HasAdd
Definition: GenericPacketMath.h:117
@ HasSetLinear
Definition: GenericPacketMath.h:126
@ HasMin
Definition: GenericPacketMath.h:123
@ HasConj
Definition: GenericPacketMath.h:125
@ HasAbs2
Definition: GenericPacketMath.h:122
@ HasAbs
Definition: GenericPacketMath.h:121
Definition: TensorMeta.h:32
static const size_t size
Definition: TensorMeta.h:33