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 --- .../Eigen/CXX11/src/Tensor/TensorExecutor.h | 29 +++++++--------------- 1 file changed, 9 insertions(+), 20 deletions(-) (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h') diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h b/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h index ca056e96e..db123d8a4 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h @@ -182,25 +182,18 @@ class TensorExecutor resources; - evaluator.getResourceRequirements(&resources); - MergeResourceRequirements(resources, &block_shape, &block_total_size); + const TensorBlockV2ResourceRequirements requirements = + evaluator.getResourceRequirements(); - TensorBlockMapper block_mapper( - TensorBlockDimensions(evaluator.dimensions()), block_shape, - block_total_size); - block_total_size = block_mapper.block_dims_total_size(); + const TensorBlockMapper block_mapper( + TensorBlockDimensions(evaluator.dimensions()), requirements.shapeV1(), + requirements.size); // Share scratch memory allocator between all blocks. TensorBlockScratch scratch(device); @@ -268,14 +261,10 @@ template TensorExecutorTilingContext GetTensorExecutorTilingContext( const ThreadPoolDevice& device, const Evaluator& evaluator, bool allocate_buffer = true) { - // Prefer blocks skewed toward inner dimension. - TensorBlockShapeType block_shape = kSkewedInnerDims; - Index block_total_size = 0; - // Query expression tree for desired block size/shape. - std::vector resources; - evaluator.getResourceRequirements(&resources); - MergeResourceRequirements(resources, &block_shape, &block_total_size); + const TensorBlockV2ResourceRequirements requirements = + evaluator.getResourceRequirements(); + int num_threads = device.numThreads(); // Estimate minimum block size based on cost. @@ -285,7 +274,7 @@ TensorExecutorTilingContext GetTensorExecutorTilingContext( TensorBlockMapper block_mapper( typename TensorBlockMapper::Dimensions(evaluator.dimensions()), - block_shape, block_size); + requirements.shapeV1(), block_size); block_size = block_mapper.block_dims_total_size(); const size_t align = numext::maxi(EIGEN_MAX_ALIGN_BYTES, 1); -- cgit v1.2.3