1 // This file is part of Eigen, a lightweight C++ template library 2 // for linear algebra. 3 // 4 // Mehdi Goli Codeplay Software Ltd. 5 // Ralph Potter Codeplay Software Ltd. 6 // Luke Iwanski Codeplay Software Ltd. 7 // Contact: eigen@codeplay.com 8 // 9 // This Source Code Form is subject to the terms of the Mozilla 10 // Public License v. 2.0. If a copy of the MPL was not distributed 11 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 12 13 // General include header of SYCL target for Tensor Module 14 #ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_H 15 #define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_H 16 17 #ifdef EIGEN_USE_SYCL 18 19 // global pointer to set different attribute state for a class 20 template <class T> 21 struct MakeGlobalPointer { 22 typedef typename cl::sycl::global_ptr<T>::pointer_t Type; 23 }; 24 25 // global pointer to set different attribute state for a class 26 template <class T> 27 struct MakeLocalPointer { 28 typedef typename cl::sycl::local_ptr<T>::pointer_t Type; 29 }; 30 31 32 namespace Eigen { 33 namespace TensorSycl { 34 namespace internal { 35 36 /// This struct is used for special expression nodes with no operations (for example assign and selectOP). 37 struct NoOP; 38 39 template<bool IsConst, typename T> struct GetType{ 40 typedef const T Type; 41 }; 42 template<typename T> struct GetType<false, T>{ 43 typedef T Type; 44 }; 45 46 } 47 } 48 } 49 50 // tuple construction 51 #include "TensorSyclTuple.h" 52 53 // counting number of leaf at compile time 54 #include "TensorSyclLeafCount.h" 55 56 // The index PlaceHolder takes the actual expression and replaces the actual 57 // data on it with the place holder. It uses the same pre-order expression tree 58 // traverse as the leaf count in order to give the right access number to each 59 // node in the expression 60 #include "TensorSyclPlaceHolderExpr.h" 61 62 // creation of an accessor tuple from a tuple of SYCL buffers 63 #include "TensorSyclExtractAccessor.h" 64 65 // this is used to change the address space type in tensor map for GPU 66 #include "TensorSyclConvertToDeviceExpression.h" 67 68 // this is used to extract the functors 69 #include "TensorSyclExtractFunctors.h" 70 71 // this is used to create tensormap on the device 72 // this is used to construct the expression on the device 73 #include "TensorSyclExprConstructor.h" 74 75 /// this is used for extracting tensor reduction 76 #include "TensorReductionSycl.h" 77 78 // kernel execution using fusion 79 #include "TensorSyclRun.h" 80 81 #endif // end of EIGEN_USE_SYCL 82 #endif // UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_H 83