10#ifndef EIGEN_CXX11_TENSOR_TENSOR_META_H
11#define EIGEN_CXX11_TENSOR_TENSOR_META_H
15template<
bool cond>
struct Cond {};
28template <
typename T,
typename X,
typename Y>
31 return static_cast<T>((
x +
y - 1) /
y);
37 return static_cast<T>((
x +
y - 1) /
y);
44 static const size_t size = 1;
49template <
typename Scalar,
typename Device>
55#if defined(EIGEN_USE_GPU) && defined(EIGEN_HAS_GPU_FP16)
57typedef ulonglong2 Packet4h2;
60 typedef Packet4h2
type;
61 static const int size = 8;
89#if defined(EIGEN_USE_SYCL)
94template <
typename Index, Index A, Index B>
struct PlusOp {
95 static constexpr Index Value =
A +
B;
98template <
typename Index, Index A, Index B>
struct DivOp {
99 static constexpr Index Value =
A /
B;
103 template <
class Indx, Indx...>
class StepOp>
105 template <
typename UnaryOperator>
108 static_for<Index, StepOp<Index, start, step>::Value, end, step,
113 template <
class Indx, Indx...>
class StepOp>
114struct static_for<
Index, end, end, step, StepOp> {
115 template <
typename UnaryOperator>
119template <
typename OutScalar,
typename Device,
bool Vectorizable>
121 static const int PacketSize = 1;
122 typedef OutScalar PacketReturnType;
125template <
typename OutScalar,
typename Device>
126struct Vectorise<OutScalar, Device, true> {
132 return ((((
x) + (
y)-1) / (
y)) * (
y));
139 struct PacketType<half, SyclDevice> {
141 static const int size = 1;
157template <
typename Scalar>
158struct PacketType<
Scalar, SyclDevice> : internal::default_packet_traits {
182template <
typename Scalar>
183struct PacketType<
Scalar, const SyclDevice> : PacketType<Scalar, SyclDevice>{};
185#ifndef EIGEN_DONT_VECTORIZE_SYCL
186#define PACKET_TYPE(CVQual, Type, val, lengths, DEV)\
187template<> struct PacketType<CVQual Type, DEV> : internal::sycl_packet_traits<val, lengths> \
189 typedef typename internal::packet_traits<Type>::type type;\
190 typedef typename internal::packet_traits<Type>::half half;\
194PACKET_TYPE(
const,
float, 1, 4, SyclDevice)
195PACKET_TYPE(,
float, 1, 4, SyclDevice)
196PACKET_TYPE(
const,
float, 1, 4,
const SyclDevice)
197PACKET_TYPE(,
float, 1, 4,
const SyclDevice)
199PACKET_TYPE(
const,
double, 0, 2, SyclDevice)
200PACKET_TYPE(,
double, 0, 2, SyclDevice)
201PACKET_TYPE(
const,
double, 0, 2,
const SyclDevice)
202PACKET_TYPE(,
double, 0, 2,
const SyclDevice)
205template<>
struct PacketType<half, const SyclDevice>: PacketType<half, SyclDevice>{};
206template<>
struct PacketType<const half, const SyclDevice>: PacketType<half, SyclDevice>{};
211template <
typename U,
typename V>
struct Tuple {
233template <
typename U,
typename V>
236 return (
x.first ==
y.first &&
x.second ==
y.second);
239template <
typename U,
typename V>
261#ifdef EIGEN_HAS_SFINAE
264 template<
typename IndexType,
typename Index,
Index... Is>
266 array<
Index,
sizeof...(Is)> customIndices2Array(IndexType& idx, numeric_list<Index, Is...>) {
267 return { idx[Is]... };
269 template<
typename IndexType,
typename Index>
271 array<Index, 0> customIndices2Array(IndexType&, numeric_list<Index>) {
272 return array<Index, 0>();
276 template<
typename Index, std::
size_t NumIndices,
typename IndexType>
278 array<Index, NumIndices> customIndices2Array(IndexType& idx) {
279 return customIndices2Array(idx,
typename gen_numeric_list<Index, NumIndices>::type{});
283 template <
typename B,
typename D>
287 typedef char (&yes)[1];
288 typedef char (&no)[2];
290 template <
typename BB,
typename DD>
293 operator BB*()
const;
301 static const bool value =
sizeof(
check(Host<B,D>(),
int())) ==
sizeof(yes);
int n
Definition BiCGSTAB_simple.cpp:1
MatrixXcd V
Definition EigenSolver_EigenSolver_MatrixType.cpp:15
MatrixXcd D
Definition EigenSolver_EigenSolver_MatrixType.cpp:14
#define EIGEN_ALWAYS_INLINE
Definition Macros.h:932
#define EIGEN_CONSTEXPR
Definition Macros.h:787
#define EIGEN_DEVICE_FUNC
Definition Macros.h:976
#define EIGEN_STRONG_INLINE
Definition Macros.h:917
SCALAR Scalar
Definition bench_gemm.cpp:46
Matrix< SCALARA, Dynamic, Dynamic, opt_A > A
Definition bench_gemm.cpp:48
Matrix< SCALARB, Dynamic, Dynamic, opt_B > B
Definition bench_gemm.cpp:49
Definition EmulateArray.h:21
void check(bool b, bool ref)
Definition fastmath.cpp:12
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
Definition gnuplot_common_settings.hh:12
#define X
Definition icosphere.cpp:20
RealScalar s
Definition level1_cplx_impl.h:126
Scalar * y
Definition level1_cplx_impl.h:124
EIGEN_STRONG_INLINE void swap(T &a, T &b)
Definition Meta.h:766
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T divup(const X x, const Y y)
Definition TensorMeta.h:30
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE const T1 & choose(Cond< true >, const T1 &first, const T2 &)
Definition TensorMeta.h:18
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:74
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool operator==(const Tuple< U, V > &x, const Tuple< U, V > &y)
Definition TensorMeta.h:235
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool operator!=(const Tuple< U, V > &x, const Tuple< U, V > &y)
Definition TensorMeta.h:241
Definition BandTriangularSolver.h:13
real function second()
SECOND returns nothing
Definition second_NONE.f:39
Definition TensorMeta.h:15
Definition TensorMeta.h:247
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE IndexPair()
Definition TensorMeta.h:248
EIGEN_DEVICE_FUNC void set(IndexPair< Idx > val)
Definition TensorMeta.h:251
Idx first
Definition TensorMeta.h:256
Idx second
Definition TensorMeta.h:257
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE IndexPair(Idx f, Idx s)
Definition TensorMeta.h:249
Definition TensorMeta.h:50
internal::packet_traits< Scalar >::type type
Definition TensorMeta.h:51
Definition TensorMeta.h:211
V second
Definition TensorMeta.h:214
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void swap(Tuple &rhs)
Definition TensorMeta.h:226
V second_type
Definition TensorMeta.h:217
U first
Definition TensorMeta.h:213
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tuple(const U &f, const V &s)
Definition TensorMeta.h:223
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tuple()
Definition TensorMeta.h:220
U first_type
Definition TensorMeta.h:216
@ HasRsqrt
Definition GenericPacketMath.h:67
@ HasBlend
Definition GenericPacketMath.h:60
@ HasLog10
Definition GenericPacketMath.h:72
@ HasArg
Definition GenericPacketMath.h:53
@ HasLog1p
Definition GenericPacketMath.h:71
@ HasPow
Definition GenericPacketMath.h:73
@ HasExp
Definition GenericPacketMath.h:68
@ HasSqrt
Definition GenericPacketMath.h:66
@ HasExpm1
Definition GenericPacketMath.h:69
@ HasLog
Definition GenericPacketMath.h:70
@ HasDiv
Definition GenericPacketMath.h:65
Definition GenericPacketMath.h:107
@ 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
Scalar half
Definition GenericPacketMath.h:109
@ HasHalfPacket
Definition GenericPacketMath.h:114
@ size
Definition GenericPacketMath.h:112
@ AlignedOnScalar
Definition GenericPacketMath.h:113
@ Vectorizable
Definition GenericPacketMath.h:111
Definition TensorMeta.h:40
static const size_t size
Definition TensorMeta.h:41
const char Y
Definition EulerAngles.cpp:31