libMesh::Threads::BlockedRange< T > Class Template Reference

#include <threads.h>

Public Types

typedef T const_iterator
 

Public Member Functions

 BlockedRange (const unsigned int new_grainsize=1000)
 
 BlockedRange (const const_iterator first, const const_iterator last, const unsigned int new_grainsize=1000)
 
 BlockedRange (const BlockedRange< T > &r)
 
 BlockedRange (BlockedRange< T > &r, Threads::split)
 
void reset (const const_iterator first, const const_iterator last)
 
const_iterator begin () const
 
const_iterator end () const
 
unsigned int grainsize () const
 
void grainsize (const unsigned int &gs)
 
int size () const
 
bool empty () const
 
bool is_divisible () const
 

Private Attributes

const_iterator _end
 
const_iterator _begin
 
unsigned int _grainsize
 

Detailed Description

template<typename T>
class libMesh::Threads::BlockedRange< T >

Blocked range which can be subdivided and executed in parallel.

Definition at line 907 of file threads.h.

Member Typedef Documentation

template<typename T>
typedef T libMesh::Threads::BlockedRange< T >::const_iterator

Allows an StoredRange to behave like an STL container.

Definition at line 913 of file threads.h.

Constructor & Destructor Documentation

template<typename T>
libMesh::Threads::BlockedRange< T >::BlockedRange ( const unsigned int  new_grainsize = 1000)
inlineexplicit

Constructor. Optionally takes the grainsize parameter, which is the smallest chunk the range may be broken into for parallel execution.

Definition at line 920 of file threads.h.

920  :
921  _grainsize(new_grainsize)
922  {}
template<typename T>
libMesh::Threads::BlockedRange< T >::BlockedRange ( const const_iterator  first,
const const_iterator  last,
const unsigned int  new_grainsize = 1000 
)
inline

Constructor. Takes the beginning and end of the range. Optionally takes the grainsize parameter, which is the smallest chunk the range may be broken into for parallel execution.

Definition at line 930 of file threads.h.

References libMesh::Threads::BlockedRange< T >::reset().

932  :
933  _grainsize(new_grainsize)
934  {
935  this->reset(first, last);
936  }
template<typename T>
libMesh::Threads::BlockedRange< T >::BlockedRange ( const BlockedRange< T > &  r)
inline

Copy constructor. The StoredRange can be copied into subranges for parallel execution. In this way the initial StoredRange can be thought of as the root of a binary tree. The root element is the only element which interacts with the user. It takes a specified range of objects and packs it into a contiguous vector which can be split efficiently. However, there is no need for the child ranges to contain this vector, so long as the parent outlives the children. So we implement the copy constructor to specifically omit the _objs vector.

Definition at line 951 of file threads.h.

951  :
952  _end(r._end),
953  _begin(r._begin),
954  _grainsize(r._grainsize)
955  {}
template<typename T>
libMesh::Threads::BlockedRange< T >::BlockedRange ( BlockedRange< T > &  r,
Threads::split   
)
inline

Splits the range r. The first half of the range is left in place, the second half of the range is placed in *this.

Definition at line 962 of file threads.h.

References libMesh::Threads::BlockedRange< T >::_begin, and libMesh::Threads::BlockedRange< T >::_end.

962  :
963  _end(r._end),
964  _begin(r._begin),
965  _grainsize(r._grainsize)
966  {
968  beginning = r._begin,
969  ending = r._end,
970  middle = beginning + (ending - beginning)/2u;
971 
972  r._end = _begin = middle;
973  }

Member Function Documentation

template<typename T>
const_iterator libMesh::Threads::BlockedRange< T >::begin ( ) const
inline

Beginning of the range.

Definition at line 988 of file threads.h.

References libMesh::Threads::BlockedRange< T >::_begin.

988 { return _begin; }
template<typename T>
bool libMesh::Threads::BlockedRange< T >::empty ( ) const
inline

Returns true if the range is empty.

Definition at line 1018 of file threads.h.

References libMesh::Threads::BlockedRange< T >::_begin, and libMesh::Threads::BlockedRange< T >::_end.

1018 { return (_begin == _end); }
template<typename T>
const_iterator libMesh::Threads::BlockedRange< T >::end ( ) const
inline

End of the range.

Definition at line 993 of file threads.h.

References libMesh::Threads::BlockedRange< T >::_end.

993 { return _end; }
template<typename T>
unsigned int libMesh::Threads::BlockedRange< T >::grainsize ( ) const
inline

The grain size for the range. The range will be subdivided into subranges not to exceed the grain size.

Definition at line 999 of file threads.h.

References libMesh::Threads::BlockedRange< T >::_grainsize.

Referenced by libMesh::Threads::BlockedRange< T >::is_divisible().

999 {return _grainsize;}
template<typename T>
void libMesh::Threads::BlockedRange< T >::grainsize ( const unsigned int &  gs)
inline

Set the grain size.

Definition at line 1004 of file threads.h.

References libMesh::Threads::BlockedRange< T >::_grainsize.

1004 {_grainsize = gs;}
template<typename T>
bool libMesh::Threads::BlockedRange< T >::is_divisible ( ) const
inline

Returns true if the range can be subdivided.

Definition at line 1023 of file threads.h.

References libMesh::Threads::BlockedRange< T >::_begin, libMesh::Threads::BlockedRange< T >::_end, and libMesh::Threads::BlockedRange< T >::grainsize().

1023 { return ((_begin + this->grainsize()) < _end); }
template<typename T>
void libMesh::Threads::BlockedRange< T >::reset ( const const_iterator  first,
const const_iterator  last 
)
inline

Resets the StoredRange to contain [first,last).

Definition at line 978 of file threads.h.

References libMesh::Threads::BlockedRange< T >::_begin, and libMesh::Threads::BlockedRange< T >::_end.

Referenced by libMesh::Threads::BlockedRange< T >::BlockedRange().

980  {
981  _begin = first;
982  _end = last;
983  }
template<typename T>
int libMesh::Threads::BlockedRange< T >::size ( ) const
inline
Returns
the size of the range.

Definition at line 1009 of file threads.h.

References libMesh::Threads::BlockedRange< T >::_begin, and libMesh::Threads::BlockedRange< T >::_end.

1009 { return (_end -_begin); }

Member Data Documentation

template<typename T>
unsigned int libMesh::Threads::BlockedRange< T >::_grainsize
private

Definition at line 1029 of file threads.h.

Referenced by libMesh::Threads::BlockedRange< T >::grainsize().


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

Site Created By: libMesh Developers
Last modified: February 07 2014 16:57:34 UTC

Hosted By:
SourceForge.net Logo