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 1 of file pipeline.h.

235 {
236public:
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
252 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
258private:
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
295 void clear_filters();
296#endif
297};
#define __TBB_EXPORTED_METHOD
Definition: tbb_stddef.h:98
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
The class that represents an object of the pipeline for parallel_pipeline().
Definition: pipeline.h:508
Used to form groups of tasks.
Definition: task.h:358

◆ 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 {
549 internal::start_deterministic_reduce<Range, Body, const simple_partitioner>::run(range, body, simple_partitioner());
550}

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 {
556 internal::start_deterministic_reduce<Range, Body, const simple_partitioner>::run(range, body, partitioner);
557}

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 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 {
578 internal::start_deterministic_reduce<Range, Body, const simple_partitioner>::run(range, body, partitioner, context);
579}

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,
const static_partitioner partitioner 
)

Parallel iteration with deterministic reduction and static partitioner.

Definition at line 562 of file parallel_reduce.h.

562 {
563 internal::start_deterministic_reduce<Range, Body, const static_partitioner>::run(range, body, partitioner);
564}

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 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 {
585 internal::start_deterministic_reduce<Range, Body, const static_partitioner>::run(range, body, partitioner, context);
586}

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,
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}

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 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() [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,
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() [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 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_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,
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}

References tbb::parallel_deterministic_reduce().

Here is the call graph for this function:

◆ parallel_do() [1/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}
void parallel_do(const Range &rng, const Body &body, task_group_context &context)
Definition: parallel_do.h:538
auto last(Container &c) -> decltype(begin(c))
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() [2/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}

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 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

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() [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}

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 
)

Definition at line 512 of file parallel_do.h.

512 {
514}

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 ( 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}

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 {
109 serial::interface9::start_for<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run(range,body,__TBB_DEFAULT_PARTITIONER());
110}
#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 >
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 {
201 internal::start_for<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run(range,body,__TBB_DEFAULT_PARTITIONER());
202}

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() [3/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 {
137 serial::interface9::start_for<Range,Body,affinity_partitioner>::run(range,body,partitioner);
138}

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 >
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 {
229 internal::start_for<Range,Body,affinity_partitioner>::run(range,body,partitioner);
230}

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

Here is the call graph for this function:

◆ parallel_for() [5/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}

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

Here is the call graph for this function:

◆ parallel_for() [6/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 {
123 serial::interface9::start_for<Range,Body,const auto_partitioner>::run(range,body,partitioner);
124}

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

Here is the call graph for this function:

◆ parallel_for() [7/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 {
215 internal::start_for<Range,Body,const auto_partitioner>::run(range,body,partitioner);
216}

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,
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}

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 >
__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 {
116 serial::interface9::start_for<Range,Body,const simple_partitioner>::run(range,body,partitioner);
117}

References tbb::serial::interface9::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,
const simple_partitioner partitioner 
)

Parallel iteration over range with simple partitioner.

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

207 {
208 internal::start_for<Range,Body,const simple_partitioner>::run(range,body,partitioner);
209}

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,
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}

References 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 >
__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 {
130 serial::interface9::start_for<Range,Body,const static_partitioner>::run(range,body,partitioner);
131}

References tbb::serial::interface9::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 static_partitioner partitioner 
)

Parallel iteration over range with static_partitioner.

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

221 {
222 internal::start_for<Range,Body,const static_partitioner>::run(range,body,partitioner);
223}

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}

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,
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 {
237 internal::start_for<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run(range, body, __TBB_DEFAULT_PARTITIONER(), context);
238}

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

Here is the call graph for this function:

◆ parallel_for_each() [1/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}
void parallel_for_each(const Range &rng, const Function &f)
Uses default context.

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

Here is the call graph for this function:

◆ parallel_for_each() [2/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}

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 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}

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

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,
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}

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() [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.

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 ( 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}

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 
)

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() [2/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() [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 
)

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() [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 
)

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() [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 
)

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() [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 
)

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() [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 
)

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() [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 
)

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() [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 
)

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_invoke() [10/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() [11/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() [12/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() [13/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() [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,
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() [15/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() [16/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() [17/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() [18/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_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())
181do_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}
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165
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
__TBB_DEPRECATED_IN_VERBOSE_MODE void parallel_for(const Range &range, const Body &body)
Parallel iteration over range with default partitioner.

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 {
363 internal::start_reduce<Range,Body, const __TBB_DEFAULT_PARTITIONER>::run( range, body, __TBB_DEFAULT_PARTITIONER() );
364}

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,
affinity_partitioner partitioner 
)

Parallel iteration with reduction and affinity_partitioner.

Definition at line 390 of file parallel_reduce.h.

390 {
391 internal::start_reduce<Range,Body,affinity_partitioner>::run( range, body, partitioner );
392}

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,
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}

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 auto_partitioner partitioner 
)

Parallel iteration with reduction and auto_partitioner.

Definition at line 376 of file parallel_reduce.h.

376 {
377 internal::start_reduce<Range,Body,const auto_partitioner>::run( range, body, partitioner );
378}

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,
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}

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,
const simple_partitioner partitioner 
)

Parallel iteration with reduction and simple_partitioner.

Definition at line 369 of file parallel_reduce.h.

369 {
370 internal::start_reduce<Range,Body,const simple_partitioner>::run( range, body, partitioner );
371}

References 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}

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 static_partitioner partitioner 
)

Parallel iteration with reduction and static_partitioner.

Definition at line 383 of file parallel_reduce.h.

383 {
384 internal::start_reduce<Range,Body,const static_partitioner>::run( range, body, partitioner );
385}

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}

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,
task_group_context context 
)

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

Definition at line 398 of file parallel_reduce.h.

398 {
399 internal::start_reduce<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run( range, body, __TBB_DEFAULT_PARTITIONER(), context );
400}

References __TBB_DEFAULT_PARTITIONER, and 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}

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,
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() [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,
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_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 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() [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,
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() [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,
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() [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 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() [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,
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}

References __TBB_DEFAULT_PARTITIONER, and 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 {
364 internal::start_scan<Range,Body,__TBB_DEFAULT_PARTITIONER>::run(range,body,__TBB_DEFAULT_PARTITIONER());
365}

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 auto_partitioner partitioner 
)

Parallel prefix with auto_partitioner.

Definition at line 377 of file parallel_scan.h.

377 {
378 internal::start_scan<Range,Body,auto_partitioner>::run(range,body,partitioner);
379}

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 simple_partitioner partitioner 
)

Parallel prefix with simple_partitioner.

Definition at line 370 of file parallel_scan.h.

370 {
371 internal::start_scan<Range,Body,simple_partitioner>::run(range,body,partitioner);
372}

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.

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 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}

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 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}

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 >
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 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() [2/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 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() [3/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.

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 , 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}

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}

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 }

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

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 }
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 }

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.