75 return os << configuration.
toString();
96 autopas::InteractionTypeOption interactionType,
97 const std::set<autopas::ContainerOption> &allowedContainerOptions = autopas::ContainerOption::getAllOptions(),
98 const std::set<autopas::TraversalOption> &allowedTraversalOptions = autopas::TraversalOption::getAllOptions(),
99 const std::set<autopas::LoadEstimatorOption> &allowedLoadEstimatorOptions =
100 autopas::LoadEstimatorOption::getAllOptions(),
101 const std::set<autopas::DataLayoutOption> &allowedDataLayoutOptions = autopas::DataLayoutOption::getAllOptions(),
102 const std::set<autopas::Newton3Option> &allowedNewton3Options = autopas::Newton3Option::getAllOptions(),
103 const std::set<double> &allowedCellSizeFactors = {0.5, 1.0, 1.5},
104 const std::set<autopas::VectorizationPatternOption> &allowedVectorPatterns =
105 autopas::VectorizationPatternOption::getAllOptions()) {
107 if (interactionType == autopas::InteractionTypeOption::all) {
108 std::set<autopas::Configuration> allConfigs;
109 for (
auto iType :
autopas::InteractionTypeOption::getMostOptions()) {
111 allowedContainerOptions, allowedTraversalOptions, allowedLoadEstimatorOptions, allowedDataLayoutOptions,
112 allowedNewton3Options, &csfs, allowedVectorPatterns, iType);
113 allConfigs.insert(configs.begin(), configs.end());
118 allowedContainerOptions, allowedTraversalOptions, allowedLoadEstimatorOptions, allowedDataLayoutOptions,
119 allowedNewton3Options, &csfs, allowedVectorPatterns, interactionType);
132 const std::set<autopas::ContainerOption> &allowedContainerOptions = autopas::ContainerOption::getAllOptions(),
133 const std::set<double> &allowedCellSizeFactors = {0.5, 1.0, 1.5}) {
134 std::set<ContainerConfiguration> containerConfigs;
135 for (
const auto &containerOption : allowedContainerOptions) {
136 for (
const auto csf : allowedCellSizeFactors) {
140 const auto interactionType = autopas::InteractionTypeOption(autopas::InteractionTypeOption::pairwise);
142 if (traversals.empty()) {
144 "{} has no compatible traversals with interaction type {}! This "
145 "suggests that either that something is incorrect with this "
146 "container or that generateAllValidContainerConfigurations's "
147 "assumption that all containers have at least one {} compatible "
148 "traversal no longer holds!",
149 containerOption.to_string(), interactionType.to_string(), interactionType.to_string());
152 const auto &traversalOption = *traversals.begin();
154 containerOption, traversalOption, autopas::LoadEstimatorOption::getAllOptions());
155 if (loadEstimators.empty()) {
157 "{} with traversal {} has no applicable load estimators! Either "
158 "something is incorrect or generateAllValidContainerConfigurations's "
159 "assumption that there is always an applicable load estimator (even "
160 "if 'none') no longer holds.");
163 const auto &loadEstimatorOption = *loadEstimators.begin();
169 autopas::DataLayoutOption::aos,
170 autopas::Newton3Option::enabled,
172 if (configuration.hasCompatibleValues()) {
173 containerConfigs.insert({containerOption, csf});
177 return containerConfigs;
static const std::set< TraversalOption > & allCompatibleTraversals(ContainerOption containerOption, const InteractionTypeOption interactionTypeOption)
Lists all traversal options applicable for the given container.
Definition: CompatibleTraversals.h:183
std::set< autopas::Configuration > generateAllValidConfigurations(autopas::InteractionTypeOption interactionType, const std::set< autopas::ContainerOption > &allowedContainerOptions=autopas::ContainerOption::getAllOptions(), const std::set< autopas::TraversalOption > &allowedTraversalOptions=autopas::TraversalOption::getAllOptions(), const std::set< autopas::LoadEstimatorOption > &allowedLoadEstimatorOptions=autopas::LoadEstimatorOption::getAllOptions(), const std::set< autopas::DataLayoutOption > &allowedDataLayoutOptions=autopas::DataLayoutOption::getAllOptions(), const std::set< autopas::Newton3Option > &allowedNewton3Options=autopas::Newton3Option::getAllOptions(), const std::set< double > &allowedCellSizeFactors={0.5, 1.0, 1.5}, const std::set< autopas::VectorizationPatternOption > &allowedVectorPatterns=autopas::VectorizationPatternOption::getAllOptions())
Generates all valid configurations for a given interaction type or all interaction types.
Definition: GenerateValidConfigurations.h:95
std::set< ContainerConfiguration > generateAllValidContainerConfigurations(const std::set< autopas::ContainerOption > &allowedContainerOptions=autopas::ContainerOption::getAllOptions(), const std::set< double > &allowedCellSizeFactors={0.5, 1.0, 1.5})
Generates all valid container configurations.
Definition: GenerateValidConfigurations.h:131
std::ostream & operator<<(std::ostream &os, const ContainerConfiguration &configuration)
Stream operator for ContainerConfiguration.
Definition: GenerateValidConfigurations.h:74
Class containing multiple options that form an algorithm configuration for the pairwise iteration.
Definition: Configuration.h:26
Class describing a finite set of numbers.
Definition: NumberSetFinite.h:19
static void exception(const Exception e)
Handle an exception derived by std::exception.
Definition: ExceptionHandler.h:64
std::set< Configuration > cartesianProduct(const std::set< ContainerOption > &allowedContainerOptions, const std::set< TraversalOption > &allowedTraversalOptions, const std::set< LoadEstimatorOption > &allowedLoadEstimatorOptions, const std::set< DataLayoutOption > &allowedDataLayoutOptions, const std::set< Newton3Option > &allowedNewton3Options, const NumberSet< double > *allowedCellSizeFactors, const std::set< VectorizationPatternOption > &allowedVecPatternOptions, const InteractionTypeOption &interactionType)
Fills the search space with the cartesian product of the given options (minus invalid combinations).
Definition: SearchSpaceGenerators.cpp:18
static std::set< autopas::LoadEstimatorOption > getApplicableLoadEstimators(autopas::ContainerOption container, autopas::TraversalOption traversal, const std::set< autopas::LoadEstimatorOption > &allowedOptions)
If traversal uses load estimation, returns all load estimators in allowedOptions, that are compatible...
Definition: CompatibleLoadEstimators.h:79
This is the main namespace of AutoPas.
Definition: AutoPasDecl.h:34
Struct to hold a container and a cell size factor.
Definition: GenerateValidConfigurations.h:24
double cellSizeFactor
The cell size factor.
Definition: GenerateValidConfigurations.h:32
bool operator==(const ContainerConfiguration &rhs) const
Equality operator.
Definition: GenerateValidConfigurations.h:39
autopas::ContainerOption container
The container option.
Definition: GenerateValidConfigurations.h:28
std::string toString() const
String representation of the configuration.
Definition: GenerateValidConfigurations.h:63
bool operator!=(const ContainerConfiguration &rhs) const
Inequality operator.
Definition: GenerateValidConfigurations.h:48
bool operator<(const ContainerConfiguration &rhs) const
Comparison operator.
Definition: GenerateValidConfigurations.h:55