$darkmode
#include <unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h>
TensorContractionKernel is a template class that provides Tensor -Tensor contraction operation.
| OutScalar | determines the output scalar type |
| LhsScalar | determines the left-hand-side scalar type |
| RhsScalar | determines the right-hand-side scalar type |
| OutAccessor | determines 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) |
| LhsMapper | determines the tensor contraction mapper type for left-hand-side matrix |
| RhsMapper | determines the tensor contraction mapper type for right-hand-side matrix |
| StorageIndex | determines the StorageIndex Type |
| Properties | determines the Contraction Panel properties |
| TripleDim | determines the M, K, N dimensions for the flatten tensors in order to treat them as a matrix |
| Vectorizable | determines 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_tp | it is an enum value representing whether the local memory/no local memory implementation of the algorithm to be used |
| scratch | local memory containing tiles of LHS and RHS tensors for each work-group |
| lhs | determines the left-hand-side flattened tensor (tensor mapper) |
| rhs | determines the right-hand-side flattened tensor (tensor mapper) |
| out_res | determines the output tensor containing the contraction result |
| groupSizeM | a logical number determining the number of work-group for m dimension |
| groupSizeN | a logical number determining the number of work-group for n dimension |
| numTiles | determines total number of tiles on the k dimension |
| TripleDim | determines 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... | |