![]() |
Dakota
Version 6.19
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().