$extrastylesheet
Dakota  Version 6.2
Public Member Functions | Private Member Functions | Private Attributes | Friends
ParallelLevel Class Reference

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

List of all members.

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

Private Member Functions

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

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: