From b1e312edd607bcfa99192d53f55b2ac974644c44 Mon Sep 17 00:00:00 2001 From: Mehdi Goli Date: Wed, 15 Feb 2017 10:13:01 +0000 Subject: Adding TensorPatch.h for sycl backend. --- unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h') diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h b/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h index 886a254f6..cead2eac8 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h @@ -99,11 +99,11 @@ struct TensorEvaluator, Device> }; EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device) - : m_impl(op.expression(), device) + : m_impl(op.expression(), device), patch_dims(op.patch_dims()) { Index num_patches = 1; const typename TensorEvaluator::Dimensions& input_dims = m_impl.dimensions(); - const PatchDim& patch_dims = op.patch_dims(); + // const PatchDim& patch_dims = op.patch_dims(); if (static_cast(Layout) == static_cast(ColMajor)) { for (int i = 0; i < NumDims-1; ++i) { m_dimensions[i] = patch_dims[i]; @@ -255,6 +255,11 @@ struct TensorEvaluator, Device> EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; } + /// required by sycl in order to extract the accessor + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorEvaluator& impl() const { return m_impl; } + /// required by sycl in order to extract the accessor + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const PatchDim& functor() const { return patch_dims; } + protected: Dimensions m_dimensions; array m_outputStrides; @@ -262,6 +267,8 @@ struct TensorEvaluator, Device> array m_patchStrides; TensorEvaluator m_impl; + // required by sycl + const PatchDim& patch_dims; }; } // end namespace Eigen -- cgit v1.2.3 From bd64ee8555559ee13f02f2921594b4bd224f9d00 Mon Sep 17 00:00:00 2001 From: Mehdi Goli Date: Tue, 28 Mar 2017 16:50:34 +0100 Subject: Fixing TensorArgMaxSycl.h; Removing warning related to the hardcoded type of dims to be int in Argmax. --- unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h | 10 +++++----- .../Eigen/CXX11/src/Tensor/TensorArgMaxSycl.h | 20 ++++++++++---------- unsupported/Eigen/CXX11/src/Tensor/TensorBase.h | 8 ++++---- unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h | 2 +- unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h | 2 +- .../CXX11/src/Tensor/TensorSyclExtractFunctors.h | 10 +++++----- unsupported/test/cxx11_tensor_argmax_sycl.cpp | 9 ++------- 7 files changed, 28 insertions(+), 33 deletions(-) (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h') diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h b/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h index e81001c6e..44b79e725 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h @@ -178,7 +178,7 @@ class TensorTupleReducerOp : public TensorBase, Devi EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; } #else // following functions are required by sycl EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TupleType* data() const { return m_impl.data(); } - EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE int return_dim() const {return m_return_dim;} + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index return_dim() const {return m_return_dim;} EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const StrideDims& strides() const {return m_strides;} EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Index& stride_mod() const {return m_stride_mod;} EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Index& stride_div() const {return m_stride_div;} @@ -303,7 +303,7 @@ struct TensorEvaluator, Devi protected: TensorEvaluator, Device> m_orig_impl; TensorEvaluator >, Device> m_impl; - const int m_return_dim; + const Index m_return_dim; StrideDims m_strides; Index m_stride_mod; Index m_stride_div; diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorArgMaxSycl.h b/unsupported/Eigen/CXX11/src/Tensor/TensorArgMaxSycl.h index 90cbe004f..8f76b8254 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorArgMaxSycl.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorArgMaxSycl.h @@ -61,9 +61,9 @@ class TensorTupleReducerDeviceOp : public TensorBase::type m_xpr; - const int m_return_dim; - const StrideDims& m_strides; + const Index m_return_dim; + const StrideDims m_strides; const Index m_stride_mod; const Index m_stride_div; }; @@ -137,10 +137,10 @@ typedef typename MakeGlobalPointer m_impl; - const int m_return_dim; - const StrideDims& m_strides; - const Index& m_stride_mod; - const Index& m_stride_div; + const Index m_return_dim; + const StrideDims m_strides; + const Index m_stride_mod; + const Index m_stride_div; }; } // end namespace Eigen #endif //UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSOR_ARGMAX_SYCL_HPP diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h b/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h index fbe340820..5b1235826 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h @@ -619,7 +619,7 @@ class TensorBase const array, const Derived> argmax() const { array in_dims; - for (int d = 0; d < NumDimensions; ++d) in_dims[d] = d; + for (Index d = 0; d < NumDimensions; ++d) in_dims[d] = d; return TensorTupleReducerOp< internal::ArgMaxTupleReducer >, const array, @@ -632,7 +632,7 @@ class TensorBase const array, const Derived> argmin() const { array in_dims; - for (int d = 0; d < NumDimensions; ++d) in_dims[d] = d; + for (Index d = 0; d < NumDimensions; ++d) in_dims[d] = d; return TensorTupleReducerOp< internal::ArgMinTupleReducer >, const array, @@ -643,7 +643,7 @@ class TensorBase const TensorTupleReducerOp< internal::ArgMaxTupleReducer >, const array, const Derived> - argmax(const int return_dim) const { + argmax(const Index return_dim) const { array in_dims; in_dims[0] = return_dim; return TensorTupleReducerOp< @@ -656,7 +656,7 @@ class TensorBase const TensorTupleReducerOp< internal::ArgMinTupleReducer >, const array, const Derived> - argmin(const int return_dim) const { + argmin(const Index return_dim) const { array in_dims; in_dims[0] = return_dim; return TensorTupleReducerOp< diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h b/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h index cead2eac8..1a105165d 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h @@ -268,7 +268,7 @@ struct TensorEvaluator, Device> TensorEvaluator m_impl; // required by sycl - const PatchDim& patch_dims; + const PatchDim patch_dims; }; } // end namespace Eigen diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h b/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h index e341e2e9b..597f3f9ae 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h @@ -791,7 +791,7 @@ static const bool RunningOnGPU = false; typename MakePointer_::Type m_result; const Device& m_device; - const Dims& m_xpr_dims; + const Dims m_xpr_dims; }; } // end namespace Eigen diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExtractFunctors.h b/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExtractFunctors.h index 942e9d307..a7905706d 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExtractFunctors.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExtractFunctors.h @@ -230,15 +230,15 @@ template\ typedef typename Evaluator::Index Index;\ typedef typename Eigen::internal::conditional, typename Evaluator::Dimensions >::type Dimensions;\ const Dimensions m_dimensions;\ - const int m_return_dim;\ + const Index m_return_dim;\ const StrideDims m_strides;\ const Index m_stride_mod;\ const Index m_stride_div;\ EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }\ - EIGEN_STRONG_INLINE int return_dim() const {return m_return_dim;}\ - EIGEN_STRONG_INLINE const StrideDims& strides() const {return m_strides;}\ - EIGEN_STRONG_INLINE const Index& stride_mod() const {return m_stride_mod;}\ - EIGEN_STRONG_INLINE const Index& stride_div() const {return m_stride_div;}\ + EIGEN_STRONG_INLINE Index return_dim() const {return m_return_dim;}\ + EIGEN_STRONG_INLINE const StrideDims strides() const {return m_strides;}\ + EIGEN_STRONG_INLINE const Index stride_mod() const {return m_stride_mod;}\ + EIGEN_STRONG_INLINE const Index stride_div() const {return m_stride_div;}\ FunctorExtractor(const TensorEvaluator, Device>& expr)\ : m_dimensions(DimConstr::getDim(expr.dimensions())), m_return_dim(expr.return_dim()),\ m_strides(expr.strides()), m_stride_mod(expr.stride_mod()), m_stride_div(expr.stride_div()){}\ diff --git a/unsupported/test/cxx11_tensor_argmax_sycl.cpp b/unsupported/test/cxx11_tensor_argmax_sycl.cpp index b80cb8f06..521a7f82c 100644 --- a/unsupported/test/cxx11_tensor_argmax_sycl.cpp +++ b/unsupported/test/cxx11_tensor_argmax_sycl.cpp @@ -143,10 +143,6 @@ static void test_sycl_argmax_dim(const Eigen::SyclDevice &sycl_device) } } - - - - template static void test_sycl_argmin_dim(const Eigen::SyclDevice &sycl_device) { @@ -242,9 +238,8 @@ template void sycl_argmax_test_per_ } void test_cxx11_tensor_argmax_sycl() { -// TODO {lukei}: re-enable once fixed -/* for (const auto& device :Eigen::get_sycl_supported_devices()) { + for (const auto& device :Eigen::get_sycl_supported_devices()) { CALL_SUBTEST(sycl_argmax_test_per_device(device)); } -*/ + } -- cgit v1.2.3 From c1b3d5ecb6c7ee2d52260507826955c8adee3bf6 Mon Sep 17 00:00:00 2001 From: Benoit Steiner Date: Fri, 31 Mar 2017 08:31:28 -0700 Subject: Restored code compatibility with compilers that dont support c++11 Gated more sycl code under #ifdef sycl --- unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h | 9 ++++----- unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h | 4 ++-- unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h | 16 ++++++++++------ 3 files changed, 16 insertions(+), 13 deletions(-) (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h') diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h b/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h index b6bf05fed..af6ecf5f4 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h @@ -215,11 +215,10 @@ struct TensorEvaluator, Device> EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; } - /// required by sycl in order to extract the accessor - EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorEvaluator& impl() const { return m_impl; } - /// required by sycl in order to extract the accessor - EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Strides& functor() const { return m_strides; } - +#ifdef EIGEN_USE_SYCL + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorEvaluator& impl() const { return m_impl; } + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Strides& functor() const { return m_strides; } +#endif protected: Dimensions m_dimensions; diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h b/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h index 1a105165d..415021510 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h @@ -255,10 +255,10 @@ struct TensorEvaluator, Device> EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; } - /// required by sycl in order to extract the accessor +#ifdef EIGEN_USE_SYCL EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorEvaluator& impl() const { return m_impl; } - /// required by sycl in order to extract the accessor EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const PatchDim& functor() const { return patch_dims; } +#endif protected: Dimensions m_dimensions; diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h b/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h index 64474ee80..33eb1b297 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h @@ -64,9 +64,13 @@ class TensorVolumePatchOp : public TensorBase Date: Tue, 4 Apr 2017 09:56:33 -0700 Subject: Guard the sycl specific code with a #ifdef EIGEN_USE_SYCL --- unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h') diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h b/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h index 415021510..6e8e7885b 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h @@ -99,11 +99,14 @@ struct TensorEvaluator, Device> }; EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device) - : m_impl(op.expression(), device), patch_dims(op.patch_dims()) + : m_impl(op.expression(), device) +#ifdef EIGEN_USE_SYCL + , m_patch_dims(op.patch_dims()) +#endif { Index num_patches = 1; const typename TensorEvaluator::Dimensions& input_dims = m_impl.dimensions(); - // const PatchDim& patch_dims = op.patch_dims(); + const PatchDim& patch_dims = op.patch_dims(); if (static_cast(Layout) == static_cast(ColMajor)) { for (int i = 0; i < NumDims-1; ++i) { m_dimensions[i] = patch_dims[i]; @@ -257,7 +260,7 @@ struct TensorEvaluator, Device> #ifdef EIGEN_USE_SYCL EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorEvaluator& impl() const { return m_impl; } - EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const PatchDim& functor() const { return patch_dims; } + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const PatchDim& functor() const { return m_patch_dims; } #endif protected: @@ -267,8 +270,10 @@ struct TensorEvaluator, Device> array m_patchStrides; TensorEvaluator m_impl; - // required by sycl - const PatchDim patch_dims; + +#ifdef EIGEN_USE_SYCL + const PatchDim m_patch_dims; +#endif }; } // end namespace Eigen -- cgit v1.2.3