aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h
diff options
context:
space:
mode:
authorGravatar Eugene Zhulenev <ezhulenev@google.com>2019-12-09 16:19:38 -0800
committerGravatar Eugene Zhulenev <ezhulenev@google.com>2019-12-09 16:19:55 -0800
commit2918f85ba976dbfbf72f7d4c1961a577f5850148 (patch)
treea2087169999605fe1c1ffeba058d8d8bf88817a8 /unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h
parent8056a05b5485442ebc5c087a25f8ee027eb9a338 (diff)
Do not use std::vector in getResourceRequirements
Diffstat (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h')
-rw-r--r--unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h21
1 files changed, 10 insertions, 11 deletions
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<const TensorReshapingOp<NewDimensions, ArgType>, Device>
return m_impl.costPerCoeff(vectorized);
}
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void getResourceRequirements(
- std::vector<internal::TensorOpResourceRequirements>*) 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<const TensorSlicingOp<StartIndices, Sizes, ArgType>, Devi
return m_impl.costPerCoeff(vectorized) + TensorOpCost(0, 0, m_is_identity ? 1 : NumDims);
}
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void getResourceRequirements(
- std::vector<internal::TensorOpResourceRequirements>* resources) const {
- Eigen::Index block_total_size_max = numext::maxi<Eigen::Index>(
- 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<size_t>(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