Home | History | Annotate | Download | only in Tensor
      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 (at) 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