AutoPas  3.0.0
Loading...
Searching...
No Matches
AutoPasConfigurationCommunicator.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <array>
10#include <cstddef>
11#include <vector>
12
13#include "WrapMPI.h"
18
26
30using SerializedConfiguration = std::array<std::byte, 14>;
31
38template <typename TOption>
39inline std::byte castToByte(TOption option) {
40 return static_cast<std::byte>(static_cast<typename TOption::Value>(option));
41}
42
55size_t getSearchSpaceSize(const std::set<ContainerOption> &containerOptions, const NumberSet<double> &cellSizeFactors,
56 const std::set<TraversalOption> &traversalOptions,
57 const std::set<LoadEstimatorOption> &loadEstimatorOptions,
58 const std::set<DataLayoutOption> &dataLayoutOptions,
59 const std::set<Newton3Option> &newton3Options,
60 const InteractionTypeOption &interactionTypeOption);
61
76void distributeConfigurations(std::set<ContainerOption> &containerOptions, NumberSet<double> &cellSizeFactors,
77 std::set<TraversalOption> &traversalOptions,
78 std::set<LoadEstimatorOption> &loadEstimatorOptions,
79 std::set<DataLayoutOption> &dataLayoutOptions, std::set<Newton3Option> &newton3Options,
80 InteractionTypeOption interactionTypeOption, int rank, int commSize);
81
98void distributeRanksInBuckets(AutoPas_MPI_Comm comm, AutoPas_MPI_Comm *bucket, double smoothedPDBinStdDevDensity,
99 double smoothedPDBinMaxDensity, double MPITuningMaxDifferenceForBucket,
100 double MPITuningWeightForMaxDensity);
101
108
114std::vector<std::byte> serializeConfigurations(const std::vector<Configuration> &configurations);
115
122
128std::vector<Configuration> deserializeConfigurations(const std::vector<std::byte> &configurationsSerialized);
129
138 long localOptimalTime);
139
147std::vector<Configuration> gatherConfigurations(AutoPas_MPI_Comm comm,
148 const std::vector<Configuration> &localConfigurations, int root);
149
150} // namespace autopas::utils::AutoPasConfigurationCommunicator
Class containing multiple options that form an algorithm configuration for the pairwise iteration.
Definition: Configuration.h:24
Virtual class describing a finite or infinite set of numbers.
Definition: NumberSet.h:22
Provides several functions for handling configurations among mpi ranks.
Definition: AutoPasConfigurationCommunicator.cpp:15
Configuration findGloballyBestConfiguration(AutoPas_MPI_Comm comm, Configuration localOptimalConfig, long localOptimalTime)
Handles communication to select the globally best configuration.
Definition: AutoPasConfigurationCommunicator.cpp:159
SerializedConfiguration serializeConfiguration(Configuration configuration)
Serializes a configuration object for communication via MPI.
Definition: AutoPasConfigurationCommunicator.cpp:183
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.
Definition: AutoPasConfigurationCommunicator.cpp:238
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...
Definition: AutoPasConfigurationCommunicator.cpp:290
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.
Definition: AutoPasConfigurationCommunicator.cpp:17
std::byte castToByte(TOption option)
Simply a shorter way of static_casting from Option to std::byte.
Definition: AutoPasConfigurationCommunicator.h:39
std::array< std::byte, 14 > SerializedConfiguration
type definition for the serialization of configurations.
Definition: AutoPasConfigurationCommunicator.h:30
std::vector< Configuration > deserializeConfigurations(const std::vector< std::byte > &configurationsSerialized)
Deserialize a vector of bytes into a vector of configurations.
Definition: AutoPasConfigurationCommunicator.cpp:221
Configuration deserializeConfiguration(SerializedConfiguration config)
Recreates a Configuration object from the object obtained by _serializeConfiguration.
Definition: AutoPasConfigurationCommunicator.cpp:210
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 interactionType, const int rank, const int commSize)
Distributes the provided configurations globally for equal work loads.
Definition: AutoPasConfigurationCommunicator.cpp:131
std::vector< std::byte > serializeConfigurations(const std::vector< Configuration > &configurations)
Serialize a vector of configuration objects into a vector of bytes via serializeConfiguration().
Definition: AutoPasConfigurationCommunicator.cpp:197
AutoPas_MPI_Comm
Dummy for MPI_Comm.
Definition: WrapMPI.h:113