Dakota  Version 6.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
ParallelConfiguration Class Reference

Container class for a set of ParallelLevel list iterators that collectively identify a particular multilevel parallel configuration. More...

Public Member Functions

 ParallelConfiguration ()
 default constructor
 
 ParallelConfiguration (const ParallelConfiguration &pl)
 copy constructor
 
 ~ParallelConfiguration ()
 destructor
 
ParallelConfigurationoperator= (const ParallelConfiguration &pl)
 assignment operator
 
const ParallelLevelw_parallel_level () const
 return the ParallelLevel corresponding to miPLIters.front()
 
const ParallelLevelmi_parallel_level (size_t index=_NPOS) const
 return the ParallelLevel corresponding to miPLIters[index] More...
 
const ParallelLevelie_parallel_level () const
 return the ParallelLevel corresponding to iePLIter
 
const ParallelLevelea_parallel_level () const
 return the ParallelLevel corresponding to eaPLIter
 
bool w_parallel_level_defined () const
 test for definition of world parallel level
 
bool mi_parallel_level_defined (size_t index=_NPOS) const
 test for definition of meta-iterator-iterator parallel level
 
bool ie_parallel_level_defined () const
 test for definition of iterator-evaluation parallel level
 
bool ea_parallel_level_defined () const
 test for definition of evaluation-analysis parallel level
 
ParLevLIter w_parallel_level_iterator () const
 return miPLIters.front()
 
ParLevLIter mi_parallel_level_iterator (size_t index=_NPOS) const
 return miPLIters[index] More...
 
ParLevLIter ie_parallel_level_iterator () const
 return iePLIter
 
ParLevLIter ea_parallel_level_iterator () const
 return eaPLIter
 
size_t mi_parallel_level_index (ParLevLIter pl_iter) const
 return the index within miPLIters corresponding to pl_iter
 
size_t mi_parallel_level_last_index () const
 return the index of the last entry in miPLIters
 

Private Member Functions

void assign (const ParallelConfiguration &pl)
 assign the attributes of the incoming pl to this object
 

Private Attributes

short numParallelLevels
 number of parallel levels
 
std::vector< ParLevLIter > miPLIters
 list iterator for world level followed by any concurrent iterator partitions (there may be multiple per parallel configuration instance)
 
ParLevLIter iePLIter
 list iterator identifying the iterator-evaluation parallelLevel (there can only be one)
 
ParLevLIter eaPLIter
 list iterator identifying the evaluation-analysis parallelLevel (there can only be one)
 
ParLevLIter endPLIter
 snapshot of the end of ParallelLibrary::parallelLevels; used for detecting when a component of the parallel configuration has been initialized
 

Friends

class ParallelLibrary
 the ParallelLibrary class has special access priveleges in order to streamline implementation
 

Detailed Description

Container class for a set of ParallelLevel list iterators that collectively identify a particular multilevel parallel configuration.

Rather than containing the multilevel parallel configuration directly, ParallelConfiguration instead provides a set of list iterators which point into a combined list of ParallelLevels. This approach allows different configurations to reuse ParallelLevels without copying them. A list of ParallelConfigurations is contained in ParallelLibrary (ParallelLibrary::parallelConfigurations).

Member Function Documentation

const ParallelLevel & mi_parallel_level ( size_t  index = _NPOS) const
inline

return the ParallelLevel corresponding to miPLIters[index]

If a meaningful index is not provided, return the last mi parallel level. This is useful within the Model context, for which we need the lowest level partition after any meta-iterator recursions.

References Dakota::_NPOS, and ParallelConfiguration::miPLIters.

Referenced by ApplicationInterface::set_evaluation_communicators().

ParLevLIter mi_parallel_level_iterator ( size_t  index = _NPOS) const
inline

return miPLIters[index]

If a meaningful index is not provided, return the last mi parallel level. This is useful within the Model context, for which we need the lowest level partition after any meta-iterator recursions.

References Dakota::_NPOS, and ParallelConfiguration::miPLIters.


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