Home ⌂Doc Index ◂Up ▴
Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
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...
 
voidallocate_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

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.

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.

131  {
132  task* parent_ptr = new( start_for_task->allocate_continuation() ) flag_task();
133  start_for_task->set_parent(parent_ptr);
134  parent_ptr->set_ref_count(2);
135  return &parent_ptr->allocate_child().allocate(bytes);
136  }
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

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.

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

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.

337  {
338  int current_index = tbb::this_task_arena::current_thread_index();
339  if (current_index == tbb::task_arena::not_initialized)
340  current_index = 0;
341  return size_t(current_index);
342 }
int current_thread_index()
Returns the index, aka slot number, of the calling thread in its current arena.
Definition: task_arena.h:484

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:

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.