AutoPas  3.0.0
Loading...
Searching...
No Matches
Typedefs | Functions
autopas::utils::AutoPasConfigurationCommunicator Namespace Reference

Provides several functions for handling configurations among mpi ranks. More...

Typedefs

using SerializedConfiguration = std::array< std::byte, serializedConfigurationSize >
 Type definition for the serialization of configurations.
 

Functions

Configuration findGloballyBestConfiguration (AutoPas_MPI_Comm comm, Configuration localOptimalConfig, long localOptimalTime)
 Handles communication to select the globally best configuration.
 
SerializedConfiguration serializeConfiguration (const Configuration &configuration)
 Serializes a configuration object for communication via MPI.
 
std::vector< std::byte > serializeConfigurations (const std::vector< Configuration > &configurations)
 Serialize a vector of configuration objects into a vector of bytes via serializeConfiguration().
 
Configuration deserializeConfiguration (const SerializedConfiguration &config)
 Recreates a Configuration object from the object obtained by _serializeConfiguration.
 
std::vector< Configuration > deserializeConfigurations (const std::vector< std::byte > &configurationsSerialized)
 Deserialize a vector of bytes into a vector of configurations.
 
void distributeRanksInBuckets (AutoPas_MPI_Comm comm, AutoPas_MPI_Comm *bucket, double smoothedPDBinStdDevDensity, double smoothedPDBinMaxDensity, double MPITuningMaxDifferenceForBucket, double MPITuningWeightForMaxDensity)
 Distribute ranks in buckets, which contain only ranks with similar scenarios.
 
std::vector< Configuration > gatherConfigurations (AutoPas_MPI_Comm comm, const std::vector< Configuration > &localConfigurations, int root)
 Gather the configuration vectors of all ranks in the communicator into one vector at the root process.
 

Detailed Description

Provides several functions for handling configurations among mpi ranks.

This includes functionality for (de)serialization of configurations, grouping ranks into buckets of similar scenarios, and finding the globally optimal configuration given time measurements.

Function Documentation

◆ deserializeConfiguration()

Configuration autopas::utils::AutoPasConfigurationCommunicator::deserializeConfiguration ( const SerializedConfiguration &  config)

Recreates a Configuration object from the object obtained by _serializeConfiguration.

Parameters
configThe SerializedConfiguration objects returned by _serializeConfiguration.
Returns
The deserialized Configuration object.

◆ deserializeConfigurations()

std::vector< Configuration > autopas::utils::AutoPasConfigurationCommunicator::deserializeConfigurations ( const std::vector< std::byte > &  configurationsSerialized)

Deserialize a vector of bytes into a vector of configurations.

Parameters
configurationsSerialized
Returns

◆ distributeRanksInBuckets()

void autopas::utils::AutoPasConfigurationCommunicator::distributeRanksInBuckets ( AutoPas_MPI_Comm  comm,
AutoPas_MPI_Comm *  bucket,
double  smoothedPDBinStdDevDensity,
double  smoothedPDBinMaxDensity,
double  MPITuningMaxDifferenceForBucket,
double  MPITuningWeightForMaxDensity 
)

Distribute ranks in buckets, which contain only ranks with similar scenarios.

Each bucket then has its own search space.

If negative (=invalid) values for pdBinStdDevDensity or pdBinMaxDensity are passed, every rank gets its own bucket.

Parameters
commMPI communicator
bucketnew MPI communicator for its bucket
smoothedPDBinStdDevDensitystandard deviation in particle-dependent bin density smoothed over last 10 iterations. See LiveInfo::gather() for more details.
smoothedPDBinMaxDensitymaximum particle-dependent bin density smoothed over last 10 iterations. See LiveInfo::gather() for more details.
MPITuningMaxDifferenceForBucketFor MPI-tuning: Maximum of the relative difference in the comparison metric for two ranks which exchange their tuning information.
MPITuningWeightForMaxDensityFor MPI-tuning: Weight for maxDensity in the calculation for bucket distribution.

◆ findGloballyBestConfiguration()

Configuration autopas::utils::AutoPasConfigurationCommunicator::findGloballyBestConfiguration ( AutoPas_MPI_Comm  comm,
Configuration  localOptimalConfig,
long  localOptimalTime 
)

Handles communication to select the globally best configuration.

Parameters
commThe communicator used for sending and receiving the optimal configuration.
localOptimalConfigThe locally optimal configuration to be compared with others.
localOptimalTimeThe time measured for localOptimalConfig.
Returns
The globally optimal configuration.

◆ gatherConfigurations()

std::vector< Configuration > autopas::utils::AutoPasConfigurationCommunicator::gatherConfigurations ( AutoPas_MPI_Comm  comm,
const std::vector< Configuration > &  localConfigurations,
int  root 
)

Gather the configuration vectors of all ranks in the communicator into one vector at the root process.

Parameters
comm
localConfigurations
root
Returns
Combined vector of configurations

◆ serializeConfiguration()

SerializedConfiguration autopas::utils::AutoPasConfigurationCommunicator::serializeConfiguration ( const Configuration &  configuration)

Serializes a configuration object for communication via MPI.

Parameters
configurationthe configuration to be sent.
Returns
The serialization

◆ serializeConfigurations()

std::vector< std::byte > autopas::utils::AutoPasConfigurationCommunicator::serializeConfigurations ( const std::vector< Configuration > &  configurations)

Serialize a vector of configuration objects into a vector of bytes via serializeConfiguration().

Parameters
configurations
Returns
Concatenated byte representations of configurations.