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"
19
27
31using SerializedConfiguration = std::array<std::byte, 14>;
32
39template <typename TOption>
40inline std::byte castToByte(TOption option) {
41 return static_cast<std::byte>(static_cast<typename TOption::Value>(option));
42}
43
56size_t getSearchSpaceSize(const std::set<ContainerOption> &containerOptions, const NumberSet<double> &cellSizeFactors,
57 const std::set<TraversalOption> &traversalOptions,
58 const std::set<LoadEstimatorOption> &loadEstimatorOptions,
59 const std::set<DataLayoutOption> &dataLayoutOptions,
60 const std::set<Newton3Option> &newton3Options,
61 const InteractionTypeOption &interactionTypeOption);
62
77void distributeConfigurations(std::set<ContainerOption> &containerOptions, NumberSet<double> &cellSizeFactors,
78 std::set<TraversalOption> &traversalOptions,
79 std::set<LoadEstimatorOption> &loadEstimatorOptions,
80 std::set<DataLayoutOption> &dataLayoutOptions, std::set<Newton3Option> &newton3Options,
81 InteractionTypeOption interactionTypeOption, int rank, int commSize);
82
97void distributeRanksInBuckets(AutoPas_MPI_Comm comm, AutoPas_MPI_Comm *bucket, double smoothedHomogeneity,
98 double maxDensity, double MPITuningMaxDifferenceForBucket,
99 double MPITuningWeightForMaxDensity);
100
107
113std::vector<std::byte> serializeConfigurations(const std::vector<Configuration> &configurations);
114
121
127std::vector<Configuration> deserializeConfigurations(const std::vector<std::byte> &configurationsSerialized);
128
137 long localOptimalTime);
138
146std::vector<Configuration> gatherConfigurations(AutoPas_MPI_Comm comm,
147 const std::vector<Configuration> &localConfigurations, int root);
148
149} // 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
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:40
std::array< std::byte, 14 > SerializedConfiguration
type definition for the serialization of configurations.
Definition: AutoPasConfigurationCommunicator.h:31
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 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.
Definition: AutoPasConfigurationCommunicator.cpp:238
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