Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal > Struct Template Reference

GeneralVectorTensor is a template class that provides Tensor -vector contraction operation, which is a special case of Tensor Tensor contraction. More...

#include <TensorContractionSycl.h>

Public Types

typedef Eigen::TensorSycl::internal::Vectorise< OutScalar, Eigen::SyclDevice, Vectorizable >::PacketReturnType PacketReturnType
 
typedef cl::sycl::accessor< OutScalar, 1, cl::sycl::access::mode::read_write, cl::sycl::access::target::local > Scratch
 
typedef BlockProperties< is_lhs_vec ? false :true, is_lhs_vec ? false :true, Vectorizable, PacketReturnTypeVecBlockProperties
 

Public Member Functions

EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE GeneralVectorTensor (Scratch scratch_, const VectorMapper vec_, const TensorMapper mat_, OutAccessor out_res_, const StorageIndex nonContractGroupSize_, const StorageIndex nonContractDim_, const StorageIndex contractDim_)
 
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void operator() (cl::sycl::nd_item< 1 > itemID) const
 

Static Public Member Functions

template<bool is_internal_block, typename OutPtr >
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void compute_panel (const cl::sycl::nd_item< 1 > &itemID, const VectorMapper &vec, const TensorMapper &mat, OutScalar *local_output, OutPtr out_ptr, const StorageIndex nonContractGroupOffset, const StorageIndex linearLocalThreadId, StorageIndex contractDim, StorageIndex nonContractDim, StorageIndex contractId, StorageIndex nonContractId, StorageIndex globalContractDimOffset, StorageIndex globalNonContractDimOffset, StorageIndex outScratchIndex)
 
template<typename InputBlockProperties , bool is_internal_block, int CFactor, int GroupSize, typename Input , typename Local >
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void extract_block (const Input &inpt, Local *local_ptr, const StorageIndex &linearLocalThreadId, const StorageIndex &cOffset, const StorageIndex &C)
 

Public Attributes

Scratch scratch
 
const VectorMapper vec
 
const TensorMapper mat
 
OutAccessor out_res
 
const StorageIndex nonContractGroupSize
 
const StorageIndex nonContractDim
 
const StorageIndex contractDim
 

Static Public Attributes

static EIGEN_CONSTEXPR int PacketSize
 
static EIGEN_CONSTEXPR StorageIndex OutScratchOffset
 

Detailed Description

template<typename OutScalar, typename OutAccessor, typename VectorMapper, typename TensorMapper, typename StorageIndex, typename Properties, StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
struct Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >

GeneralVectorTensor is a template class that provides Tensor -vector contraction operation, which is a special case of Tensor Tensor contraction.

Template Parameters
OutScalardetermines the output scalar type
OutAccessordetermines the sycl accessor type for out put (please see the sycl-1.2.1 specification (https://www.khronos.org/registry/SYCL/specs/sycl-1.2.1.pdf) for accessor definition)
VectorMapperdetermines the tensor contraction mapper for the vector input (can be lhs or rhs)
TensorMapperdetermines the tensor contraction mapper for the tensor input (can be lhs or rhs)
StorageIndexdetermines the StorageIndex Type
Propertiesdetermines the Contraction Panel properties
KFactordetermines the number of elements in K dimension in a Tile
Vectorizabledetermines whether or not the vectorization is enabled for the Eigen expression.
is_lhs_vecdetermines whether lhs is a vector or rhs is a vector
IsFinaldetermine if this is the final kernel. If so, the result will be written in a final output. Otherwise, the result of contraction will be written iin a temporary buffer.
Parameters
scratchdetermines the local memory containing the vector block for each work-group
vecdetermines the vector input (tensor mapper)
matdetermines the tensor input (tensor mapper)
out_resdetermines the output vector containing the contraction result
nonContractGroupSizea logical number determining the number of work-group for non-contracting dimension
nonContractDimdetermines the size of non contracting dimension for the flattened tensor
contractDimdetermines the size of non contracting dimension for the flattened tensor

Member Typedef Documentation

◆ PacketReturnType

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
typedef Eigen::TensorSycl::internal::Vectorise<OutScalar, Eigen::SyclDevice, Vectorizable>::PacketReturnType Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::PacketReturnType

◆ Scratch

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
typedef cl::sycl::accessor<OutScalar, 1, cl::sycl::access::mode::read_write, cl::sycl::access::target::local> Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::Scratch

◆ VecBlockProperties

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
typedef BlockProperties<is_lhs_vec ? false : true, is_lhs_vec ? false : true, Vectorizable, PacketReturnType> Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::VecBlockProperties

Constructor & Destructor Documentation

◆ GeneralVectorTensor()

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::GeneralVectorTensor ( Scratch  scratch_,
const VectorMapper  vec_,
const TensorMapper  mat_,
OutAccessor  out_res_,
const StorageIndex  nonContractGroupSize_,
const StorageIndex  nonContractDim_,
const StorageIndex  contractDim_ 
)
inline
1023  : scratch(scratch_),
1024  vec(vec_),
1025  mat(mat_),
1026  out_res(out_res_),
1027  nonContractGroupSize(nonContractGroupSize_),
1028  nonContractDim(nonContractDim_),
1029  contractDim(contractDim_) {}
Scratch scratch
Definition: TensorContractionSycl.h:1010
const TensorMapper mat
Definition: TensorContractionSycl.h:1012
const StorageIndex nonContractDim
Definition: TensorContractionSycl.h:1015
const StorageIndex nonContractGroupSize
Definition: TensorContractionSycl.h:1014
const StorageIndex contractDim
Definition: TensorContractionSycl.h:1016
OutAccessor out_res
Definition: TensorContractionSycl.h:1013
const VectorMapper vec
Definition: TensorContractionSycl.h:1011

Member Function Documentation

◆ compute_panel()

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
template<bool is_internal_block, typename OutPtr >
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::compute_panel ( const cl::sycl::nd_item< 1 > &  itemID,
const VectorMapper &  vec,
const TensorMapper &  mat,
OutScalar *  local_output,
OutPtr  out_ptr,
const StorageIndex  nonContractGroupOffset,
const StorageIndex  linearLocalThreadId,
StorageIndex  contractDim,
StorageIndex  nonContractDim,
StorageIndex  contractId,
StorageIndex  nonContractId,
StorageIndex  globalContractDimOffset,
StorageIndex  globalNonContractDimOffset,
StorageIndex  outScratchIndex 
)
inlinestatic
1076  {
1077  OutScalar outScalar[Properties::WorkLoadPerThreadNC] = {OutScalar(0)};
1078  // Reading the vector
1079 #ifdef EIGEN_SYCL_LOCAL_MEM_UNSET_OR_ON
1080  const StorageIndex vectorOffset = contractGroupOffset + linearLocalThreadId;
1081  extract_block<VecBlockProperties, is_internal_block, KFactor,
1082  Properties::LocalThreadSizeNC * Properties::LocalThreadSizeC>(vec, scratch_ptr, linearLocalThreadId,
1083  vectorOffset, contractDim);
1084 
1085  itemID.barrier(cl::sycl::access::fence_space::local_space);
1086  auto in_scratch_ptr = scratch_ptr + contractId;
1087 #endif
1088 
1089  StorageIndex privateOffsetC = 0;
1091  for (StorageIndex i = 0; i < Properties::WorkLoadPerThreadC; i++) {
1092  StorageIndex privateOffsetNC = 0;
1093  bool contract_conds = ((globalContractDimOffset + privateOffsetC) < contractDim);
1094 #ifdef EIGEN_SYCL_LOCAL_MEM_UNSET_OR_ON
1095  auto vecScalar = *in_scratch_ptr;
1096 #else
1097  auto vecScalar = (check_boundary<is_internal_block>(contract_conds))
1098  ? vec(is_lhs_vec ? StorageIndex(0) : globalContractDimOffset + privateOffsetC,
1099  is_lhs_vec ? globalContractDimOffset + privateOffsetC : StorageIndex(0))
1100  : OutScalar(0);
1101 #endif
1103  for (StorageIndex j = 0; j < Properties::WorkLoadPerThreadNC; j++) {
1104  auto matScalar = (check_boundary<is_internal_block>(
1105  contract_conds && ((globalNonContractDimOffset + privateOffsetNC) < nonContractDim)))
1106  ? mat(is_lhs_vec ? globalContractDimOffset + privateOffsetC
1107  : globalNonContractDimOffset + privateOffsetNC,
1108  is_lhs_vec ? globalNonContractDimOffset + privateOffsetNC
1109  : globalContractDimOffset + privateOffsetC)
1110  : OutScalar(0);
1111 
1112  outScalar[j] = ::Eigen::internal::pmadd(matScalar, vecScalar, outScalar[j]);
1113  privateOffsetNC += Properties::LocalThreadSizeNC;
1114  }
1115  privateOffsetC += Properties::LocalThreadSizeC;
1116 #ifdef EIGEN_SYCL_LOCAL_MEM_UNSET_OR_ON
1117  in_scratch_ptr += Properties::LocalThreadSizeC;
1118 #endif
1119  }
1120 
1121  auto out_scratch_ptr = local_output + outScratchIndex;
1122  // Each block of 16*16 element in shared memory should reduce to 16*1
1124  for (StorageIndex j = 0; j < Properties::WorkLoadPerThreadNC; j++) {
1125  *out_scratch_ptr = outScalar[j];
1126 
1127  out_scratch_ptr += (Properties::LocalThreadSizeNC * Properties::LocalThreadSizeC);
1128  }
1129  if (is_lhs_vec) {
1130  nonContractId = linearLocalThreadId % Properties::LocalThreadSizeNC;
1131  contractId = linearLocalThreadId / Properties::LocalThreadSizeNC;
1132  outScratchIndex = nonContractId + contractId * Properties::LocalThreadSizeNC;
1133  }
1134 
1135  out_scratch_ptr = local_output + outScratchIndex;
1137  for (StorageIndex j = 0; j < Properties::WorkLoadPerThreadNC; j++) {
1139  for (StorageIndex offset = Properties::LocalThreadSizeC >> 1; offset > 0; offset >>= 1) {
1140  itemID.barrier(cl::sycl::access::fence_space::local_space);
1141  if (contractId < offset) {
1142  StorageIndex myNeigbourId = (Properties::LocalThreadSizeNC * offset);
1143  *out_scratch_ptr += out_scratch_ptr[myNeigbourId];
1144  }
1145  }
1146  // moving to next 16 by 16 block
1147  out_scratch_ptr += (Properties::LocalThreadSizeNC * Properties::LocalThreadSizeC);
1148  }
1149 
1150  if (contractId == 0) {
1151  out_scratch_ptr = local_output + nonContractId;
1152  StorageIndex global_final_offset = nonContractGroupOffset + nonContractId;
1153  out_ptr += global_final_offset;
1155  for (StorageIndex j = 0; j < Properties::WorkLoadPerThreadNC; j++) {
1156  if (check_boundary<is_internal_block>(global_final_offset < nonContractDim)) {
1157  auto res = *out_scratch_ptr;
1158 
1159  *out_ptr = res;
1160  out_ptr += Properties::LocalThreadSizeNC;
1161  }
1162  // moving to next 16 by 16 block to ge the next 16 reduced elements
1163  out_scratch_ptr += (Properties::LocalThreadSizeNC * Properties::LocalThreadSizeC);
1164  if (!(is_internal_block)) global_final_offset += Properties::LocalThreadSizeNC;
1165  }
1166  }
1167  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
#define EIGEN_UNROLL_LOOP
Definition: Macros.h:1298
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition: PartialRedux_count.cpp:3
EIGEN_STRONG_INLINE Packet4f pmadd(const Packet4f &a, const Packet4f &b, const Packet4f &c)
Definition: AltiVec/PacketMath.h:1218
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void extract_block(const Input &inpt, Local *local_ptr, const StorageIndex &linearLocalThreadId, const StorageIndex &cOffset, const StorageIndex &C)
Definition: TensorContractionSycl.h:1171
BlockProperties< is_lhs_vec ? false :true, is_lhs_vec ? false :true, Vectorizable, PacketReturnType > VecBlockProperties
Definition: TensorContractionSycl.h:1008
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::contractDim, EIGEN_UNROLL_LOOP, Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::extract_block(), i, j, Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::mat, Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::nonContractDim, Eigen::internal::pmadd(), res, and Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::vec.

◆ extract_block()

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
template<typename InputBlockProperties , bool is_internal_block, int CFactor, int GroupSize, typename Input , typename Local >
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::extract_block ( const Input &  inpt,
Local *  local_ptr,
const StorageIndex &  linearLocalThreadId,
const StorageIndex &  cOffset,
const StorageIndex &  C 
)
inlinestatic
1173  {
1174  local_ptr += InputBlockProperties::c_stride * linearLocalThreadId;
1175  StorageIndex cIndex = cOffset;
1176  for (StorageIndex cId = 0; cId < CFactor / InputBlockProperties::c_stride; cId++) {
1177  if (check_boundary<is_internal_block>(cIndex + InputBlockProperties::c_stride - 1 < C)) {
1178  auto val = read<InputBlockProperties::packet_load, InputBlockProperties::is_coalesced_layout,
1179  InputBlockProperties::is_rhs, typename InputBlockProperties::OutType>(inpt, StorageIndex(0),
1180  cIndex, StorageIndex(1));
1181  write<StorageIndex, 1, data_source::local_mem>(val, local_ptr);
1182  } else {
1184  for (StorageIndex i = 0; i < InputBlockProperties::elements_per_access; i++) {
1185  OutScalar val =
1186  (cIndex + i < C)
1187  ? read<false, InputBlockProperties::is_coalesced_layout, InputBlockProperties::is_rhs, OutScalar>(
1188  inpt, StorageIndex(0), cIndex + i, StorageIndex(1))
1189  : OutScalar(0);
1190  write<StorageIndex, 1, data_source::local_mem>(val, local_ptr + i);
1191  }
1192  }
1193  local_ptr += InputBlockProperties::c_stride * GroupSize;
1194  cIndex += InputBlockProperties::c_stride * GroupSize;
1195  }
1196  }
Matrix< Scalar, Dynamic, Dynamic > C
Definition: bench_gemm.cpp:49
Definition: matrices.h:74
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::enable_if_t< PacketLoad, PacketType > read(const TensorMapper &tensorMapper, const StorageIndex &NCIndex, const StorageIndex &CIndex, const StorageIndex &ld)
read, a template function used for loading the data from global memory. This function is used to guar...
Definition: TensorContractionSycl.h:162
val
Definition: calibrate.py:119

References EIGEN_UNROLL_LOOP, i, Eigen::TensorSycl::internal::read(), and calibrate::val.

Referenced by Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::compute_panel().

◆ operator()()

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::operator() ( cl::sycl::nd_item< 1 >  itemID) const
inline
1031  {
1032  auto scratch_ptr = scratch.get_pointer();
1033  const StorageIndex linearLocalThreadId = itemID.get_local_id(0);
1034  StorageIndex nonContractId = is_lhs_vec ? linearLocalThreadId / Properties::LocalThreadSizeC
1035  : linearLocalThreadId % Properties::LocalThreadSizeNC;
1036  StorageIndex contractId = is_lhs_vec ? linearLocalThreadId % Properties::LocalThreadSizeC
1037  : linearLocalThreadId / Properties::LocalThreadSizeNC;
1038  const StorageIndex cGroupSize = itemID.get_group_range(0) / nonContractGroupSize;
1039  const StorageIndex nonContractGroupId =
1040  is_lhs_vec ? itemID.get_group(0) / cGroupSize : itemID.get_group(0) % nonContractGroupSize;
1041  const StorageIndex contractGroupId =
1042  is_lhs_vec ? itemID.get_group(0) % cGroupSize : itemID.get_group(0) / nonContractGroupSize;
1043  auto out_ptr = out_res + (IsFinal ? 0 : contractGroupId * nonContractDim);
1044 
1045  const StorageIndex nonContractGroupOffset = nonContractGroupId * Properties::TileSizeDimNC;
1046  const StorageIndex contractGroupOffset = contractGroupId * Properties::TileSizeDimC;
1047  auto outScratchIndex = nonContractId + contractId * Properties::LocalThreadSizeNC;
1048  const StorageIndex globalNonContractDimOffset = nonContractGroupOffset + nonContractId;
1049  const StorageIndex globalContractDimOffset = contractGroupOffset + contractId;
1050  auto local_output = scratch_ptr + OutScratchOffset;
1051  const bool is_internal = nonContractDim - nonContractGroupOffset >= Properties::TileSizeDimNC &&
1052  contractDim - contractGroupOffset >= Properties::TileSizeDimC;
1053  is_internal
1054  ? compute_panel<true>(itemID, vec, mat, local_output, out_ptr,
1056  scratch_ptr, contractGroupOffset,
1057 #endif
1058  nonContractGroupOffset, linearLocalThreadId, contractDim, nonContractDim, contractId,
1059  nonContractId, globalContractDimOffset, globalNonContractDimOffset, outScratchIndex)
1060  : compute_panel<false>(itemID, vec, mat, local_output, out_ptr,
1062  scratch_ptr, contractGroupOffset,
1063 #endif
1064  nonContractGroupOffset, linearLocalThreadId, contractDim, nonContractDim, contractId,
1065  nonContractId, globalContractDimOffset, globalNonContractDimOffset, outScratchIndex);
1066  }
#define EIGEN_SYCL_LOCAL_MEM_UNSET_OR_ON
Definition: TensorMacros.h:51
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void compute_panel(const cl::sycl::nd_item< 1 > &itemID, const VectorMapper &vec, const TensorMapper &mat, OutScalar *local_output, OutPtr out_ptr, const StorageIndex nonContractGroupOffset, const StorageIndex linearLocalThreadId, StorageIndex contractDim, StorageIndex nonContractDim, StorageIndex contractId, StorageIndex nonContractId, StorageIndex globalContractDimOffset, StorageIndex globalNonContractDimOffset, StorageIndex outScratchIndex)
Definition: TensorContractionSycl.h:1068
static EIGEN_CONSTEXPR StorageIndex OutScratchOffset
Definition: TensorContractionSycl.h:1002

References Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::contractDim, EIGEN_SYCL_LOCAL_MEM_UNSET_OR_ON, Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::nonContractDim, Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::nonContractGroupSize, Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::out_res, Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::OutScratchOffset, Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::scratch, and Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::vec.

Member Data Documentation

◆ contractDim

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
const StorageIndex Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::contractDim

◆ mat

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
const TensorMapper Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::mat

◆ nonContractDim

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
const StorageIndex Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::nonContractDim

◆ nonContractGroupSize

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
const StorageIndex Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::nonContractGroupSize

◆ out_res

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
OutAccessor Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::out_res

◆ OutScratchOffset

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
EIGEN_CONSTEXPR StorageIndex Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::OutScratchOffset
static

◆ PacketSize

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
EIGEN_CONSTEXPR int Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::PacketSize
static
Initial value:
=
Eigen::TensorSycl::internal::Vectorise<OutScalar, Eigen::SyclDevice, Vectorizable>::PacketSize

◆ scratch

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
Scratch Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::scratch

◆ vec

template<typename OutScalar , typename OutAccessor , typename VectorMapper , typename TensorMapper , typename StorageIndex , typename Properties , StorageIndex KFactor, bool Vectorizable, bool is_lhs_vec, bool IsFinal>
const VectorMapper Eigen::TensorSycl::internal::GeneralVectorTensor< OutScalar, OutAccessor, VectorMapper, TensorMapper, StorageIndex, Properties, KFactor, Vectorizable, is_lhs_vec, IsFinal >::vec

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