10#ifndef EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_MAPPER_H
11#define EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_MAPPER_H
27template <
typename Tensor,
bool HasRawAccess,
template <
class>
class MakePointer_ =
MakePointer>
31 typename nocontract_t,
typename contract_t,
int packet_size,
32 bool inner_dim_contiguous,
bool inner_dim_reordered,
int Alignment,
34class BaseTensorContractionMapper;
36template <
typename Tensor,
bool HasRawAccess,
template <
class>
class MakePointer_>
73template <
typename Tensor,
template <
class>
class MakePointer_>
107 typename MakePointer_<const Scalar>::Type m_data;
112 typename nocontract_t,
typename contract_t,
113 int packet_size,
bool inner_dim_contiguous,
int Alignment,
template <
class>
class MakePointer_ = MakePointer>
163 if (
side ==
Lhs && inner_dim_contiguous) {
180 if (
side ==
Rhs && inner_dim_contiguous) {
207 if (
side ==
Lhs && inner_dim_contiguous) {
229 if (
side ==
Rhs && inner_dim_contiguous) {
251 #ifdef EIGEN_USE_SYCL
281 bool inner_dim_reordered,
int Alignment,
template <
class>
class MakePointer_>
295 template <
typename PacketT,
int AlignmentType>
306 if (Tensor::PacketAccess && inner_dim_contiguous && !inner_dim_reordered) {
320 if (Tensor::PacketAccess &&
334 data[k + 1] = this->
m_tensor.coeff(internal_pair.second);
341 template <
typename PacketT,
int AlignmentType>
357 data[k + 1] = this->
m_tensor.coeff(internal_pair.second);
364 template <
typename PacketT,
int AlignmentType>
374 typename nocontract_t,
typename contract_t,
375 bool inner_dim_contiguous,
376 bool inner_dim_reordered,
int Alignment,
template <
class>
class MakePointer_>
377class BaseTensorContractionMapper<
Scalar,
Index,
side,
Tensor,
nocontract_t, contract_t, 1, inner_dim_contiguous, inner_dim_reordered, Alignment,
MakePointer_>
378 :
public SimpleTensorContractionMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, 1, inner_dim_contiguous, Alignment, MakePointer_>
408 typename nocontract_t,
typename contract_t,
410 bool inner_dim_contiguous,
bool inner_dim_reordered,
int Alignment,
template <
class>
class MakePointer_=
MakePointer>
414 typedef BaseTensorContractionMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, inner_dim_reordered, Alignment, MakePointer_> ParentMapper;
415 typedef TensorContractionSubMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, inner_dim_reordered, Alignment, MakePointer_> Self;
429 Index stride = m_base_mapper.stride();
436 return m_base_mapper(
i, 0);
438 return m_base_mapper(
i + m_vert_offset, m_horiz_offset);
442 return m_base_mapper(
i,
j);
444 return m_base_mapper(
i + m_vert_offset,
j + m_horiz_offset);
447 template <
typename PacketT>
455 template <
typename PacketT>
463 template <
typename PacketT,
int AlignmentType>
471 template <
typename PacketT>
474 m_base_mapper.storePacket(
i, 0,
p);
476 m_base_mapper.storePacket(
i + m_vert_offset, m_horiz_offset,
p);
483 return LinearMapper(m_base_mapper,
i + m_vert_offset,
j + m_horiz_offset);
486 template <
typename PacketT,
int AlignmentType>
496 template <
typename PacketT>
501 #ifdef EIGEN_USE_SYCL
504 m_base_mapper.bind(
cgh);
514 const Index m_vert_offset;
515 const Index m_horiz_offset;
519template<
typename Scalar_,
typename Index,
int side,
521 typename nocontract_t,
typename contract_t,
523 bool inner_dim_contiguous,
bool inner_dim_reordered,
int Alignment,
template <
class>
class MakePointer_=
MakePointer>
525 :
public BaseTensorContractionMapper<Scalar_, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, inner_dim_reordered, Alignment, MakePointer_> {
529 typedef BaseTensorContractionMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, inner_dim_reordered, Alignment, MakePointer_> Base;
530 typedef TensorContractionSubMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, inner_dim_reordered, Alignment, MakePointer_> SubMapper;
550 return Base::m_tensor;
int i
Definition BiCGSTAB_step_by_step.cpp:9
#define EIGEN_ALWAYS_INLINE
Definition Macros.h:932
#define EIGEN_UNROLL_LOOP
Definition Macros.h:1461
#define EIGEN_UNUSED_VARIABLE(var)
Definition Macros.h:1076
#define EIGEN_DEVICE_FUNC
Definition Macros.h:976
#define eigen_assert(x)
Definition Macros.h:1037
#define EIGEN_STRONG_INLINE
Definition Macros.h:917
int data[]
Definition Map_placement_new.cpp:1
#define EIGEN_STATIC_ASSERT(CONDITION, MSG)
Definition StaticAssert.h:127
float * p
Definition Tutorial_Map_using.cpp:9
Scalar Scalar int size
Definition benchVecAdd.cpp:17
SCALAR Scalar
Definition bench_gemm.cpp:46
The tensor class.
Definition Tensor.h:64
Scalar_ Scalar
Definition Tensor.h:71
internal::traits< Self >::Index Index
Definition Tensor.h:70
Eigen::internal::BaseTensorContractionMapper< Scalar, Index, side, Tensor, nocontract_t, contract_t, 1, inner_dim_contiguous, inner_dim_reordered, Alignment, MakePointer_ >::ParentMapper SimpleTensorContractionMapper< Scalar, Index, side, Tensor, nocontract_t, contract_t, 1, inner_dim_contiguous, Alignment, MakePointer_ > ParentMapper
Definition TensorContractionMapper.h:381
Eigen::internal::BaseTensorContractionMapper< Scalar, Index, side, Tensor, nocontract_t, contract_t, 1, inner_dim_contiguous, inner_dim_reordered, Alignment, MakePointer_ >::load EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketT load(Index i, Index j) const
Definition TensorContractionMapper.h:398
Eigen::internal::BaseTensorContractionMapper< Scalar, Index, side, Tensor, nocontract_t, contract_t, 1, inner_dim_contiguous, inner_dim_reordered, Alignment, MakePointer_ >::loadPacket EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketT loadPacket(Index i, Index j) const
Definition TensorContractionMapper.h:392
Eigen::internal::BaseTensorContractionMapper< Scalar, Index, side, Tensor, nocontract_t, contract_t, 1, inner_dim_contiguous, inner_dim_reordered, Alignment, MakePointer_ >::BaseTensorContractionMapper EIGEN_DEVICE_FUNC BaseTensorContractionMapper(const Tensor &tensor, const nocontract_t &nocontract_strides, const nocontract_t &ij_strides, const contract_t &contract_strides, const contract_t &k_strides)
Definition TensorContractionMapper.h:384
Definition TensorContractionMapper.h:283
EIGEN_DEVICE_FUNC BaseTensorContractionMapper(const Tensor &tensor, const nocontract_t &nocontract_strides, const nocontract_t &ij_strides, const contract_t &contract_strides, const contract_t &k_strides)
Definition TensorContractionMapper.h:288
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE internal::enable_if< internal::unpacket_traits< PacketT >::size!=packet_size, PacketT >::type load(Index i, Index j) const
Definition TensorContractionMapper.h:344
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE internal::enable_if< internal::unpacket_traits< PacketT >::size==packet_size, PacketT >::type load(Index i, Index j) const
Definition TensorContractionMapper.h:298
SimpleTensorContractionMapper< Scalar, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, Alignment, MakePointer_ > ParentMapper
Definition TensorContractionMapper.h:285
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketT loadPacket(Index i, Index j) const
Definition TensorContractionMapper.h:366
Definition TensorContractionMapper.h:114
const contract_t m_k_strides
Definition TensorContractionMapper.h:274
EIGEN_DEVICE_FUNC SimpleTensorContractionMapper(const Tensor &tensor, const nocontract_t &nocontract_strides, const nocontract_t &ij_strides, const contract_t &contract_strides, const contract_t &k_strides)
Definition TensorContractionMapper.h:117
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE IndexPair< Index > computeIndexPair(Index row, Index col, const Index distance) const
Definition TensorContractionMapper.h:192
const contract_t & k_strides() const
Definition TensorContractionMapper.h:267
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index computeIndex(Index row, Index col) const
Definition TensorContractionMapper.h:151
const nocontract_t & ij_strides() const
Definition TensorContractionMapper.h:265
CoeffLoader< Tensor, Tensor::RawAccess, MakePointer_ > m_tensor
Definition TensorContractionMapper.h:270
const nocontract_t m_nocontract_strides
Definition TensorContractionMapper.h:271
const contract_t m_contract_strides
Definition TensorContractionMapper.h:273
const nocontract_t & nocontract_strides() const
Definition TensorContractionMapper.h:262
const contract_t & contract_strides() const
Definition TensorContractionMapper.h:266
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Index firstAligned(Index size) const
Definition TensorContractionMapper.h:241
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Index stride() const
Definition TensorContractionMapper.h:247
@ DirectOffsets
Definition TensorContractionMapper.h:129
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(Index row, Index col) const
Definition TensorContractionMapper.h:146
const CoeffLoader< Tensor, Tensor::RawAccess, MakePointer_ > & tensor() const
Definition TensorContractionMapper.h:258
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(Index row) const
Definition TensorContractionMapper.h:140
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void offsetBuffer(typename Tensor::Index offset)
Definition TensorContractionMapper.h:132
const nocontract_t m_ij_strides
Definition TensorContractionMapper.h:272
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void prefetch(Index)
Definition TensorContractionMapper.h:137
Definition TensorContractionMapper.h:411
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketT loadPacket(Index i) const
Definition TensorContractionMapper.h:448
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE LinearMapper getLinearMapper(Index i, Index j) const
Definition TensorContractionMapper.h:479
@ UseDirectOffsets
Definition TensorContractionMapper.h:421
BaseTensorContractionMapper< Scalar, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, inner_dim_reordered, Alignment, MakePointer_ > ParentMapper
Definition TensorContractionMapper.h:414
EIGEN_DEVICE_FUNC TensorContractionSubMapper(const ParentMapper &base_mapper, Index vert_offset, Index horiz_offset)
Definition TensorContractionMapper.h:424
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketT loadPacket(Index i, Index j) const
Definition TensorContractionMapper.h:464
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void storePacket(Index i, const PacketT &p) const
Definition TensorContractionMapper.h:472
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar operator()(Index i) const
Definition TensorContractionMapper.h:434
const ParentMapper & base_mapper() const
Definition TensorContractionMapper.h:508
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketT loadPacket(Index i, Index j) const
Definition TensorContractionMapper.h:456
Index vert_offset() const
Definition TensorContractionMapper.h:509
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketT load(Index i) const
Definition TensorContractionMapper.h:487
TensorContractionSubMapper< Scalar, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, inner_dim_reordered, Alignment, MakePointer_ > Self
Definition TensorContractionMapper.h:415
Self LinearMapper
Definition TensorContractionMapper.h:416
Index horiz_offset() const
Definition TensorContractionMapper.h:510
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool aligned(Index) const
Definition TensorContractionMapper.h:497
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar operator()(Index i, Index j) const
Definition TensorContractionMapper.h:440
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 y set format x g set format y g set format x2 g set format y2 g set format z g set angles radians set nogrid set key title set key left top Right noreverse box linetype linewidth samplen spacing width set nolabel set noarrow set nologscale set logscale x set set pointsize set encoding default set nopolar set noparametric set set set set surface set nocontour set clabel set mapping cartesian set nohidden3d set cntrparam order set cntrparam linear set cntrparam levels auto set cntrparam points set size set set xzeroaxis lt lw set x2zeroaxis lt lw set yzeroaxis lt lw set y2zeroaxis lt lw set tics in set ticslevel set tics set mxtics default set mytics default set mx2tics default set my2tics default set xtics border mirror norotate autofreq set ytics border mirror norotate autofreq set ztics border nomirror norotate autofreq set nox2tics set noy2tics set timestamp bottom norotate offset
Definition gnuplot_common_settings.hh:64
AlignmentType
Definition Constants.h:232
@ Unaligned
Definition Constants.h:233
@ Aligned
Definition Constants.h:240
EIGEN_CONSTEXPR Index first(const T &x) EIGEN_NOEXCEPT
Definition IndexedViewHelper.h:81
@ Lhs
Definition TensorContractionMapper.h:19
@ Rhs
Definition TensorContractionMapper.h:18
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:74
Definition BandTriangularSolver.h:13
Definition TensorForwardDeclarations.h:21
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void offsetBuffer(typename Tensor::Index offset)
Definition TensorContractionMapper.h:81
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Tensor::Scalar coeff(typename Tensor::Index index) const
Definition TensorContractionMapper.h:90
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE CoeffLoader(const Tensor &tensor)
Definition TensorContractionMapper.h:79
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor::PacketReturnType packet(typename Tensor::Index index) const
Definition TensorContractionMapper.h:93
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE const MakePointer_< consttypenameTensor::Scalar >::Type data() const
Definition TensorContractionMapper.h:86
Definition TensorContractionMapper.h:37
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE CoeffLoader(const Tensor &tensor)
Definition TensorContractionMapper.h:42
@ DirectOffsets
Definition TensorContractionMapper.h:39
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Tensor::Scalar coeff(typename Tensor::Index index) const
Definition TensorContractionMapper.h:54
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor::PacketReturnType packet(typename Tensor::Index index) const
Definition TensorContractionMapper.h:57
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void offsetBuffer(typename Tensor::Index)
Definition TensorContractionMapper.h:44
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE const MakePointer_< consttypenameTensor::Scalar >::Type data() const
Definition TensorContractionMapper.h:49
Definition ForwardDeclarations.h:17
Definition GenericPacketMath.h:133
std::ptrdiff_t j
Definition tut_arithmetic_redux_minmax.cpp:2