22 #ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_CONVERT_TO_DEVICE_EXPRESSION_HPP 23 #define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_CONVERT_TO_DEVICE_EXPRESSION_HPP 26 namespace TensorSycl {
34 template <
typename Expr>
37 template<
template<
class...>
class NonOpCategory,
bool IsConst,
typename... Args>
43 template<
template<
class,
template <
class>
class >
class NonOpCategory, bool IsConst, typename Args>
50 #define TENSORMAPCONVERT(CVQual)\ 51 template <typename Scalar_, int Options_, int Options2_, int NumIndices_, typename IndexType_, template <class> class MakePointer_>\ 52 struct ConvertToDeviceExpression<CVQual TensorMap<Tensor<Scalar_, NumIndices_, Options_, IndexType_>, Options2_, MakePointer_> > {\ 53 typedef CVQual TensorMap<Tensor<Scalar_, NumIndices_, Options_, IndexType_>, Options2_, MakeGlobalPointer> Type;\ 58 #undef TENSORMAPCONVERT 62 #define CATEGORYCONVERT(CVQual)\ 63 template <template<class, class...> class Category, typename OP, typename... subExprs>\ 64 struct ConvertToDeviceExpression<CVQual Category<OP, subExprs...> > {\ 65 typedef CVQual Category<OP, typename ConvertToDeviceExpression<subExprs>::Type... > Type;\ 69 #undef CATEGORYCONVERT 74 #define SELECTOPCONVERT(CVQual, Res)\ 75 template <typename IfExpr, typename ThenExpr, typename ElseExpr>\ 76 struct ConvertToDeviceExpression<CVQual TensorSelectOp<IfExpr, ThenExpr, ElseExpr> >\ 77 : NonOpConversion<TensorSelectOp, Res, IfExpr, ThenExpr, ElseExpr> {}; 80 #undef SELECTOPCONVERT 84 #define ASSIGNCONVERT(CVQual, Res)\ 85 template <typename LHSExpr, typename RHSExpr>\ 86 struct ConvertToDeviceExpression<CVQual TensorAssignOp<LHSExpr, RHSExpr> >\ 87 : NonOpConversion<TensorAssignOp, Res, LHSExpr, RHSExpr>{}; 95 #define KERNELBROKERCONVERT(CVQual, Res, ExprNode)\ 96 template <typename Expr>\ 97 struct ConvertToDeviceExpression<CVQual ExprNode<Expr> > \ 98 : DeviceConvertor<ExprNode, Res, Expr>{}; 102 KERNELBROKERCONVERT(const, true, TensorEvalToOp)
103 KERNELBROKERCONVERT(, false, TensorEvalToOp)
104 #undef KERNELBROKERCONVERT 107 #define KERNELBROKERCONVERTREDUCTION(CVQual)\ 108 template <typename OP, typename Dim, typename subExpr, template <class> class MakePointer_>\ 109 struct ConvertToDeviceExpression<CVQual TensorReductionOp<OP, Dim, subExpr, MakePointer_> > {\ 110 typedef CVQual TensorReductionOp<OP, Dim, typename ConvertToDeviceExpression<subExpr>::Type, MakeGlobalPointer> Type;\ 115 #undef KERNELBROKERCONVERTREDUCTION 121 #endif // UNSUPPORTED_EIGEN_CXX1 #define TENSORMAPCONVERT(CVQual)
#define ASSIGNCONVERT(CVQual, Res)
#define SELECTOPCONVERT(CVQual, Res)
#define KERNELBROKERCONVERTREDUCTION(CVQual)
specialisation of the ConvertToDeviceExpression struct when the node type is TensorReductionOp ...
GetType< IsConst, NonOpCategory< typename ConvertToDeviceExpression< Args >::Type, MakeGlobalPointer > >::Type Type
GetType< IsConst, NonOpCategory< typename ConvertToDeviceExpression< Args >::Type... > >::Type Type
#define KERNELBROKERCONVERT(CVQual, Res, ExprNode)
#define CATEGORYCONVERT(CVQual)
This struct is used to convert the MakePointer in the host expression to the MakeGlobalPointer for th...