From bbc04245632045245f79613cbdab929fa9bfd95d Mon Sep 17 00:00:00 2001 From: Patrick Niklaus Date: Wed, 21 May 2014 00:01:02 +0200 Subject: [PATCH] Set number of threads in TBB --- prepare.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/prepare.cpp b/prepare.cpp index 267e22e5b..9f6916d95 100644 --- a/prepare.cpp +++ b/prepare.cpp @@ -49,11 +49,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include +#include #include #include #include #include +#include + typedef QueryEdge::EdgeData EdgeData; typedef DynamicGraph::InputEdge InputEdge; typedef StaticGraph::InputEdge StaticEdge; @@ -66,6 +69,8 @@ std::vector edge_list; int main(int argc, char *argv[]) { + + try { LogPolicy::GetInstance().Unmute(); @@ -73,7 +78,7 @@ int main(int argc, char *argv[]) std::chrono::steady_clock::now(); boost::filesystem::path config_file_path, input_path, restrictions_path, profile_path; - int requested_num_threads; + unsigned int requested_num_threads; // declare a group of options that will be allowed only on command line boost::program_options::options_description generic_options("Options"); @@ -95,7 +100,7 @@ int main(int argc, char *argv[]) ->default_value("profile.lua"), "Path to LUA routing profile")( "threads,t", - boost::program_options::value(&requested_num_threads)->default_value(8), + boost::program_options::value(&requested_num_threads)->default_value(8), "Number of threads to use"); // hidden options, will be allowed both on command line and in config file, but will not be @@ -174,7 +179,8 @@ int main(int argc, char *argv[]) return 1; } - int real_num_threads = std::min(omp_get_num_procs(), requested_num_threads); + unsigned int hardware_threads = std::max((unsigned int) 1, std::thread::hardware_concurrency()); + unsigned int real_num_threads = std::min(hardware_threads, requested_num_threads); SimpleLogger().Write() << "Input file: " << input_path.filename().string(); SimpleLogger().Write() << "Restrictions file: " << restrictions_path.filename().string(); @@ -182,7 +188,8 @@ int main(int argc, char *argv[]) SimpleLogger().Write() << "Threads: " << real_num_threads << " (requested " << requested_num_threads << ")"; - omp_set_num_threads(real_num_threads); + tbb::task_scheduler_init init(real_num_threads); + LogPolicy::GetInstance().Unmute(); boost::filesystem::ifstream restriction_stream(restrictions_path, std::ios::binary); TurnRestriction restriction;