diff --git a/extern/Eigen3/Eigen/src/SparseCore/SparseDenseProduct.h b/extern/Eigen3/Eigen/src/SparseCore/SparseDenseProduct.h index f005a18a18e..b1d96494500 100644 --- a/extern/Eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +++ b/extern/Eigen3/Eigen/src/SparseCore/SparseDenseProduct.h @@ -10,7 +10,11 @@ #ifndef EIGEN_SPARSEDENSEPRODUCT_H #define EIGEN_SPARSEDENSEPRODUCT_H -namespace Eigen { +#ifdef WITH_TBB +#include +#endif + +namespace Eigen { namespace internal { @@ -34,23 +38,21 @@ struct sparse_time_dense_product_impl1 && lhsEval.nonZerosEstimate() > 20000) + if(lhsEval.nonZerosEstimate() > 20000) { - #pragma omp parallel for schedule(dynamic,(n+threads*4-1)/(threads*4)) num_threads(threads) - for(Index i=0; i(0, n, 1024), + [&](const tbb::blocked_range& range) { + for(Index i=range.begin(); i1 && lhsEval.nonZerosEstimate()*rhs.cols() > 20000) + if(lhsEval.nonZerosEstimate()*rhs.cols() > 20000) { - #pragma omp parallel for schedule(dynamic,(n+threads*4-1)/(threads*4)) num_threads(threads) - for(Index i=0; i(0, n, 1024), + [&](const tbb::blocked_range& range) { + for(Index i=range.begin(); i