osrm-backend/contractor
Daniel J. Hofmann 9231335eef Use Intel TBB's parallel_sort even for nested parallelism.
TBB has a global task scheduler (that's one of the reason TBB is not
linked statically but dyanmically instead). This allows control over all
running threads, enabling us to use nested parallelism and the scheduler
doing all the task allocation itself.

That is, nested parallel execution such as in

    parallel_for(seq, [](const auto& rng){
      parallel_sort(rng);
    });

is no problem at all, as the scheduler still claims control over the
global environment.

Therefore, use `parallel_sort` Range overload where possible.

References:

- https://www.threadingbuildingblocks.org/docs/help/hh_goto.htm#reference/algorithms.htm
- https://www.threadingbuildingblocks.org/docs/help/hh_goto.htm#reference/algorithms/parallel_sort_func.htm
- https://www.threadingbuildingblocks.org/docs/help/hh_goto.htm#reference/task_scheduler.htm
- https://www.threadingbuildingblocks.org/docs/help/hh_goto.htm#reference/task_scheduler/task_scheduler_init_cls.htm
- https://www.threadingbuildingblocks.org/docs/help/hh_goto.htm#tbb_userguide/Initializing_and_Terminating_the_Library.htm
2015-09-28 20:26:03 +02:00
..
contractor_options.cpp Serialize out .core file containing core node markers 2015-08-19 12:27:44 +02:00
contractor_options.hpp Serialize out .core file containing core node markers 2015-08-19 12:27:44 +02:00
contractor.hpp Use Intel TBB's parallel_sort even for nested parallelism. 2015-09-28 20:26:03 +02:00
edge_based_graph_factory.cpp Fix Coverity warning in EBGF 2015-08-20 12:28:14 +02:00
edge_based_graph_factory.hpp Modernize the code base to C++11 standards and beyond. 2015-08-18 12:56:34 +02:00
processing_chain.cpp Use Intel TBB's parallel_sort even for nested parallelism. 2015-09-28 20:26:03 +02:00
processing_chain.hpp Ownership: vector already owns, no need for wrapping in unique_ptr. 2015-09-09 18:53:11 +02:00
speed_profile.hpp Move graph compression code outside of EBGF 2015-07-01 18:07:29 +02:00