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, 14 >
 type definition for the serialization of configurations.
 

Functions

size_t getSearchSpaceSize (const std::set< ContainerOption > &containerOptions, const NumberSet< double > &cellSizeFactors, const std::set< TraversalOption > &traversalOptions, const std::set< LoadEstimatorOption > &loadEstimatorOptions, const std::set< DataLayoutOption > &dataLayoutOptions, const std::set< Newton3Option > &newton3Options, const InteractionTypeOption &interactionTypeOption)
 Calculates the maximum number of valid configs from several sets of options.
 
void generateDistribution (const int numConfigs, const int commSize, const int rank, std::set< ContainerOption > &containerOptions, NumberSet< double > &cellSizeFactors, std::set< TraversalOption > &traversalOptions, std::set< LoadEstimatorOption > &loadEstimatorOptions, std::set< DataLayoutOption > &dataLayoutOptions, std::set< Newton3Option > &newton3Options, const InteractionTypeOption interactionType)
 Calculates which Options the current rank should handle based on the total number of options and ranks.
 
void distributeConfigurations (std::set< ContainerOption > &containerOptions, NumberSet< double > &cellSizeFactors, std::set< TraversalOption > &traversalOptions, std::set< LoadEstimatorOption > &loadEstimatorOptions, std::set< DataLayoutOption > &dataLayoutOptions, std::set< Newton3Option > &newton3Options, InteractionTypeOption interactionTypeOption, int rank, int commSize)
 Distributes the provided configurations globally for equal work loads.
 
Configuration findGloballyBestConfiguration (AutoPas_MPI_Comm comm, Configuration localOptimalConfig, long localOptimalTime)
 Handles communication to select the globally best configuration.
 
SerializedConfiguration serializeConfiguration (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 (SerializedConfiguration config)
 Recreates a Configuration object from the object obtained by _serializeConfiguration.
 
std::vector< ConfigurationdeserializeConfigurations (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 smoothedHomogeneity, double maxDensity, double MPITuningMaxDifferenceForBucket, double MPITuningWeightForMaxDensity)
 Distribute ranks in buckets, which contain only ranks with similar scenarios.
 
std::vector< ConfigurationgatherConfigurations (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.
 
template<typename TOption >
std::byte castToByte (TOption option)
 Simply a shorter way of static_casting from Option to std::byte.
 

Detailed Description

Provides several functions for handling configurations among mpi ranks.

This includes functionality for (de)serialization of configurations, splitting up search spaces based on ranks, and finding the globally optimal configuration given time measurements.

Typedef Documentation

◆ SerializedConfiguration

type definition for the serialization of configurations.

A serialized config is an array of 14 bytes.

Function Documentation

◆ castToByte()

template<typename TOption >
std::byte autopas::utils::AutoPasConfigurationCommunicator::castToByte ( TOption  option)
inline

Simply a shorter way of static_casting from Option to std::byte.

Template Parameters
TOption
Parameters
option
Returns

◆ deserializeConfiguration()

Configuration autopas::utils::AutoPasConfigurationCommunicator::deserializeConfiguration ( 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

◆ distributeConfigurations()

void autopas::utils::AutoPasConfigurationCommunicator::distributeConfigurations ( std::set< ContainerOption > &  containerOptions,
NumberSet< double > &  cellSizeFactors,
std::set< TraversalOption > &  traversalOptions,
std::set< LoadEstimatorOption > &  loadEstimatorOptions,
std::set< DataLayoutOption > &  dataLayoutOptions,
std::set< Newton3Option > &  newton3Options,
InteractionTypeOption  interactionTypeOption,
int  rank,
int  commSize 
)

Distributes the provided configurations globally for equal work loads.

All parameters' values (except for comm) are only relevant at the root node (0). All parameters' values (except for comm) will be changed by this function.

Parameters
containerOptions
cellSizeFactors
traversalOptions
loadEstimatorOptions
dataLayoutOptions
newton3Options
interactionTypeOption
rank
commSize

◆ distributeRanksInBuckets()

void autopas::utils::AutoPasConfigurationCommunicator::distributeRanksInBuckets ( AutoPas_MPI_Comm  comm,
AutoPas_MPI_Comm bucket,
double  smoothedHomogeneity,
double  maxDensity,
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 homogeneity or density are passed, every rank gets its own bucket.

Parameters
commMPI communicator
bucketnew MPI communicator for its bucket
smoothedHomogeneityhomogeneity smoothed over last 10 iterations.
maxDensitymaxDensity smoothed over last 10 iterations.
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

◆ generateDistribution()

void autopas::utils::AutoPasConfigurationCommunicator::generateDistribution ( const int  numConfigs,
const int  commSize,
const int  rank,
std::set< ContainerOption > &  containerOptions,
NumberSet< double > &  cellSizeFactors,
std::set< TraversalOption > &  traversalOptions,
std::set< LoadEstimatorOption > &  loadEstimatorOptions,
std::set< DataLayoutOption > &  dataLayoutOptions,
std::set< Newton3Option > &  newton3Options,
const InteractionTypeOption  interactionType 
)

Calculates which Options the current rank should handle based on the total number of options and ranks.

Parameters
numConfigsin
commSizein
rankin
containerOptionsinout
cellSizeFactorsinout
traversalOptionsinout
loadEstimatorOptionsinout
dataLayoutOptionsinout
newton3Optionsinout
interactionTypeHandle configurations for this interaction type

◆ getSearchSpaceSize()

size_t autopas::utils::AutoPasConfigurationCommunicator::getSearchSpaceSize ( const std::set< ContainerOption > &  containerOptions,
const NumberSet< double > &  cellSizeFactors,
const std::set< TraversalOption > &  traversalOptions,
const std::set< LoadEstimatorOption > &  loadEstimatorOptions,
const std::set< DataLayoutOption > &  dataLayoutOptions,
const std::set< Newton3Option > &  newton3Options,
const InteractionTypeOption &  interactionTypeOption 
)

Calculates the maximum number of valid configs from several sets of options.

This does not equal the cartesian product as not all containers are compatible with all traversals.

Parameters
containerOptions
cellSizeFactorsThe size of cellSizeFactors will only be taken into account if the NumberSet is finite.
traversalOptions
loadEstimatorOptions
dataLayoutOptions
newton3Options
interactionTypeOption
Returns

◆ serializeConfiguration()

SerializedConfiguration autopas::utils::AutoPasConfigurationCommunicator::serializeConfiguration ( 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.