Eigen-unsupported  5.0.1-dev+284dcc12
 
Loading...
Searching...
No Matches
Eigen::TensorSycl::internal::TensorContractionKernel< OutScalar, LhsScalar, RhsScalar, OutAccessor, LhsMapper, RhsMapper, StorageIndex, Properties, TripleDim, Vectorizable, input_mapper_properties, IsFinal, contraction_tp > Class Template Reference

#include <unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h>

Detailed Description

template<typename OutScalar, typename LhsScalar, typename RhsScalar, typename OutAccessor, typename LhsMapper, typename RhsMapper, typename StorageIndex, typename Properties, typename TripleDim, bool Vectorizable, typename input_mapper_properties, bool IsFinal, contraction_type contraction_tp>
class Eigen::TensorSycl::internal::TensorContractionKernel< OutScalar, LhsScalar, RhsScalar, OutAccessor, LhsMapper, RhsMapper, StorageIndex, Properties, TripleDim, Vectorizable, input_mapper_properties, IsFinal, contraction_tp >

TensorContractionKernel is a template class that provides Tensor -Tensor contraction operation.

Template Parameters
OutScalardetermines the output scalar type
LhsScalardetermines the left-hand-side scalar type
RhsScalardetermines the right-hand-side 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)
LhsMapperdetermines the tensor contraction mapper type for left-hand-side matrix
RhsMapperdetermines the tensor contraction mapper type for right-hand-side matrix
StorageIndexdetermines the StorageIndex Type
Propertiesdetermines the Contraction Panel properties
TripleDimdetermines the M, K, N dimensions for the flatten tensors in order to treat them as a matrix
Vectorizabledetermines whether or not the vectorization is enabled for the Eigen expression.
input_mapper_properties: determine if the input tensors are matrix. If they are matrix, special memory access is used to guarantee that always the memory access are coalesced.
IsFinal: determine 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. This is the case when Tall/Skinny contraction is used. So in this case, a final reduction step is required to compute final output.
contraction_tpit is an enum value representing whether the local memory/no local memory implementation of the algorithm to be used
Parameters
scratchlocal memory containing tiles of LHS and RHS tensors for each work-group
lhsdetermines the left-hand-side flattened tensor (tensor mapper)
rhsdetermines the right-hand-side flattened tensor (tensor mapper)
out_resdetermines the output tensor containing the contraction result
groupSizeMa logical number determining the number of work-group for m dimension
groupSizeNa logical number determining the number of work-group for n dimension
numTilesdetermines total number of tiles on the k dimension
TripleDimdetermines the M, K, N dimensions for the flatten tensors in order to treat them as a matrix

Classes

struct  MemHolder
 MemHolder this is a place holder struct for creating memory hierarchy in SYCL. Inside SYCL kernel it is not allowed to have dynamic memory allocation. While the local memory is created outside of the kernel and passed to the kernel as an accessor, the private memory can only allowed to be allocated statically. Since we are abstracting the TiledMemory for both local and private memory, the MemHolder structs is used as a helper to abstract out different type of memory needed when local/no_local memory computation is called. More...
 
struct  MemHolder< contraction_type::no_local, MemSize >
 specialization of memHolder class when no local memory kernel is used. More...
 
struct  TiledMemory
 TiledMemory: contains required memory pointer for loading each tile of the TensorContraction panel from global memory to local/private memory when local/no_local algorithm used. More...
 

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