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

Container class for the data associated with a single level of communicator partitioning. More...

Public Member Functions

 ParallelLevel ()
 default constructor
 
 ParallelLevel (const ParallelLevel &pl)
 copy constructor
 
 ~ParallelLevel ()
 destructor
 
ParallelLeveloperator= (const ParallelLevel &pl)
 assignment operator
 
bool dedicated_master () const
 return dedicatedMasterFlag
 
bool communicator_split () const
 return commSplitFlag
 
bool server_master () const
 return serverMasterFlag
 
bool message_pass () const
 return messagePass
 
bool idle_partition () const
 return idlePartition
 
int num_servers () const
 return numServers
 
int processors_per_server () const
 return procsPerServer
 
int processor_remainder () const
 return procRemainder
 
const MPI_Comm & server_intra_communicator () const
 return serverIntraComm
 
int server_communicator_rank () const
 return serverCommRank
 
int server_communicator_size () const
 return serverCommSize
 
const MPI_Comm & hub_server_intra_communicator () const
 return hubServerIntraComm
 
int hub_server_communicator_rank () const
 return hubServerCommRank
 
int hub_server_communicator_size () const
 return hubServerCommSize
 
const MPI_Comm & hub_server_inter_communicator () const
 return hubServerInterComm
 
MPI_Comm * hub_server_inter_communicators () const
 return hubServerInterComms
 
int server_id () const
 return serverId
 
void read (MPIUnpackBuffer &s)
 read a ParallelLevel object from a packed MPI buffer
 
void write (MPIPackBuffer &s) const
 write a ParallelLevel object to a packed MPI buffer
 
void clear ()
 deallocate the communicators in this ParallelLevel More...
 
void assign (const ParallelLevel &pl)
 assign the attributes of the incoming pl to this object. For communicators, this is a lightweight copy which assigns the same pointer values as the incoming pl, resulting in the same context.
 
void copy (const ParallelLevel &pl)
 deep copy the attributes of the incoming pl to this object using MPI_Comm_dup to create equivalent communicators with a unique context.
 
void copy_config (const ParallelLevel &pl)
 copy the scalar attributes of the incoming pl to this object, omitting communicators
 

Private Attributes

bool dedicatedMasterFlag
 signals dedicated master partitioning
 
bool commSplitFlag
 signals a communicator split was used
 
bool serverMasterFlag
 identifies master server processors
 
bool messagePass
 flag for message passing at this level
 
bool idlePartition
 
 identifies presence of an idle processor

< partition at this level

 
int numServers
 number of servers
 
int procsPerServer
 processors per server
 
int procRemainder
 proc remainder after equal distribution
 
int serverId
 server identifier
 
MPI_Comm serverIntraComm
 intracomm. for each server partition
 
int serverCommRank
 rank in serverIntraComm
 
int serverCommSize
 size of serverIntraComm
 
MPI_Comm hubServerIntraComm
 
 intracomm for all serverCommRank==0

< w/i next higher level serverIntraComm

 
int hubServerCommRank
 rank in hubServerIntraComm
 
int hubServerCommSize
 size of hubServerIntraComm
 
MPI_Comm hubServerInterComm
 
 intercomm. between a server & the hub  

< (on server partitions only)

 
MPI_Comm * hubServerInterComms
 intercomm. array on hub processor
 

Friends

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

Detailed Description

Container class for the data associated with a single level of communicator partitioning.

A list of these levels is contained in ParallelLibrary (ParallelLibrary::parallelLevels), which defines all of the parallelism levels across one or more multilevel parallelism configurations.

Member Function Documentation

void clear ( )
inline

deallocate the communicators in this ParallelLevel

This appears to be more robust outside of the destructor due to interactions among managed deallocation and default deallocation (e.g., explicitly freeing a communicator and then default deallocating its handle).

References ParallelLevel::commSplitFlag, ParallelLevel::dedicatedMasterFlag, ParallelLevel::hubServerInterComm, ParallelLevel::hubServerInterComms, ParallelLevel::hubServerIntraComm, ParallelLevel::idlePartition, ParallelLevel::numServers, ParallelLevel::serverId, and ParallelLevel::serverIntraComm.


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