Eigen::TensorSycl::internal::BlockProperties< is_transposed, is_rhs_, packet_load_, PacketType > Struct Template Reference

BlockProperties is a template class that provides different characteristic of a block of each Tensor processed by each workgroup. More...

#include <TensorContractionSycl.h>

Public Types

typedef Eigen::internal::unpacket_traits< PacketType >::type OutScalar
 
typedef std::conditional_t< packet_load, PacketType, OutScalarOutType
 

Static Public Attributes

static EIGEN_CONSTEXPR bool packet_load = packet_load_
 
static EIGEN_CONSTEXPR bool is_rhs = is_rhs_
 
static EIGEN_CONSTEXPR int elements_per_access = Eigen::internal::unpacket_traits<OutType>::size
 
static EIGEN_CONSTEXPR bool is_coalesced_layout = !(is_transposed ^ is_rhs)
 
static EIGEN_CONSTEXPR int nc_stride = (is_coalesced_layout ? elements_per_access : 1)
 
static EIGEN_CONSTEXPR int c_stride = (is_coalesced_layout ? 1 : elements_per_access)
 

Detailed Description

template<bool is_transposed, bool is_rhs_, bool packet_load_, typename PacketType>
struct Eigen::TensorSycl::internal::BlockProperties< is_transposed, is_rhs_, packet_load_, PacketType >

BlockProperties is a template class that provides different characteristic of a block of each Tensor processed by each workgroup.

Template Parameters
is_transposediff true, determines whether or not the block of the Tensor is transposed
packet_load_determines if the each element of this tensor block should be loaded in a packet mode
PacketTypedetermines the type of packet
OutTypedetermines the type of each element for this block of tensor. If packet load is true, it will be packetType; Otherwise it will be scalar Type
Parameters
elements_per_accessdetermines the size of each element based on OutType
is_coalesced_layoutdetermines whether or not the Tensor data in a memory can be access coalesced and vectorized when possible. Coalesced memory access is a key factor in Kernel performance. When a tensor is 2d and the contracting dimension is 1, it is always possible to accessed tensor data coalesced and vectorized. This is the case when RHS(right hand side) Tensor is transposed or when LHS(left hand side) Tensor is not transposed.
nc_stridedetermines the stride of non-contracting dimension to access the next adjustment element within the Tensor Block for each workgroup
c_stridedetermines the stride of contracting dimension to access the next adjustment element within the Tensor Block for each workgroup

Member Typedef Documentation

◆ OutScalar

template<bool is_transposed, bool is_rhs_, bool packet_load_, typename PacketType >
typedef Eigen::internal::unpacket_traits<PacketType>::type Eigen::TensorSycl::internal::BlockProperties< is_transposed, is_rhs_, packet_load_, PacketType >::OutScalar

◆ OutType

template<bool is_transposed, bool is_rhs_, bool packet_load_, typename PacketType >
typedef std::conditional_t<packet_load, PacketType, OutScalar> Eigen::TensorSycl::internal::BlockProperties< is_transposed, is_rhs_, packet_load_, PacketType >::OutType

Member Data Documentation

◆ c_stride

template<bool is_transposed, bool is_rhs_, bool packet_load_, typename PacketType >
EIGEN_CONSTEXPR int Eigen::TensorSycl::internal::BlockProperties< is_transposed, is_rhs_, packet_load_, PacketType >::c_stride = (is_coalesced_layout ? 1 : elements_per_access)
static

◆ elements_per_access

template<bool is_transposed, bool is_rhs_, bool packet_load_, typename PacketType >
EIGEN_CONSTEXPR int Eigen::TensorSycl::internal::BlockProperties< is_transposed, is_rhs_, packet_load_, PacketType >::elements_per_access = Eigen::internal::unpacket_traits<OutType>::size
static

◆ is_coalesced_layout

template<bool is_transposed, bool is_rhs_, bool packet_load_, typename PacketType >
EIGEN_CONSTEXPR bool Eigen::TensorSycl::internal::BlockProperties< is_transposed, is_rhs_, packet_load_, PacketType >::is_coalesced_layout = !(is_transposed ^ is_rhs)
static

◆ is_rhs

template<bool is_transposed, bool is_rhs_, bool packet_load_, typename PacketType >
EIGEN_CONSTEXPR bool Eigen::TensorSycl::internal::BlockProperties< is_transposed, is_rhs_, packet_load_, PacketType >::is_rhs = is_rhs_
static

◆ nc_stride

◆ packet_load

template<bool is_transposed, bool is_rhs_, bool packet_load_, typename PacketType >
EIGEN_CONSTEXPR bool Eigen::TensorSycl::internal::BlockProperties< is_transposed, is_rhs_, packet_load_, PacketType >::packet_load = packet_load_
static

The documentation for this struct was generated from the following file: