From 2918f85ba976dbfbf72f7d4c1961a577f5850148 Mon Sep 17 00:00:00 2001 From: Eugene Zhulenev Date: Mon, 9 Dec 2019 16:19:38 -0800 Subject: Do not use std::vector in getResourceRequirements --- unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h') diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h b/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h index d3628f94e..7299cdcdb 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h @@ -198,10 +198,9 @@ struct TensorEvaluator, Device> return m_impl.costPerCoeff(vectorized); } - EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void getResourceRequirements( - std::vector*) const { - // TODO(ezhulenev): If we'll ever support block evaluation without raw - // access we'll need to get requirements from `m_impl`. + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE + internal::TensorBlockV2ResourceRequirements getResourceRequirements() const { + return internal::TensorBlockV2ResourceRequirements::any(); } // required in block(OutputTensorBlock* output_block) const @@ -636,13 +635,13 @@ struct TensorEvaluator, Devi return m_impl.costPerCoeff(vectorized) + TensorOpCost(0, 0, m_is_identity ? 1 : NumDims); } - EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void getResourceRequirements( - std::vector* resources) const { - Eigen::Index block_total_size_max = numext::maxi( - 1, m_device.lastLevelCacheSize() / sizeof(Scalar)); - resources->push_back(internal::TensorOpResourceRequirements( - internal::kSkewedInnerDims, block_total_size_max)); - m_impl.getResourceRequirements(resources); + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE + internal::TensorBlockV2ResourceRequirements getResourceRequirements() const { + const size_t target_block_size = + numext::maxi(1, m_device.lastLevelCacheSize() / sizeof(Scalar)); + return internal::TensorBlockV2ResourceRequirements::merge( + {internal::TensorBlockV2ShapeType::kSkewedInnerDims, target_block_size}, + m_impl.getResourceRequirements()); } EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorBlockV2 -- cgit v1.2.3