Home ⌂Doc Index ◂Up ▴
Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
Algorithms

Classes

class  tbb::blocked_range< Value >
 A range over which to iterate. More...
 
class  tbb::blocked_range2d< RowValue, ColValue >
 A 2-dimensional range that models the Range concept. More...
 
class  tbb::blocked_range3d< PageValue, RowValue, ColValue >
 A 3-dimensional range that models the Range concept. More...
 
class  tbb::interface9::internal::parallel_do_operator_selector< Body, Item >
 For internal use only. More...
 
class  tbb::interface9::internal::do_iteration_task< Body, Item >
 For internal use only. More...
 
class  tbb::interface9::internal::parallel_do_feeder_impl< Body, Item >
 For internal use only. More...
 
class  tbb::interface9::internal::do_group_task_forward< Iterator, Body, Item >
 For internal use only. More...
 
class  tbb::interface9::internal::do_task_iter< Iterator, Body, Item >
 For internal use only. More...
 
class  tbb::interface9::internal::start_for< Range, Body, Partitioner >
 Task type used in parallel_for. More...
 
class  tbb::interface9::internal::finish_reduce< Body >
 Task type used to combine the partial results of parallel_reduce. More...
 
class  tbb::interface9::internal::start_reduce< Range, Body, Partitioner >
 Task type used to split the work of parallel_reduce. More...
 
class  tbb::interface9::internal::finish_deterministic_reduce< Body >
 Task type used to combine the partial results of parallel_deterministic_reduce. More...
 
class  tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >
 Task type used to split the work of parallel_deterministic_reduce. More...
 
class  tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >
 Auxiliary class for parallel_reduce; for internal use only. More...
 
struct  tbb::pre_scan_tag
 Used to indicate that the initial scan is being performed. More...
 
struct  tbb::final_scan_tag
 Used to indicate that the final scan is being performed. More...
 
class  tbb::internal::final_sum< Range, Body >
 Performs final scan for a leaf. More...
 
class  tbb::internal::sum_node< Range, Body >
 Split work to be done in the scan. More...
 
class  tbb::internal::finish_scan< Range, Body >
 Combine partial results. More...
 
class  tbb::internal::start_scan< Range, Body, Partitioner >
 Initial task to split the work. More...
 
class  tbb::interface9::internal::quick_sort_range< RandomAccessIterator, Compare >
 Range used in quicksort to split elements into subranges based on a value. More...
 
class  tbb::interface9::internal::quick_sort_pretest_body< RandomAccessIterator, Compare >
 Body class used to test if elements in a range are presorted. More...
 
struct  tbb::interface9::internal::quick_sort_body< RandomAccessIterator, Compare >
 Body class used to sort elements in a range that is smaller than the grainsize. More...
 
class  tbb::internal::while_iteration_task< Body >
 For internal use only. More...
 
class  tbb::internal::while_group_task< Body >
 For internal use only. More...
 
class  tbb::internal::while_task< Stream, Body >
 For internal use only. More...
 
class  tbb::parallel_while< Body >
 Parallel iteration over a stream, with optional addition of more work. More...
 
class  tbb::simple_partitioner
 A simple partitioner. More...
 
class  tbb::auto_partitioner
 An auto partitioner. More...
 
class  tbb::filter
 A stage in a pipeline. More...
 
class  tbb::thread_bound_filter
 A stage in a pipeline served by a user thread. More...
 
class  tbb::split
 Dummy type that distinguishes splitting constructor from copy constructor. More...
 

Functions

template<typename Range , typename Body >
__TBB_DEPRECATED_IN_VERBOSE_MODE void tbb::serial::interface9::parallel_for (const Range &range, const Body &body)
 Parallel iteration over range with default partitioner. More...
 
template<typename Range , typename Body >
__TBB_DEPRECATED_IN_VERBOSE_MODE void tbb::serial::interface9::parallel_for (const Range &range, const Body &body, const simple_partitioner &partitioner)
 Parallel iteration over range with simple partitioner. More...
 
template<typename Range , typename Body >
__TBB_DEPRECATED_IN_VERBOSE_MODE void tbb::serial::interface9::parallel_for (const Range &range, const Body &body, const auto_partitioner &partitioner)
 Parallel iteration over range with auto_partitioner. More...
 
template<typename Range , typename Body >
__TBB_DEPRECATED_IN_VERBOSE_MODE void tbb::serial::interface9::parallel_for (const Range &range, const Body &body, const static_partitioner &partitioner)
 Parallel iteration over range with static_partitioner. More...
 
template<typename Range , typename Body >
__TBB_DEPRECATED_IN_VERBOSE_MODE void tbb::serial::interface9::parallel_for (const Range &range, const Body &body, affinity_partitioner &partitioner)
 Parallel iteration over range with affinity_partitioner. More...
 
template<typename Iterator , typename Body , typename Item >
void tbb::interface9::internal::run_parallel_do (Iterator first, Iterator last, const Body &body, task_group_context &context)
 For internal use only. More...
 
template<typename Iterator , typename Body , typename Item >
void tbb::interface9::internal::select_parallel_do (Iterator first, Iterator last, const Body &body, void(Body::*)(Item) const, task_group_context &context)
 For internal use only. More...
 
template<typename Iterator , typename Body , typename Item , typename _Item >
void tbb::interface9::internal::select_parallel_do (Iterator first, Iterator last, const Body &body, void(Body::*)(Item, parallel_do_feeder< _Item > &) const, task_group_context &context)
 For internal use only. More...
 
template<typename RandomAccessIterator , typename Compare >
void tbb::interface9::internal::parallel_quick_sort (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)
 Wrapper method to initiate the sort by calling parallel_for. More...
 
class tbb::__TBB_DEPRECATED_MSG ("tbb::pipeline is deprecated, use tbb::parallel_pipeline") pipeline
 A processing pipeline that applies filters to items. More...
 

parallel_do

See also requirements on parallel_do Body.

template<typename Iterator , typename Body >
void tbb::parallel_do (Iterator first, Iterator last, const Body &body)
 Parallel iteration over a range, with optional addition of more work. More...
 
template<typename Iterator , typename Body >
void tbb::parallel_do (Iterator first, Iterator last, const Body &body, task_group_context &context)
 Parallel iteration over a range, with optional addition of more work and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_do (Range &rng, const Body &body)
 
template<typename Range , typename Body >
void tbb::parallel_do (const Range &rng, const Body &body)
 
template<typename Range , typename Body >
void tbb::parallel_do (Range &rng, const Body &body, task_group_context &context)
 
template<typename Range , typename Body >
void tbb::parallel_do (const Range &rng, const Body &body, task_group_context &context)
 

parallel_for

See also requirements on Range and parallel_for Body.

template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body)
 Parallel iteration over range with default partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const simple_partitioner &partitioner)
 Parallel iteration over range with simple partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const auto_partitioner &partitioner)
 Parallel iteration over range with auto_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const static_partitioner &partitioner)
 Parallel iteration over range with static_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, affinity_partitioner &partitioner)
 Parallel iteration over range with affinity_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, task_group_context &context)
 Parallel iteration over range with default partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with simple partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const auto_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with auto_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const static_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with static_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, affinity_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with affinity_partitioner and user-supplied context. More...
 

parallel_for_each

template<typename Iterator , typename Function >
void tbb::parallel_for_each (Iterator first, Iterator last, const Function &f, task_group_context &context)
 Calls function f for all items from [first, last) interval using user-supplied context. More...
 
template<typename Range , typename Function >
void tbb::parallel_for_each (Range &rng, const Function &f, task_group_context &context)
 Calls function f for all items from rng using user-supplied context. More...
 
template<typename Range , typename Function >
void tbb::parallel_for_each (const Range &rng, const Function &f, task_group_context &context)
 Calls function f for all items from const rng user-supplied context. More...
 
template<typename Iterator , typename Function >
void tbb::parallel_for_each (Iterator first, Iterator last, const Function &f)
 Uses default context. More...
 
template<typename Range , typename Function >
void tbb::parallel_for_each (Range &rng, const Function &f)
 Uses default context. More...
 
template<typename Range , typename Function >
void tbb::parallel_for_each (const Range &rng, const Function &f)
 Uses default context. More...
 

parallel_invoke

template<typename F0 , typename F1 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, tbb::task_group_context &context)
 Executes a list of tasks in parallel and waits for all tasks to complete. More...
 
template<typename F0 , typename F1 , typename F2 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9, tbb::task_group_context &context)
 
template<typename F0 , typename F1 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1)
 
template<typename F0 , typename F1 , typename F2 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2)
 
template<typename F0 , typename F1 , typename F2 , typename F3 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9)
 

parallel_reduce

See also requirements on Range and parallel_reduce Body.

template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body)
 Parallel iteration with reduction and default partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const simple_partitioner &partitioner)
 Parallel iteration with reduction and simple_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const auto_partitioner &partitioner)
 Parallel iteration with reduction and auto_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const static_partitioner &partitioner)
 Parallel iteration with reduction and static_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, affinity_partitioner &partitioner)
 Parallel iteration with reduction and affinity_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, task_group_context &context)
 Parallel iteration with reduction, default partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const auto_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, auto_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const static_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, static_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, affinity_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, affinity_partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)
 Parallel iteration with reduction and default partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner)
 Parallel iteration with reduction and simple_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner)
 Parallel iteration with reduction and auto_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const static_partitioner &partitioner)
 Parallel iteration with reduction and static_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner)
 Parallel iteration with reduction and affinity_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, task_group_context &context)
 Parallel iteration with reduction, default partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, auto_partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const static_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, static_partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, affinity_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body)
 Parallel iteration with deterministic reduction and default simple partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body, const simple_partitioner &partitioner)
 Parallel iteration with deterministic reduction and simple partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body, const static_partitioner &partitioner)
 Parallel iteration with deterministic reduction and static partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body, task_group_context &context)
 Parallel iteration with deterministic reduction, default simple partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration with deterministic reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body, const static_partitioner &partitioner, task_group_context &context)
 Parallel iteration with deterministic reduction, static partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)
 Parallel iteration with deterministic reduction and default simple partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner)
 Parallel iteration with deterministic reduction and simple partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const static_partitioner &partitioner)
 Parallel iteration with deterministic reduction and static partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, task_group_context &context)
 Parallel iteration with deterministic reduction, default simple partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration with deterministic reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const static_partitioner &partitioner, task_group_context &context)
 Parallel iteration with deterministic reduction, static partitioner and user-supplied context. More...
 

parallel_scan

See also requirements on Range and parallel_scan Body.

template<typename Range , typename Body >
void tbb::parallel_scan (const Range &range, Body &body)
 Parallel prefix with default partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_scan (const Range &range, Body &body, const simple_partitioner &partitioner)
 Parallel prefix with simple_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_scan (const Range &range, Body &body, const auto_partitioner &partitioner)
 Parallel prefix with auto_partitioner. More...
 
template<typename Range , typename Value , typename Scan , typename ReverseJoin >
Value tbb::parallel_scan (const Range &range, const Value &identity, const Scan &scan, const ReverseJoin &reverse_join)
 Parallel prefix with default partitioner. More...
 
template<typename Range , typename Value , typename Scan , typename ReverseJoin >
Value tbb::parallel_scan (const Range &range, const Value &identity, const Scan &scan, const ReverseJoin &reverse_join, const simple_partitioner &partitioner)
 Parallel prefix with simple_partitioner. More...
 
template<typename Range , typename Value , typename Scan , typename ReverseJoin >
Value tbb::parallel_scan (const Range &range, const Value &identity, const Scan &scan, const ReverseJoin &reverse_join, const auto_partitioner &partitioner)
 Parallel prefix with auto_partitioner. More...
 

parallel_sort

See also requirements on iterators for parallel_sort.

template<typename RandomAccessIterator , typename Compare >
void tbb::parallel_sort (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)
 Sorts the data in [begin,end) using the given comparator. More...
 
template<typename RandomAccessIterator >
void tbb::parallel_sort (RandomAccessIterator begin, RandomAccessIterator end)
 Sorts the data in [begin,end) with a default comparator std::less<RandomAccessIterator> More...
 
template<typename Range , typename Compare >
void tbb::parallel_sort (Range &rng, const Compare &comp)
 Sorts the data in rng using the given comparator. More...
 
template<typename Range >
void tbb::parallel_sort (Range &rng)
 Sorts the data in rng with a default comparator std::less<RandomAccessIterator> More...
 
template<typename T >
void tbb::parallel_sort (T *begin, T *end)
 Sorts the data in the range [begin,end) with a default comparator std::less<T> More...
 

Detailed Description

Function Documentation

◆ __TBB_DEPRECATED_MSG()

class tbb::__TBB_DEPRECATED_MSG ( "tbb::pipeline is  deprecated,
use tbb::parallel_pipeline"   
)

A processing pipeline that applies filters to items.

Construct empty pipeline.

Though the current implementation declares the destructor virtual, do not rely on this detail. The virtualness is deprecated and may disappear in future versions of TBB.

Add filter to end of pipeline.

Run the pipeline to completion.

Run the pipeline to completion with user-supplied context.

Remove all filters from the pipeline.

Pointer to first filter in the pipeline.

Pointer to location where address of next filter to be added should be stored.

task who's reference count is used to determine when all stages are done.

Number of idle tokens waiting for input stage.

Global counter of tokens

False until fetch_input returns NULL.

True if the pipeline contains a thread-bound filter; false otherwise.

Remove filter from pipeline.

Not used, but retained to satisfy old export files.

Does clean up if pipeline is cancelled or exception occurred

Definition at line 235 of file pipeline.h.

235  {
236 public:
238  __TBB_EXPORTED_METHOD pipeline();
239 
242  virtual __TBB_EXPORTED_METHOD ~pipeline();
243 
245  void __TBB_EXPORTED_METHOD add_filter( filter& filter_ );
246 
248  void __TBB_EXPORTED_METHOD run( size_t max_number_of_live_tokens );
249 
250 #if __TBB_TASK_GROUP_CONTEXT
251  void __TBB_EXPORTED_METHOD run( size_t max_number_of_live_tokens, tbb::task_group_context& context );
253 #endif
254 
256  void __TBB_EXPORTED_METHOD clear();
257 
258 private:
259  friend class internal::stage_task;
260  friend class internal::pipeline_root_task;
261  friend class filter;
262  friend class thread_bound_filter;
263  friend class internal::pipeline_cleaner;
265 
267  filter* filter_list;
268 
270  filter* filter_end;
271 
273  task* end_counter;
274 
276  atomic<internal::Token> input_tokens;
277 
279  atomic<internal::Token> token_counter;
280 
282  bool end_of_input;
283 
285  bool has_thread_bound_filters;
286 
288  void remove_filter( filter& filter_ );
289 
291  void __TBB_EXPORTED_METHOD inject_token( task& self );
292 
293 #if __TBB_TASK_GROUP_CONTEXT
294  void clear_filters();
296 #endif
297 };
Used to form groups of tasks.
Definition: task.h:358
The class that represents an object of the pipeline for parallel_pipeline().
Definition: pipeline.h:515
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task * task
#define __TBB_EXPORTED_METHOD
Definition: tbb_stddef.h:98

References __TBB_EXPORTED_METHOD.

◆ parallel_deterministic_reduce() [1/12]

template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce ( const Range &  range,
Body &  body 
)

Parallel iteration with deterministic reduction and default simple partitioner.

Definition at line 548 of file parallel_reduce.h.

548  {
550 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >::run().

Referenced by tbb::parallel_deterministic_reduce().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_deterministic_reduce() [2/12]

template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce ( const Range &  range,
Body &  body,
const simple_partitioner partitioner 
)

Parallel iteration with deterministic reduction and simple partitioner.

Definition at line 555 of file parallel_reduce.h.

555  {
557 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [3/12]

template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce ( const Range &  range,
Body &  body,
const static_partitioner partitioner 
)

Parallel iteration with deterministic reduction and static partitioner.

Definition at line 562 of file parallel_reduce.h.

562  {
564 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [4/12]

template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce ( const Range &  range,
Body &  body,
task_group_context context 
)

Parallel iteration with deterministic reduction, default simple partitioner and user-supplied context.

Definition at line 570 of file parallel_reduce.h.

570  {
571  internal::start_deterministic_reduce<Range,Body, const simple_partitioner>::run( range, body, simple_partitioner(), context );
572 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [5/12]

template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce ( const Range &  range,
Body &  body,
const simple_partitioner partitioner,
task_group_context context 
)

Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.

Definition at line 577 of file parallel_reduce.h.

577  {
579 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [6/12]

template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce ( const Range &  range,
Body &  body,
const static_partitioner partitioner,
task_group_context context 
)

Parallel iteration with deterministic reduction, static partitioner and user-supplied context.

Definition at line 584 of file parallel_reduce.h.

584  {
586 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [7/12]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction 
)

Parallel iteration with deterministic reduction and default simple partitioner.

parallel_reduce overloads that work with anonymous function objects (see also requirements on parallel_reduce anonymous function objects).

Definition at line 596 of file parallel_reduce.h.

596  {
597  return parallel_deterministic_reduce(range, identity, real_body, reduction, simple_partitioner());
598 }
Value parallel_deterministic_reduce(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const static_partitioner &partitioner, task_group_context &context)
Parallel iteration with deterministic reduction, static partitioner and user-supplied context.

References tbb::parallel_deterministic_reduce().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [8/12]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const simple_partitioner partitioner 
)

Parallel iteration with deterministic reduction and simple partitioner.

Definition at line 603 of file parallel_reduce.h.

603  {
604  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
605  internal::start_deterministic_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>, const simple_partitioner>
606  ::run(range, body, partitioner);
607  return body.result();
608 }

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [9/12]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const static_partitioner partitioner 
)

Parallel iteration with deterministic reduction and static partitioner.

Definition at line 613 of file parallel_reduce.h.

613  {
614  internal::lambda_reduce_body<Range, Value, RealBody, Reduction> body(identity, real_body, reduction);
615  internal::start_deterministic_reduce<Range, internal::lambda_reduce_body<Range, Value, RealBody, Reduction>, const static_partitioner>
616  ::run(range, body, partitioner);
617  return body.result();
618 }

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [10/12]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
task_group_context context 
)

Parallel iteration with deterministic reduction, default simple partitioner and user-supplied context.

Definition at line 623 of file parallel_reduce.h.

624  {
625  return parallel_deterministic_reduce(range, identity, real_body, reduction, simple_partitioner(), context);
626 }
Value parallel_deterministic_reduce(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const static_partitioner &partitioner, task_group_context &context)
Parallel iteration with deterministic reduction, static partitioner and user-supplied context.

References tbb::parallel_deterministic_reduce().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [11/12]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const simple_partitioner partitioner,
task_group_context context 
)

Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.

Definition at line 631 of file parallel_reduce.h.

632  {
633  internal::lambda_reduce_body<Range, Value, RealBody, Reduction> body(identity, real_body, reduction);
634  internal::start_deterministic_reduce<Range, internal::lambda_reduce_body<Range, Value, RealBody, Reduction>, const simple_partitioner>
635  ::run(range, body, partitioner, context);
636  return body.result();
637 }

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [12/12]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const static_partitioner partitioner,
task_group_context context 
)

Parallel iteration with deterministic reduction, static partitioner and user-supplied context.

Definition at line 642 of file parallel_reduce.h.

643  {
644  internal::lambda_reduce_body<Range, Value, RealBody, Reduction> body(identity, real_body, reduction);
645  internal::start_deterministic_reduce<Range, internal::lambda_reduce_body<Range, Value, RealBody, Reduction>, const static_partitioner>
646  ::run(range, body, partitioner, context);
647  return body.result();
648 }

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_do() [1/6]

template<typename Iterator , typename Body >
void tbb::parallel_do ( Iterator  first,
Iterator  last,
const Body &  body 
)

Parallel iteration over a range, with optional addition of more work.

Definition at line 497 of file parallel_do.h.

498 {
499  if ( first == last )
500  return;
501 #if __TBB_TASK_GROUP_CONTEXT
502  task_group_context context(internal::PARALLEL_DO);
503 #endif
504  interface9::internal::select_parallel_do( first, last, body, &Body::operator()
506  , context
507 #endif
508  );
509 }
#define __TBB_TASK_GROUP_CONTEXT
Definition: tbb_config.h:541
void select_parallel_do(Iterator first, Iterator last, const Body &body, void(Body::*)(Item, parallel_do_feeder< _Item > &) const, task_group_context &context)
For internal use only.
Definition: parallel_do.h:455
auto last(Container &c) -> decltype(begin(c))
auto first(Container &c) -> decltype(begin(c))

References __TBB_TASK_GROUP_CONTEXT, tbb::internal::first(), tbb::internal::last(), and tbb::interface9::internal::select_parallel_do().

Referenced by tbb::internal::parallel_for_each_impl< Iterator, Function, Generic >::doit(), and tbb::parallel_do().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_do() [2/6]

template<typename Range , typename Body >
void tbb::parallel_do ( Range &  rng,
const Body &  body 
)

Definition at line 512 of file parallel_do.h.

512  {
514 }
auto last(Container &c) -> decltype(begin(c))
void parallel_do(const Range &rng, const Body &body, task_group_context &context)
Definition: parallel_do.h:538
auto first(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_do().

Here is the call graph for this function:

◆ parallel_do() [3/6]

template<typename Range , typename Body >
void tbb::parallel_do ( const Range &  rng,
const Body &  body 
)

Definition at line 517 of file parallel_do.h.

517  {
519 }
auto last(Container &c) -> decltype(begin(c))
void parallel_do(const Range &rng, const Body &body, task_group_context &context)
Definition: parallel_do.h:538
auto first(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_do().

Here is the call graph for this function:

◆ parallel_do() [4/6]

template<typename Iterator , typename Body >
void tbb::parallel_do ( Iterator  first,
Iterator  last,
const Body &  body,
task_group_context context 
)

Parallel iteration over a range, with optional addition of more work and user-supplied context.

Definition at line 525 of file parallel_do.h.

526 {
527  if ( first == last )
528  return;
529  interface9::internal::select_parallel_do( first, last, body, &Body::operator(), context );
530 }
void select_parallel_do(Iterator first, Iterator last, const Body &body, void(Body::*)(Item, parallel_do_feeder< _Item > &) const, task_group_context &context)
For internal use only.
Definition: parallel_do.h:455
auto last(Container &c) -> decltype(begin(c))
auto first(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::interface9::internal::select_parallel_do().

Here is the call graph for this function:

◆ parallel_do() [5/6]

template<typename Range , typename Body >
void tbb::parallel_do ( Range &  rng,
const Body &  body,
task_group_context context 
)

Definition at line 533 of file parallel_do.h.

533  {
534  parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body, context);
535 }
auto last(Container &c) -> decltype(begin(c))
void parallel_do(const Range &rng, const Body &body, task_group_context &context)
Definition: parallel_do.h:538
auto first(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_do().

Here is the call graph for this function:

◆ parallel_do() [6/6]

template<typename Range , typename Body >
void tbb::parallel_do ( const Range &  rng,
const Body &  body,
task_group_context context 
)

Definition at line 538 of file parallel_do.h.

538  {
539  parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body, context);
540 }
auto last(Container &c) -> decltype(begin(c))
void parallel_do(const Range &rng, const Body &body, task_group_context &context)
Definition: parallel_do.h:538
auto first(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_do().

Here is the call graph for this function:

◆ parallel_for() [1/15]

template<typename Range , typename Body >
__TBB_DEPRECATED_IN_VERBOSE_MODE void tbb::serial::interface9::parallel_for ( const Range &  range,
const Body &  body 
)

Parallel iteration over range with default partitioner.

Definition at line 108 of file serial/tbb/parallel_for.h.

108  {
110 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:596

References __TBB_DEFAULT_PARTITIONER, and tbb::serial::interface9::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [2/15]

template<typename Range , typename Body >
__TBB_DEPRECATED_IN_VERBOSE_MODE void tbb::serial::interface9::parallel_for ( const Range &  range,
const Body &  body,
const simple_partitioner partitioner 
)

Parallel iteration over range with simple partitioner.

Definition at line 115 of file serial/tbb/parallel_for.h.

115  {
117 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)

References tbb::serial::interface9::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [3/15]

template<typename Range , typename Body >
__TBB_DEPRECATED_IN_VERBOSE_MODE void tbb::serial::interface9::parallel_for ( const Range &  range,
const Body &  body,
const auto_partitioner partitioner 
)

Parallel iteration over range with auto_partitioner.

Definition at line 122 of file serial/tbb/parallel_for.h.

122  {
124 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)

References tbb::serial::interface9::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [4/15]

template<typename Range , typename Body >
__TBB_DEPRECATED_IN_VERBOSE_MODE void tbb::serial::interface9::parallel_for ( const Range &  range,
const Body &  body,
const static_partitioner partitioner 
)

Parallel iteration over range with static_partitioner.

Definition at line 129 of file serial/tbb/parallel_for.h.

129  {
131 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)

References tbb::serial::interface9::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [5/15]

template<typename Range , typename Body >
__TBB_DEPRECATED_IN_VERBOSE_MODE void tbb::serial::interface9::parallel_for ( const Range &  range,
const Body &  body,
affinity_partitioner partitioner 
)

Parallel iteration over range with affinity_partitioner.

Definition at line 136 of file serial/tbb/parallel_for.h.

136  {
138 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)

References tbb::serial::interface9::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [6/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body 
)

Parallel iteration over range with default partitioner.

Definition at line 200 of file tbb/parallel_for.h.

200  {
202 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:596

References __TBB_DEFAULT_PARTITIONER, and tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Referenced by tbb::internal::parallel_for_each_impl< Iterator, Function, std::random_access_iterator_tag >::doit(), tbb::strict_ppl::parallel_for_impl(), and tbb::interface9::internal::parallel_quick_sort().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_for() [7/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
const simple_partitioner partitioner 
)

Parallel iteration over range with simple partitioner.

Definition at line 207 of file tbb/parallel_for.h.

207  {
209 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [8/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
const auto_partitioner partitioner 
)

Parallel iteration over range with auto_partitioner.

Definition at line 214 of file tbb/parallel_for.h.

214  {
216 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [9/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
const static_partitioner partitioner 
)

Parallel iteration over range with static_partitioner.

Definition at line 221 of file tbb/parallel_for.h.

221  {
223 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [10/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
affinity_partitioner partitioner 
)

Parallel iteration over range with affinity_partitioner.

Definition at line 228 of file tbb/parallel_for.h.

228  {
230 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [11/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
task_group_context context 
)

Parallel iteration over range with default partitioner and user-supplied context.

Definition at line 236 of file tbb/parallel_for.h.

236  {
238 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:596

References __TBB_DEFAULT_PARTITIONER, and tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [12/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
const simple_partitioner partitioner,
task_group_context context 
)

Parallel iteration over range with simple partitioner and user-supplied context.

Definition at line 243 of file tbb/parallel_for.h.

243  {
244  internal::start_for<Range,Body,const simple_partitioner>::run(range, body, partitioner, context);
245 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [13/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
const auto_partitioner partitioner,
task_group_context context 
)

Parallel iteration over range with auto_partitioner and user-supplied context.

Definition at line 250 of file tbb/parallel_for.h.

250  {
251  internal::start_for<Range,Body,const auto_partitioner>::run(range, body, partitioner, context);
252 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [14/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
const static_partitioner partitioner,
task_group_context context 
)

Parallel iteration over range with static_partitioner and user-supplied context.

Definition at line 257 of file tbb/parallel_for.h.

257  {
258  internal::start_for<Range,Body,const static_partitioner>::run(range, body, partitioner, context);
259 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [15/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
affinity_partitioner partitioner,
task_group_context context 
)

Parallel iteration over range with affinity_partitioner and user-supplied context.

Definition at line 264 of file tbb/parallel_for.h.

264  {
265  internal::start_for<Range,Body,affinity_partitioner>::run(range,body,partitioner, context);
266 }
static void run(const Range &range, const Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for_each() [1/6]

template<typename Iterator , typename Function >
void tbb::parallel_for_each ( Iterator  first,
Iterator  last,
const Function &  f,
task_group_context context 
)

Calls function f for all items from [first, last) interval using user-supplied context.

Definition at line 92 of file parallel_for_each.h.

92  {
93  internal::parallel_for_each_impl<Iterator, Function, typename std::iterator_traits<Iterator>::iterator_category>::doit(first, last, f, context);
94 }
auto last(Container &c) -> decltype(begin(c))
auto first(Container &c) -> decltype(begin(c))

References tbb::internal::first(), and tbb::internal::last().

Referenced by tbb::parallel_for_each().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_for_each() [2/6]

template<typename Range , typename Function >
void tbb::parallel_for_each ( Range &  rng,
const Function &  f,
task_group_context context 
)

Calls function f for all items from rng using user-supplied context.

Definition at line 99 of file parallel_for_each.h.

99  {
101 }
auto last(Container &c) -> decltype(begin(c))
void parallel_for_each(const Range &rng, const Function &f)
Uses default context.
auto first(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_for_each().

Here is the call graph for this function:

◆ parallel_for_each() [3/6]

template<typename Range , typename Function >
void tbb::parallel_for_each ( const Range &  rng,
const Function &  f,
task_group_context context 
)

Calls function f for all items from const rng user-supplied context.

Definition at line 106 of file parallel_for_each.h.

106  {
108 }
auto last(Container &c) -> decltype(begin(c))
void parallel_for_each(const Range &rng, const Function &f)
Uses default context.
auto first(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_for_each().

Here is the call graph for this function:

◆ parallel_for_each() [4/6]

template<typename Iterator , typename Function >
void tbb::parallel_for_each ( Iterator  first,
Iterator  last,
const Function &  f 
)

Uses default context.

Definition at line 113 of file parallel_for_each.h.

113  {
114  internal::parallel_for_each_impl<Iterator, Function, typename std::iterator_traits<Iterator>::iterator_category>::doit(first, last, f);
115 }
auto last(Container &c) -> decltype(begin(c))
auto first(Container &c) -> decltype(begin(c))

References tbb::internal::first(), and tbb::internal::last().

Here is the call graph for this function:

◆ parallel_for_each() [5/6]

template<typename Range , typename Function >
void tbb::parallel_for_each ( Range &  rng,
const Function &  f 
)

Uses default context.

Definition at line 119 of file parallel_for_each.h.

119  {
121 }
auto last(Container &c) -> decltype(begin(c))
void parallel_for_each(const Range &rng, const Function &f)
Uses default context.
auto first(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_for_each().

Here is the call graph for this function:

◆ parallel_for_each() [6/6]

template<typename Range , typename Function >
void tbb::parallel_for_each ( const Range &  rng,
const Function &  f 
)

Uses default context.

Definition at line 125 of file parallel_for_each.h.

125  {
127 }
auto last(Container &c) -> decltype(begin(c))
void parallel_for_each(const Range &rng, const Function &f)
Uses default context.
auto first(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_for_each().

Here is the call graph for this function:

◆ parallel_invoke() [1/18]

template<typename F0 , typename F1 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
tbb::task_group_context context 
)

Executes a list of tasks in parallel and waits for all tasks to complete.

Definition at line 257 of file parallel_invoke.h.

257  {
258  internal::parallel_invoke_cleaner cleaner(2, context);
259  internal::parallel_invoke_helper& root = cleaner.root;
260 
261  root.add_children(f1);
262 
263  root.run_and_finish(f0);
264 }

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

◆ parallel_invoke() [2/18]

template<typename F0 , typename F1 , typename F2 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
tbb::task_group_context context 
)

Definition at line 268 of file parallel_invoke.h.

268  {
269  internal::parallel_invoke_cleaner cleaner(3, context);
270  internal::parallel_invoke_helper& root = cleaner.root;
271 
272  root.add_children(f2);
273  root.add_children(f1);
274 
275  root.run_and_finish(f0);
276 }

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

◆ parallel_invoke() [3/18]

template<typename F0 , typename F1 , typename F2 , typename F3 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
tbb::task_group_context context 
)

Definition at line 280 of file parallel_invoke.h.

282 {
283  internal::parallel_invoke_cleaner cleaner(4, context);
284  internal::parallel_invoke_helper& root = cleaner.root;
285 
286  root.add_children(f3);
287  root.add_children(f2);
288  root.add_children(f1);
289 
290  root.run_and_finish(f0);
291 }

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

◆ parallel_invoke() [4/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
tbb::task_group_context context 
)

Definition at line 295 of file parallel_invoke.h.

297 {
298  internal::parallel_invoke_cleaner cleaner(3, context);
299  internal::parallel_invoke_helper& root = cleaner.root;
300 
301  root.add_children(f4, f3);
302  root.add_children(f2, f1);
303 
304  root.run_and_finish(f0);
305 }

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

◆ parallel_invoke() [5/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
tbb::task_group_context context 
)

Definition at line 309 of file parallel_invoke.h.

311 {
312  internal::parallel_invoke_cleaner cleaner(3, context);
313  internal::parallel_invoke_helper& root = cleaner.root;
314 
315  root.add_children(f5, f4, f3);
316  root.add_children(f2, f1);
317 
318  root.run_and_finish(f0);
319 }

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

◆ parallel_invoke() [6/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
tbb::task_group_context context 
)

Definition at line 323 of file parallel_invoke.h.

326 {
327  internal::parallel_invoke_cleaner cleaner(3, context);
328  internal::parallel_invoke_helper& root = cleaner.root;
329 
330  root.add_children(f6, f5, f4);
331  root.add_children(f3, f2, f1);
332 
333  root.run_and_finish(f0);
334 }

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

◆ parallel_invoke() [7/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
const F7 &  f7,
tbb::task_group_context context 
)

Definition at line 339 of file parallel_invoke.h.

342 {
343  internal::parallel_invoke_cleaner cleaner(4, context);
344  internal::parallel_invoke_helper& root = cleaner.root;
345 
346  root.add_children(f7, f6, f5);
347  root.add_children(f4, f3);
348  root.add_children(f2, f1);
349 
350  root.run_and_finish(f0);
351 }

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

◆ parallel_invoke() [8/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
const F7 &  f7,
const F8 &  f8,
tbb::task_group_context context 
)

Definition at line 356 of file parallel_invoke.h.

359 {
360  internal::parallel_invoke_cleaner cleaner(4, context);
361  internal::parallel_invoke_helper& root = cleaner.root;
362 
363  root.add_children(f8, f7, f6);
364  root.add_children(f5, f4, f3);
365  root.add_children(f2, f1);
366 
367  root.run_and_finish(f0);
368 }

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

◆ parallel_invoke() [9/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
const F7 &  f7,
const F8 &  f8,
const F9 &  f9,
tbb::task_group_context context 
)

Definition at line 373 of file parallel_invoke.h.

376 {
377  internal::parallel_invoke_cleaner cleaner(4, context);
378  internal::parallel_invoke_helper& root = cleaner.root;
379 
380  root.add_children(f9, f8, f7);
381  root.add_children(f6, f5, f4);
382  root.add_children(f3, f2, f1);
383 
384  root.run_and_finish(f0);
385 }

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

◆ parallel_invoke() [10/18]

template<typename F0 , typename F1 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1 
)

Definition at line 389 of file parallel_invoke.h.

389  {
390  task_group_context context(internal::PARALLEL_INVOKE);
391  parallel_invoke<F0, F1>(f0, f1, context);
392 }

◆ parallel_invoke() [11/18]

template<typename F0 , typename F1 , typename F2 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2 
)

Definition at line 395 of file parallel_invoke.h.

395  {
396  task_group_context context(internal::PARALLEL_INVOKE);
397  parallel_invoke<F0, F1, F2>(f0, f1, f2, context);
398 }

◆ parallel_invoke() [12/18]

template<typename F0 , typename F1 , typename F2 , typename F3 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3 
)

Definition at line 401 of file parallel_invoke.h.

401  {
402  task_group_context context(internal::PARALLEL_INVOKE);
403  parallel_invoke<F0, F1, F2, F3>(f0, f1, f2, f3, context);
404 }

◆ parallel_invoke() [13/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4 
)

Definition at line 407 of file parallel_invoke.h.

407  {
408  task_group_context context(internal::PARALLEL_INVOKE);
409  parallel_invoke<F0, F1, F2, F3, F4>(f0, f1, f2, f3, f4, context);
410 }

◆ parallel_invoke() [14/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5 
)

Definition at line 413 of file parallel_invoke.h.

413  {
414  task_group_context context(internal::PARALLEL_INVOKE);
415  parallel_invoke<F0, F1, F2, F3, F4, F5>(f0, f1, f2, f3, f4, f5, context);
416 }

◆ parallel_invoke() [15/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6 
)

Definition at line 419 of file parallel_invoke.h.

421 {
422  task_group_context context(internal::PARALLEL_INVOKE);
423  parallel_invoke<F0, F1, F2, F3, F4, F5, F6>(f0, f1, f2, f3, f4, f5, f6, context);
424 }

◆ parallel_invoke() [16/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
const F7 &  f7 
)

Definition at line 428 of file parallel_invoke.h.

430 {
431  task_group_context context(internal::PARALLEL_INVOKE);
432  parallel_invoke<F0, F1, F2, F3, F4, F5, F6, F7>(f0, f1, f2, f3, f4, f5, f6, f7, context);
433 }

◆ parallel_invoke() [17/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
const F7 &  f7,
const F8 &  f8 
)

Definition at line 437 of file parallel_invoke.h.

439 {
440  task_group_context context(internal::PARALLEL_INVOKE);
441  parallel_invoke<F0, F1, F2, F3, F4, F5, F6, F7, F8>(f0, f1, f2, f3, f4, f5, f6, f7, f8, context);
442 }

◆ parallel_invoke() [18/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
const F7 &  f7,
const F8 &  f8,
const F9 &  f9 
)

Definition at line 446 of file parallel_invoke.h.

448 {
449  task_group_context context(internal::PARALLEL_INVOKE);
450  parallel_invoke<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9>(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, context);
451 }

◆ parallel_quick_sort()

template<typename RandomAccessIterator , typename Compare >
void tbb::interface9::internal::parallel_quick_sort ( RandomAccessIterator  begin,
RandomAccessIterator  end,
const Compare &  comp 
)

Wrapper method to initiate the sort by calling parallel_for.

Definition at line 162 of file parallel_sort.h.

162  {
163 #if __TBB_TASK_GROUP_CONTEXT
164  task_group_context my_context(PARALLEL_SORT);
165  const int serial_cutoff = 9;
166 
167  __TBB_ASSERT( begin + serial_cutoff < end, "min_parallel_size is smaller than serial cutoff?" );
168  RandomAccessIterator k = begin;
169  for ( ; k != begin + serial_cutoff; ++k ) {
170  if ( comp( *(k+1), *k ) ) {
171  goto do_parallel_quick_sort;
172  }
173  }
174 
175  parallel_for( blocked_range<RandomAccessIterator>(k+1, end),
176  quick_sort_pretest_body<RandomAccessIterator,Compare>(comp),
177  auto_partitioner(),
178  my_context);
179 
180  if (my_context.is_group_execution_cancelled())
181 do_parallel_quick_sort:
182 #endif /* __TBB_TASK_GROUP_CONTEXT */
183  parallel_for( quick_sort_range<RandomAccessIterator,Compare>(begin, end-begin, comp ),
184  quick_sort_body<RandomAccessIterator,Compare>(),
185  auto_partitioner() );
186 }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp end
__TBB_DEPRECATED_IN_VERBOSE_MODE void parallel_for(const Range &range, const Body &body)
Parallel iteration over range with default partitioner.
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp begin
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165

References __TBB_ASSERT, begin, end, tbb::task_group_context::is_group_execution_cancelled(), and tbb::parallel_for().

Referenced by tbb::parallel_sort().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_reduce() [1/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body 
)

Parallel iteration with reduction and default partitioner.

Definition at line 362 of file parallel_reduce.h.

362  {
364 }
static void run(const Range &range, Body &body, Partitioner &partitioner)
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:596

References __TBB_DEFAULT_PARTITIONER, and tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [2/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
const simple_partitioner partitioner 
)

Parallel iteration with reduction and simple_partitioner.

Definition at line 369 of file parallel_reduce.h.

369  {
371 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [3/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
const auto_partitioner partitioner 
)

Parallel iteration with reduction and auto_partitioner.

Definition at line 376 of file parallel_reduce.h.

376  {
378 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [4/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
const static_partitioner partitioner 
)

Parallel iteration with reduction and static_partitioner.

Definition at line 383 of file parallel_reduce.h.

383  {
385 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [5/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
affinity_partitioner partitioner 
)

Parallel iteration with reduction and affinity_partitioner.

Definition at line 390 of file parallel_reduce.h.

390  {
392 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [6/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
task_group_context context 
)

Parallel iteration with reduction, default partitioner and user-supplied context.

Definition at line 398 of file parallel_reduce.h.

398  {
400 }
static void run(const Range &range, Body &body, Partitioner &partitioner)
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:596

References __TBB_DEFAULT_PARTITIONER, and tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [7/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
const simple_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, simple partitioner and user-supplied context.

Definition at line 405 of file parallel_reduce.h.

405  {
406  internal::start_reduce<Range,Body,const simple_partitioner>::run( range, body, partitioner, context );
407 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [8/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
const auto_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, auto_partitioner and user-supplied context.

Definition at line 412 of file parallel_reduce.h.

412  {
413  internal::start_reduce<Range,Body,const auto_partitioner>::run( range, body, partitioner, context );
414 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [9/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
const static_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, static_partitioner and user-supplied context.

Definition at line 419 of file parallel_reduce.h.

419  {
420  internal::start_reduce<Range,Body,const static_partitioner>::run( range, body, partitioner, context );
421 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [10/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
affinity_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, affinity_partitioner and user-supplied context.

Definition at line 426 of file parallel_reduce.h.

426  {
427  internal::start_reduce<Range,Body,affinity_partitioner>::run( range, body, partitioner, context );
428 }
static void run(const Range &range, Body &body, Partitioner &partitioner)

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [11/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction 
)

Parallel iteration with reduction and default partitioner.

parallel_reduce overloads that work with anonymous function objects (see also requirements on parallel_reduce anonymous function objects).

Definition at line 437 of file parallel_reduce.h.

437  {
438  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
439  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const __TBB_DEFAULT_PARTITIONER>
440  ::run(range, body, __TBB_DEFAULT_PARTITIONER() );
441  return body.result();
442 }
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:596

References __TBB_DEFAULT_PARTITIONER, and tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_reduce() [12/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const simple_partitioner partitioner 
)

Parallel iteration with reduction and simple_partitioner.

Definition at line 447 of file parallel_reduce.h.

448  {
449  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
450  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const simple_partitioner>
451  ::run(range, body, partitioner );
452  return body.result();
453 }

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_reduce() [13/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const auto_partitioner partitioner 
)

Parallel iteration with reduction and auto_partitioner.

Definition at line 458 of file parallel_reduce.h.

459  {
460  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
461  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const auto_partitioner>
462  ::run( range, body, partitioner );
463  return body.result();
464 }

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_reduce() [14/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const static_partitioner partitioner 
)

Parallel iteration with reduction and static_partitioner.

Definition at line 469 of file parallel_reduce.h.

470  {
471  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
472  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const static_partitioner>
473  ::run( range, body, partitioner );
474  return body.result();
475 }

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_reduce() [15/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
affinity_partitioner partitioner 
)

Parallel iteration with reduction and affinity_partitioner.

Definition at line 480 of file parallel_reduce.h.

481  {
482  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
483  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,affinity_partitioner>
484  ::run( range, body, partitioner );
485  return body.result();
486 }

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_reduce() [16/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
task_group_context context 
)

Parallel iteration with reduction, default partitioner and user-supplied context.

Definition at line 492 of file parallel_reduce.h.

493  {
494  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
495  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const __TBB_DEFAULT_PARTITIONER>
496  ::run( range, body, __TBB_DEFAULT_PARTITIONER(), context );
497  return body.result();
498 }
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:596

References __TBB_DEFAULT_PARTITIONER, and tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_reduce() [17/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const simple_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, simple partitioner and user-supplied context.

Definition at line 503 of file parallel_reduce.h.

504  {
505  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
506  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const simple_partitioner>
507  ::run( range, body, partitioner, context );
508  return body.result();
509 }

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_reduce() [18/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const auto_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, auto_partitioner and user-supplied context.

Definition at line 514 of file parallel_reduce.h.

515  {
516  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
517  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const auto_partitioner>
518  ::run( range, body, partitioner, context );
519  return body.result();
520 }

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_reduce() [19/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const static_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, static_partitioner and user-supplied context.

Definition at line 525 of file parallel_reduce.h.

526  {
527  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
528  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const static_partitioner>
529  ::run( range, body, partitioner, context );
530  return body.result();
531 }

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_reduce() [20/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
affinity_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, affinity_partitioner and user-supplied context.

Definition at line 536 of file parallel_reduce.h.

537  {
538  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
539  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,affinity_partitioner>
540  ::run( range, body, partitioner, context );
541  return body.result();
542 }

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

◆ parallel_scan() [1/6]

template<typename Range , typename Body >
void tbb::parallel_scan ( const Range &  range,
Body &  body 
)

Parallel prefix with default partitioner.

Definition at line 363 of file parallel_scan.h.

363  {
365 }
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:596
static void run(const Range &range_, Body &body_, const Partitioner &partitioner_)

References __TBB_DEFAULT_PARTITIONER, and tbb::internal::start_scan< Range, Body, Partitioner >::run().

Referenced by tbb::parallel_scan().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_scan() [2/6]

template<typename Range , typename Body >
void tbb::parallel_scan ( const Range &  range,
Body &  body,
const simple_partitioner partitioner 
)

Parallel prefix with simple_partitioner.

Definition at line 370 of file parallel_scan.h.

370  {
372 }
static void run(const Range &range_, Body &body_, const Partitioner &partitioner_)

References tbb::internal::start_scan< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_scan() [3/6]

template<typename Range , typename Body >
void tbb::parallel_scan ( const Range &  range,
Body &  body,
const auto_partitioner partitioner 
)

Parallel prefix with auto_partitioner.

Definition at line 377 of file parallel_scan.h.

377  {
379 }
static void run(const Range &range_, Body &body_, const Partitioner &partitioner_)

References tbb::internal::start_scan< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_scan() [4/6]

template<typename Range , typename Value , typename Scan , typename ReverseJoin >
Value tbb::parallel_scan ( const Range &  range,
const Value &  identity,
const Scan &  scan,
const ReverseJoin &  reverse_join 
)

Parallel prefix with default partitioner.

Definition at line 384 of file parallel_scan.h.

384  {
385  internal::lambda_scan_body<Range, Value, Scan, ReverseJoin> body(identity, scan, reverse_join);
387  return body.result();
388 }
void parallel_scan(const Range &range, Body &body)
Parallel prefix with default partitioner.
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:596

References __TBB_DEFAULT_PARTITIONER, tbb::parallel_scan(), and tbb::internal::lambda_scan_body< Range, Value, Scan, ReverseJoin >::result().

Here is the call graph for this function:

◆ parallel_scan() [5/6]

template<typename Range , typename Value , typename Scan , typename ReverseJoin >
Value tbb::parallel_scan ( const Range &  range,
const Value &  identity,
const Scan &  scan,
const ReverseJoin &  reverse_join,
const simple_partitioner partitioner 
)

Parallel prefix with simple_partitioner.

Definition at line 393 of file parallel_scan.h.

393  {
394  internal::lambda_scan_body<Range, Value, Scan, ReverseJoin> body(identity, scan, reverse_join);
395  tbb::parallel_scan(range,body,partitioner);
396  return body.result();
397 }
void parallel_scan(const Range &range, Body &body)
Parallel prefix with default partitioner.

References tbb::parallel_scan(), and tbb::internal::lambda_scan_body< Range, Value, Scan, ReverseJoin >::result().

Here is the call graph for this function:

◆ parallel_scan() [6/6]

template<typename Range , typename Value , typename Scan , typename ReverseJoin >
Value tbb::parallel_scan ( const Range &  range,
const Value &  identity,
const Scan &  scan,
const ReverseJoin &  reverse_join,
const auto_partitioner partitioner 
)

Parallel prefix with auto_partitioner.

Definition at line 402 of file parallel_scan.h.

402  {
403  internal::lambda_scan_body<Range, Value, Scan, ReverseJoin> body(identity, scan, reverse_join);
404  tbb::parallel_scan(range,body,partitioner);
405  return body.result();
406 }
void parallel_scan(const Range &range, Body &body)
Parallel prefix with default partitioner.

References tbb::parallel_scan(), and tbb::internal::lambda_scan_body< Range, Value, Scan, ReverseJoin >::result().

Here is the call graph for this function:

◆ parallel_sort() [1/5]

template<typename RandomAccessIterator , typename Compare >
void tbb::parallel_sort ( RandomAccessIterator  begin,
RandomAccessIterator  end,
const Compare &  comp 
)

Sorts the data in [begin,end) using the given comparator.

The compare function object is used for all comparisons between elements during sorting. The compare object must define a bool operator() function.

Definition at line 210 of file parallel_sort.h.

210  {
211  const int min_parallel_size = 500;
212  if( end > begin ) {
213  if (end - begin < min_parallel_size) {
214  std::sort(begin, end, comp);
215  } else {
217  }
218  }
219 }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp end
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp begin
void parallel_quick_sort(RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)
Wrapper method to initiate the sort by calling parallel_for.

References begin, end, and tbb::interface9::internal::parallel_quick_sort().

Referenced by tbb::parallel_sort().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_sort() [2/5]

template<typename RandomAccessIterator >
void tbb::parallel_sort ( RandomAccessIterator  begin,
RandomAccessIterator  end 
)
inline

Sorts the data in [begin,end) with a default comparator std::less<RandomAccessIterator>

Definition at line 224 of file parallel_sort.h.

224  {
225  parallel_sort( begin, end, std::less< typename std::iterator_traits<RandomAccessIterator>::value_type >() );
226 }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp end
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp begin
void parallel_sort(T *begin, T *end)
Sorts the data in the range [begin,end) with a default comparator std::less<T>

References begin, end, and tbb::parallel_sort().

Here is the call graph for this function:

◆ parallel_sort() [3/5]

template<typename Range , typename Compare >
void tbb::parallel_sort ( Range &  rng,
const Compare &  comp 
)

Sorts the data in rng using the given comparator.

Definition at line 231 of file parallel_sort.h.

231  {
233 }
auto last(Container &c) -> decltype(begin(c))
auto first(Container &c) -> decltype(begin(c))
void parallel_sort(T *begin, T *end)
Sorts the data in the range [begin,end) with a default comparator std::less<T>

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_sort().

Here is the call graph for this function:

◆ parallel_sort() [4/5]

template<typename Range >
void tbb::parallel_sort ( Range &  rng)

Sorts the data in rng with a default comparator std::less<RandomAccessIterator>

Definition at line 238 of file parallel_sort.h.

238  {
240 }
auto last(Container &c) -> decltype(begin(c))
auto first(Container &c) -> decltype(begin(c))
void parallel_sort(T *begin, T *end)
Sorts the data in the range [begin,end) with a default comparator std::less<T>

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_sort().

Here is the call graph for this function:

◆ parallel_sort() [5/5]

template<typename T >
void tbb::parallel_sort ( T *  begin,
T *  end 
)
inline

Sorts the data in the range [begin,end) with a default comparator std::less<T>

Definition at line 245 of file parallel_sort.h.

245  {
246  parallel_sort( begin, end, std::less< T >() );
247 }
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp end
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp begin
void parallel_sort(T *begin, T *end)
Sorts the data in the range [begin,end) with a default comparator std::less<T>

References begin, end, and tbb::parallel_sort().

Here is the call graph for this function:

◆ run_parallel_do()

template<typename Iterator , typename Body , typename Item >
void tbb::interface9::internal::run_parallel_do ( Iterator  first,
Iterator  last,
const Body &  body,
task_group_context context 
)

For internal use only.

Implements parallel iteration over a range.

Definition at line 414 of file parallel_do.h.

419  {
420  typedef do_task_iter<Iterator, Body, Item> root_iteration_task;
421 #if __TBB_TASK_GROUP_CONTEXT
422  parallel_do_feeder_impl<Body, Item> feeder(context);
423 #else
424  parallel_do_feeder_impl<Body, Item> feeder;
425 #endif
426  feeder.my_body = &body;
427 
428  root_iteration_task &t = *new( feeder.my_barrier->allocate_child() ) root_iteration_task(first, last, feeder);
429 
430  feeder.my_barrier->set_ref_count(2);
431  feeder.my_barrier->spawn_and_wait_for_all(t);
432  }
auto last(Container &c) -> decltype(begin(c))
auto first(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), tbb::interface9::internal::parallel_do_feeder_impl< Body, Item >::my_barrier, and tbb::interface9::internal::parallel_do_feeder_impl< Body, Item >::my_body.

Here is the call graph for this function:

◆ select_parallel_do() [1/2]

template<typename Iterator , typename Body , typename Item >
void tbb::interface9::internal::select_parallel_do ( Iterator  first,
Iterator  last,
const Body &  body,
void(Body::*)(Item) const  ,
task_group_context context 
)

For internal use only.

Detects types of Body's operator function arguments.

Definition at line 438 of file parallel_do.h.

443  {
445 #if __TBB_TASK_GROUP_CONTEXT
446  , context
447 #endif
448  );
449  }
auto last(Container &c) -> decltype(begin(c))
auto first(Container &c) -> decltype(begin(c))
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type type

References tbb::internal::first(), tbb::internal::last(), and type.

Referenced by tbb::parallel_do().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ select_parallel_do() [2/2]

template<typename Iterator , typename Body , typename Item , typename _Item >
void tbb::interface9::internal::select_parallel_do ( Iterator  first,
Iterator  last,
const Body &  body,
void(Body::*)(Item, parallel_do_feeder< _Item > &) const  ,
task_group_context context 
)

For internal use only.

Detects types of Body's operator function arguments.

Definition at line 455 of file parallel_do.h.

460  {
462 #if __TBB_TASK_GROUP_CONTEXT
463  , context
464 #endif
465  );
466  }
auto last(Container &c) -> decltype(begin(c))
auto first(Container &c) -> decltype(begin(c))
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type type

References tbb::internal::first(), tbb::internal::last(), and type.

Here is the call graph for this function:

Copyright © 2005-2020 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.