tbb::interface9::internal Namespace Reference

## Classes

struct | adaptive_mode
| Provides default splitting strategy for partition objects. More...
class | affinity_partition_type
class | auto_partition_type
class | do_group_task
class | do_group_task_forward
| For internal use only. More...
class | do_group_task_input
class | do_iteration_task
| For internal use only. More...
class | do_iteration_task_iter
class | do_task_iter
| For internal use only. More...
struct | dynamic_grainsize_mode
class | finish_deterministic_reduce
| Task type used to combine the partial results of parallel_deterministic_reduce. More...
class | finish_reduce
| Task type used to combine the partial results of parallel_reduce. More...
class | flag_task
| Join task node that contains shared flag for stealing feedback. More...
struct | linear_affinity_mode
| Provides default linear indexing of partitioner's sequence. More...
class | old_auto_partition_type
| Backward-compatible partition for auto and affinity partition objects. More...
class | parallel_do_feeder_impl
| For internal use only. More...
class | parallel_do_operator_selector
| For internal use only. More...
struct | partition_type_base
| Provides default methods for partition objects and common algorithm blocks. More...
struct | proportion_helper
| A helper class to create a proportional_split object for a given type of Range. More...
struct | proportion_helper< Range, typename enable_if< Range::is_splittable_in_proportion, void >::type >
struct | proportional_mode
| Provides proportional splitting strategy for partition objects. More...
struct | quick_sort_body
| Body class used to sort elements in a range that is smaller than the grainsize. More...
class | quick_sort_pretest_body
| Body class used to test if elements in a range are presorted. More...
class | quick_sort_range
| Range used in quicksort to split elements into subranges based on a value. More...
class | range_vector
| Range pool stores ranges of type T in a circular buffer with MaxCapacity. More...
class | simple_partition_type
class | start_deterministic_reduce
| Task type used to split the work of parallel_deterministic_reduce. More...
class | start_for
| Task type used in parallel_for. More...
class | start_reduce
| Task type used to split the work of parallel_reduce. More...
class | static_partition_type

## Typedefs

typedef char | reduction_context
typedef unsigned char | depth_t

## Enumerations

enum | { root_task, left_child, right_child }

## Functions

template<typename Iterator , typename Body , typename Item >
void | 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 | 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 | 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...
void * | allocate_sibling (task *start_for_task, size_t bytes)
| allocate right task with new parent More...
void | allocate_sibling (task *start_reduce_task, task *tasks[], size_t start_bytes, size_t finish_bytes)
| allocate right task with new parent More...
template<typename RandomAccessIterator , typename Compare >
void | parallel_quick_sort (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)
| Wrapper method to initiate the sort by calling parallel_for. More...
static size_t | get_initial_partition_head ()

## Typedef Documentation

## depth_t

typedef unsigned char tbb::interface9::internal::depth_t

Depth is a relative depth of recursive division inside a range pool. Relative depth allows infinite absolute depth of the recursion for heavily unbalanced workloads with range represented by a number that cannot fit into machine word.

Definition at line 150 of file partitioner.h.

## reduction_context

typedef char tbb::interface9::internal::reduction_context

Represented as a char, not enum, for compactness.

Definition at line 43 of file parallel_reduce.h.

## Enumeration Type Documentation

## anonymous enum

anonymous enum

Values for reduction_context.

Enumerator
root_task |
left_child |
right_child |

Definition at line 38 of file parallel_reduce.h.

{
root_task, left_child, right_child
};

## Function Documentation

## allocate_sibling() [1/2]

void * tbb::interface9::internal::allocate_sibling | ( | task * | start_for_task,
|  | size_t | bytes
| ) |  |

inline

allocate right task with new parent

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

{
task* parent_ptr = new( start_for_task->allocate_continuation() ) flag_task();
start_for_task->set_parent(parent_ptr);
parent_ptr->set_ref_count(2);
return &parent_ptr->allocate_child().allocate(bytes);
}

References tbb::internal::allocate_child_proxy::allocate(), tbb::task::allocate_child(), tbb::task::allocate_continuation(), tbb::task::set_parent(), and tbb::task::set_ref_count().

Referenced by tbb::interface9::internal::start_for< Range, Body, Partitioner >::offer_work(), tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::offer_work(), and tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >::offer_work().

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

## allocate_sibling() [2/2]

void tbb::interface9::internal::allocate_sibling | ( | task * | start_reduce_task,
|  | task * | tasks[],
|  | size_t | start_bytes,
|  | size_t | finish_bytes
| ) |  |

inline

allocate right task with new parent

Definition at line 173 of file parallel_reduce.h.

{
tasks[0] = &start_reduce_task->allocate_continuation().allocate(finish_bytes);
start_reduce_task->set_parent(tasks[0]);
tasks[0]->set_ref_count(2);
tasks[1] = &tasks[0]->allocate_child().allocate(start_bytes);
}

References tbb::internal::allocate_continuation_proxy::allocate(), tbb::internal::allocate_child_proxy::allocate(), tbb::task::allocate_child(), tbb::task::allocate_continuation(), tbb::task::set_parent(), and tbb::task::set_ref_count().

Here is the call graph for this function:

## get_initial_partition_head()

static size_t tbb::interface9::internal::get_initial_partition_head | ( |  | ) |

static

Definition at line 337 of file partitioner.h.

{
int current_index = tbb::this_task_arena::current_thread_index();
if (current_index == tbb::task_arena::not_initialized)
current_index = 0;
return size_t(current_index);
}

References tbb::this_task_arena::current_thread_index(), and tbb::interface7::internal::task_arena_base::not_initialized.

Here is the call graph for this function:
tbb::interface9::internal::right_child
Definition: parallel_reduce.h:39
tbb::this_task_arena::current_thread_index
int current_thread_index()
Returns the index, aka slot number, of the calling thread in its current arena.
Definition: task_arena.h:484
tbb::interface9::internal::root_task
Definition: parallel_reduce.h:39
tbb::interface9::internal::left_child
Definition: parallel_reduce.h:39
task
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
Definition: ittnotify_static.h:119
tbb::interface7::internal::task_arena_base::not_initialized
static const int not_initialized
Definition: task_arena.h:206

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.