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 ()
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


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 ( )

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: