• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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