Home ⌂Doc Index ◂Up ▴
Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
tbb::blocked_range3d< PageValue, RowValue, ColValue > Class Template Reference

A 3-dimensional range that models the Range concept. More...

#include <blocked_range3d.h>

Collaboration diagram for tbb::blocked_range3d< PageValue, RowValue, ColValue >:

Public Types

typedef blocked_range< PageValue > page_range_type
 Type for size of an iteration range. More...
 
typedef blocked_range< RowValue > row_range_type
 
typedef blocked_range< ColValue > col_range_type
 

Public Member Functions

 blocked_range3d (PageValue page_begin, PageValue page_end, RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end)
 
 blocked_range3d (PageValue page_begin, PageValue page_end, typename page_range_type::size_type page_grainsize, RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize)
 
bool empty () const
 True if range is empty. More...
 
bool is_divisible () const
 True if range is divisible into two pieces. More...
 
 blocked_range3d (blocked_range3d &r, split)
 
 blocked_range3d (blocked_range3d &r, proportional_split &proportion)
 
const page_range_typepages () const
 The pages of the iteration space. More...
 
const row_range_typerows () const
 The rows of the iteration space. More...
 
const col_range_typecols () const
 The columns of the iteration space. More...
 

Static Public Attributes

static const bool is_splittable_in_proportion = true
 Static field to support proportional split. More...
 

Private Member Functions

template<typename Split >
void do_split (blocked_range3d &r, Split &split_obj)
 

Private Attributes

page_range_type my_pages
 
row_range_type my_rows
 
col_range_type my_cols
 

Detailed Description

template<typename PageValue, typename RowValue = PageValue, typename ColValue = RowValue>
class tbb::blocked_range3d< PageValue, RowValue, ColValue >

A 3-dimensional range that models the Range concept.

Definition at line 28 of file blocked_range3d.h.

Member Typedef Documentation

◆ col_range_type

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
typedef blocked_range<ColValue> tbb::blocked_range3d< PageValue, RowValue, ColValue >::col_range_type

Definition at line 33 of file blocked_range3d.h.

◆ page_range_type

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
typedef blocked_range<PageValue> tbb::blocked_range3d< PageValue, RowValue, ColValue >::page_range_type

Type for size of an iteration range.

Definition at line 31 of file blocked_range3d.h.

◆ row_range_type

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
typedef blocked_range<RowValue> tbb::blocked_range3d< PageValue, RowValue, ColValue >::row_range_type

Definition at line 32 of file blocked_range3d.h.

Constructor & Destructor Documentation

◆ blocked_range3d() [1/4]

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
tbb::blocked_range3d< PageValue, RowValue, ColValue >::blocked_range3d ( PageValue  page_begin,
PageValue  page_end,
RowValue  row_begin,
RowValue  row_end,
ColValue  col_begin,
ColValue  col_end 
)
inline

Definition at line 42 of file blocked_range3d.h.

44  :
45  my_pages(page_begin,page_end),
46  my_rows(row_begin,row_end),
47  my_cols(col_begin,col_end)
48  {}
col_range_type my_cols
row_range_type my_rows
page_range_type my_pages

◆ blocked_range3d() [2/4]

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
tbb::blocked_range3d< PageValue, RowValue, ColValue >::blocked_range3d ( PageValue  page_begin,
PageValue  page_end,
typename page_range_type::size_type  page_grainsize,
RowValue  row_begin,
RowValue  row_end,
typename row_range_type::size_type  row_grainsize,
ColValue  col_begin,
ColValue  col_end,
typename col_range_type::size_type  col_grainsize 
)
inline

Definition at line 50 of file blocked_range3d.h.

52  :
53  my_pages(page_begin,page_end,page_grainsize),
54  my_rows(row_begin,row_end,row_grainsize),
55  my_cols(col_begin,col_end,col_grainsize)
56  {}
col_range_type my_cols
row_range_type my_rows
page_range_type my_pages

◆ blocked_range3d() [3/4]

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
tbb::blocked_range3d< PageValue, RowValue, ColValue >::blocked_range3d ( blocked_range3d< PageValue, RowValue, ColValue > &  r,
split   
)
inline

Definition at line 69 of file blocked_range3d.h.

69  :
70  my_pages(r.my_pages),
71  my_rows(r.my_rows),
72  my_cols(r.my_cols)
73  {
74  split split_obj;
75  do_split(r, split_obj);
76  }
col_range_type my_cols
row_range_type my_rows
void do_split(blocked_range3d &r, Split &split_obj)
page_range_type my_pages

References tbb::blocked_range3d< PageValue, RowValue, ColValue >::do_split().

Here is the call graph for this function:

◆ blocked_range3d() [4/4]

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
tbb::blocked_range3d< PageValue, RowValue, ColValue >::blocked_range3d ( blocked_range3d< PageValue, RowValue, ColValue > &  r,
proportional_split proportion 
)
inline

Definition at line 82 of file blocked_range3d.h.

82  :
83  my_pages(r.my_pages),
84  my_rows(r.my_rows),
85  my_cols(r.my_cols)
86  {
87  do_split(r, proportion);
88  }
col_range_type my_cols
row_range_type my_rows
void do_split(blocked_range3d &r, Split &split_obj)
page_range_type my_pages

References tbb::blocked_range3d< PageValue, RowValue, ColValue >::do_split().

Here is the call graph for this function:

Member Function Documentation

◆ cols()

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
const col_range_type& tbb::blocked_range3d< PageValue, RowValue, ColValue >::cols ( ) const
inline

The columns of the iteration space.

Definition at line 98 of file blocked_range3d.h.

98 {return my_cols;}
col_range_type my_cols

References tbb::blocked_range3d< PageValue, RowValue, ColValue >::my_cols.

◆ do_split()

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
template<typename Split >
void tbb::blocked_range3d< PageValue, RowValue, ColValue >::do_split ( blocked_range3d< PageValue, RowValue, ColValue > &  r,
Split &  split_obj 
)
inlineprivate

Definition at line 103 of file blocked_range3d.h.

104  {
105  if ( my_pages.size()*double(my_rows.grainsize()) < my_rows.size()*double(my_pages.grainsize()) ) {
106  if ( my_rows.size()*double(my_cols.grainsize()) < my_cols.size()*double(my_rows.grainsize()) ) {
107  my_cols.my_begin = col_range_type::do_split(r.my_cols, split_obj);
108  } else {
109  my_rows.my_begin = row_range_type::do_split(r.my_rows, split_obj);
110  }
111  } else {
112  if ( my_pages.size()*double(my_cols.grainsize()) < my_cols.size()*double(my_pages.grainsize()) ) {
113  my_cols.my_begin = col_range_type::do_split(r.my_cols, split_obj);
114  } else {
115  my_pages.my_begin = page_range_type::do_split(r.my_pages, split_obj);
116  }
117  }
118  }
size_type grainsize() const
The grain size for this range.
Definition: blocked_range.h:82
static ColValue do_split(blocked_range &r, split)
Auxiliary function used by the splitting constructor.
size_type size() const
Size of the range.
Definition: blocked_range.h:76
col_range_type my_cols
row_range_type my_rows
page_range_type my_pages

References tbb::blocked_range< ColValue >::do_split(), tbb::blocked_range< RowValue >::do_split(), tbb::blocked_range< PageValue >::do_split(), tbb::blocked_range< Value >::grainsize(), tbb::blocked_range< Value >::my_begin, tbb::blocked_range3d< PageValue, RowValue, ColValue >::my_cols, tbb::blocked_range3d< PageValue, RowValue, ColValue >::my_pages, tbb::blocked_range3d< PageValue, RowValue, ColValue >::my_rows, and tbb::blocked_range< Value >::size().

Referenced by tbb::blocked_range3d< PageValue, RowValue, ColValue >::blocked_range3d().

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

◆ empty()

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
bool tbb::blocked_range3d< PageValue, RowValue, ColValue >::empty ( ) const
inline

True if range is empty.

Definition at line 59 of file blocked_range3d.h.

59  {
60  // Range is empty if at least one dimension is empty.
61  return my_pages.empty() || my_rows.empty() || my_cols.empty();
62  }
bool empty() const
True if range is empty.
Definition: blocked_range.h:89
col_range_type my_cols
row_range_type my_rows
page_range_type my_pages

References tbb::blocked_range< Value >::empty(), tbb::blocked_range3d< PageValue, RowValue, ColValue >::my_cols, tbb::blocked_range3d< PageValue, RowValue, ColValue >::my_pages, and tbb::blocked_range3d< PageValue, RowValue, ColValue >::my_rows.

Here is the call graph for this function:

◆ is_divisible()

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
bool tbb::blocked_range3d< PageValue, RowValue, ColValue >::is_divisible ( ) const
inline

True if range is divisible into two pieces.

Definition at line 65 of file blocked_range3d.h.

65  {
67  }
col_range_type my_cols
row_range_type my_rows
page_range_type my_pages
bool is_divisible() const
True if range is divisible.
Definition: blocked_range.h:93

References tbb::blocked_range< Value >::is_divisible(), tbb::blocked_range3d< PageValue, RowValue, ColValue >::my_cols, tbb::blocked_range3d< PageValue, RowValue, ColValue >::my_pages, and tbb::blocked_range3d< PageValue, RowValue, ColValue >::my_rows.

Here is the call graph for this function:

◆ pages()

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
const page_range_type& tbb::blocked_range3d< PageValue, RowValue, ColValue >::pages ( ) const
inline

The pages of the iteration space.

Definition at line 92 of file blocked_range3d.h.

92 {return my_pages;}
page_range_type my_pages

References tbb::blocked_range3d< PageValue, RowValue, ColValue >::my_pages.

◆ rows()

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
const row_range_type& tbb::blocked_range3d< PageValue, RowValue, ColValue >::rows ( ) const
inline

The rows of the iteration space.

Definition at line 95 of file blocked_range3d.h.

95 {return my_rows;}
row_range_type my_rows

References tbb::blocked_range3d< PageValue, RowValue, ColValue >::my_rows.

Member Data Documentation

◆ is_splittable_in_proportion

template<typename PageValue , typename RowValue = PageValue, typename ColValue = RowValue>
const bool tbb::blocked_range3d< PageValue, RowValue, ColValue >::is_splittable_in_proportion = true
static

Static field to support proportional split.

Definition at line 80 of file blocked_range3d.h.

◆ my_cols

◆ my_pages

◆ my_rows


The documentation for this class was generated from the following file:

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.