diff options
author | Rasmus Larsen <rmlarsen@google.com> | 2019-03-05 23:54:40 +0000 |
---|---|---|
committer | Rasmus Larsen <rmlarsen@google.com> | 2019-03-05 23:54:40 +0000 |
commit | b4861f47780d6aeca74dbb1e5ccf8d2b89691598 (patch) | |
tree | 145defdf3f5f1a22f281c9b86bacb051241e47da | |
parent | bfbf7da0478afe75e19a953f0925bbd492bcd427 (diff) | |
parent | a407e022e6046917b1ebeacd54b03fcb079a9706 (diff) |
Merged in ezhulenev/eigen-01 (pull request PR-609)
Tune tensor contraction threadpool heuristics
-rw-r--r-- | unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h b/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h index d7cd995fb..adf57c892 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h @@ -216,11 +216,14 @@ struct TensorEvaluator<const TensorContractionOp<Indices, LeftArgType, RightArgT const int num_worker_threads = this->m_device.numThreadsInPool(); // With small number of threads we want to make sure that we do not reduce - // parallelism too much. - const int oversharding_factor = - num_worker_threads <= 4 ? 8 : - num_worker_threads <= 8 ? 4 : - num_worker_threads <= 16 ? 2 : 1; + // parallelism too much. With large number of threads we trade maximum + // parallelism for better memory locality. + const float oversharding_factor = + num_worker_threads <= 4 ? 8.0 : + num_worker_threads <= 8 ? 4.0 : + num_worker_threads <= 16 ? 2.0 : + num_worker_threads <= 32 ? 1.0 : + num_worker_threads <= 64 ? 0.8 : /* num_worker_threads > 64 */ 0.6; const bool parallelize_by_sharding_dim_only = sharding_dim_tasks >= oversharding_factor * num_worker_threads; |