From 81a03bec75aac90aa343fccf6a7daf735e28c20d Mon Sep 17 00:00:00 2001 From: Eugene Zhulenev Date: Fri, 28 Jun 2019 15:50:39 -0700 Subject: Fix TensorReverse on GPU with m_stride[i]==0 --- unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'unsupported/Eigen/CXX11/src/Tensor') diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h b/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h index 6faff87bf..42205db31 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h @@ -122,6 +122,8 @@ struct TensorEvaluator, Device RawAccess = false }; + typedef internal::TensorIntDivisor IndexDivisor; + typedef typename internal::remove_const::type ScalarNoConst; typedef internal::TensorBlock OutputTensorBlock; @@ -141,17 +143,15 @@ struct TensorEvaluator, Device m_strides[0] = 1; for (int i = 1; i < NumDims; ++i) { m_strides[i] = m_strides[i-1] * m_dimensions[i-1]; + if (m_strides[i] > 0) m_fastStrides[i] = IndexDivisor(m_strides[i]); } } else { m_strides[NumDims-1] = 1; for (int i = NumDims - 2; i >= 0; --i) { m_strides[i] = m_strides[i+1] * m_dimensions[i+1]; + if (m_strides[i] > 0) m_fastStrides[i] = IndexDivisor(m_strides[i]); } } - // Remember the strides for fast division. - for (int i = 0; i < NumDims; ++i) { - m_fastStrides[i] = internal::TensorIntDivisor(m_strides[i]); - } } EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE @@ -377,7 +377,7 @@ struct TensorEvaluator, Device protected: Dimensions m_dimensions; array m_strides; - array, NumDims> m_fastStrides; + array m_fastStrides; TensorEvaluator m_impl; ReverseDimensions m_reverse; const Device& m_device; -- cgit v1.2.3