Dakota  Version 6.16
Explore and Predict with Confidence
 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 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
bool null (const MPI_Comm &comm)
 test comm for MPI_COMM_NULL
bool special (const MPI_Comm &comm)
 test comm for special identity that cannot be deallocated
void clear ()
 deallocate the communicators in this ParallelLevel More...
void alias (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 ownCommFlag
 signals Comm ownership for deallocation
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,

< indicating work assignment among servers

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::dedicatedMasterFlag, ParallelLevel::hubServerInterComm, ParallelLevel::hubServerInterComms, ParallelLevel::hubServerIntraComm, ParallelLevel::idlePartition, ParallelLevel::numServers, ParallelLevel::ownCommFlag, ParallelLevel::serverId, ParallelLevel::serverIntraComm, and ParallelLevel::special().

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