Dakota
Version
Explore and Predict with Confidence
|
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 | |
ParallelLevel & | operator= (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 | |
Friends | |
class | ParallelLibrary |
the ParallelLibrary class has special access priveleges in order to streamline implementation | |
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.
|
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::dedicatedMasterFlag, ParallelLevel::hubServerInterComm, ParallelLevel::hubServerInterComms, ParallelLevel::hubServerIntraComm, ParallelLevel::idlePartition, ParallelLevel::numServers, ParallelLevel::ownCommFlag, ParallelLevel::serverId, ParallelLevel::serverIntraComm, and ParallelLevel::special().