AutoPas  3.0.0
Loading...
Searching...
No Matches
Configuration.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <tuple>
10
20
21namespace autopas {
22
27 public:
41 constexpr Configuration(ContainerOption _container, double _cellSizeFactor, TraversalOption _traversal,
42 LoadEstimatorOption _loadEstimator, DataLayoutOption _dataLayout, Newton3Option _newton3,
43 InteractionTypeOption _interactionType,
44 VectorizationPatternOption _vecPattern = VectorizationPatternOption::p1xVec)
45 : container(_container),
46 traversal(_traversal),
47 vecPattern(_vecPattern),
48 loadEstimator(_loadEstimator),
49 dataLayout(_dataLayout),
50 newton3(_newton3),
51 cellSizeFactor(_cellSizeFactor),
52 interactionType(_interactionType) {}
53
58 constexpr Configuration()
60
65 [[nodiscard]] std::string toString() const;
66
72 [[nodiscard]] std::string toShortString(bool fixedLength = true) const {
73 return "{" + interactionType.to_string(interactionType) + " , " + container.to_string(fixedLength) + " , " +
74 std::to_string(cellSizeFactor) + " , " + traversal.to_string(fixedLength) + " , " +
75 loadEstimator.to_string(fixedLength) + " , " + dataLayout.to_string(fixedLength) + " , " +
76 newton3.to_string(fixedLength) + "}";
77 }
78
83 [[nodiscard]] std::string getCSVHeader() const;
84
89 [[nodiscard]] std::string getCSVLine() const;
90
97 [[nodiscard]] bool hasValidValues() const;
98
103 [[nodiscard]] bool hasCompatibleValues() const;
104
110 bool equalsDiscreteOptions(const Configuration &rhs) const;
111
118 bool equalsContinuousOptions(const autopas::Configuration &rhs, double epsilon = 1e-12) const;
119
123 ContainerOption container;
127 TraversalOption traversal;
131 VectorizationPatternOption vecPattern;
139 DataLayoutOption dataLayout;
143 Newton3Option newton3;
151 InteractionTypeOption interactionType;
152
153 private:
159 [[nodiscard]] std::string getCSVRepresentation(bool returnHeaderOnly) const;
160};
161
168std::ostream &operator<<(std::ostream &os, const Configuration &configuration);
169
176std::istream &operator>>(std::istream &in, Configuration &configuration);
177
184bool operator==(const Configuration &lhs, const Configuration &rhs);
185
192bool operator!=(const Configuration &lhs, const Configuration &rhs);
193
205bool operator<(const Configuration &lhs, const Configuration &rhs);
206
216 std::size_t operator()(Configuration configuration) const {
217 std::size_t enumHash = static_cast<std::size_t>(configuration.interactionType) +
218 static_cast<std::size_t>(configuration.newton3) * 10 +
219 static_cast<std::size_t>(configuration.dataLayout) * 100 +
220 static_cast<std::size_t>(configuration.loadEstimator) * 1000 +
221 static_cast<std::size_t>(configuration.traversal) * 10000 +
222 static_cast<std::size_t>(configuration.container) * 100000;
223 std::size_t doubleHash = std::hash<double>{}(configuration.cellSizeFactor);
224
225 return enumHash ^ doubleHash;
226 }
227};
228
229} // namespace autopas
Class containing multiple options that form an algorithm configuration for the pairwise iteration.
Definition: Configuration.h:26
std::string toString() const
Returns string representation in JSON style of the configuration object.
Definition: Configuration.cpp:11
LoadEstimatorOption loadEstimator
Load Estimator option.
Definition: Configuration.h:135
TraversalOption traversal
Traversal option.
Definition: Configuration.h:127
double cellSizeFactor
CellSizeFactor.
Definition: Configuration.h:147
std::string toShortString(bool fixedLength=true) const
Returns a short string representation of the configuration object, suitable for tabular output.
Definition: Configuration.h:72
std::string getCSVHeader() const
Generate a csv header containing all keys from the toString() method.
Definition: Configuration.cpp:18
DataLayoutOption dataLayout
Data Layout option.
Definition: Configuration.h:139
InteractionTypeOption interactionType
Interaction type of the configuration.
Definition: Configuration.h:151
bool hasValidValues() const
Returns whether the configuration has been initialized with valid values or as an invalid one.
Definition: Configuration.cpp:22
constexpr Configuration()
Constructor taking no arguments.
Definition: Configuration.h:58
bool equalsDiscreteOptions(const Configuration &rhs) const
Check if all discrete options of the given configuration are equal to this'.
Definition: Configuration.cpp:105
ContainerOption container
Container option.
Definition: Configuration.h:123
bool equalsContinuousOptions(const autopas::Configuration &rhs, double epsilon=1e-12) const
Check if all continuous options of the given configuration are equal to this configuration.
Definition: Configuration.cpp:111
Newton3Option newton3
Newton 3 option.
Definition: Configuration.h:143
constexpr Configuration(ContainerOption _container, double _cellSizeFactor, TraversalOption _traversal, LoadEstimatorOption _loadEstimator, DataLayoutOption _dataLayout, Newton3Option _newton3, InteractionTypeOption _interactionType, VectorizationPatternOption _vecPattern=VectorizationPatternOption::p1xVec)
Constructor.
Definition: Configuration.h:41
VectorizationPatternOption vecPattern
Vectorization Pattern option.
Definition: Configuration.h:131
bool hasCompatibleValues() const
Checks if any of the configuration values are incompatible with each other.
Definition: Configuration.cpp:52
std::string getCSVLine() const
Generate a csv representation containing all values from the toString() method.
Definition: Configuration.cpp:20
Class representing the load estimator choices.
Definition: LoadEstimatorOption.h:18
This is the main namespace of AutoPas.
Definition: AutoPasDecl.h:34
bool operator!=(const Configuration &lhs, const Configuration &rhs)
Not-Equals operator for Configuration objects.
Definition: Configuration.cpp:119
bool operator==(const Configuration &lhs, const Configuration &rhs)
Equals operator for Configuration objects.
Definition: Configuration.cpp:115
std::ostream & operator<<(std::ostream &os, const OwnershipState &ownershipState)
Insertion operator for OwnershipState.
Definition: OwnershipState.h:84
std::istream & operator>>(std::istream &in, Configuration &configuration)
Stream extraction operator.
Definition: Configuration.cpp:130
bool operator<(const Configuration &lhs, const Configuration &rhs)
Comparison operator for Configuration objects.
Definition: Configuration.cpp:123
Hash function for Configuration objects to be used in e.g.
Definition: Configuration.h:210
std::size_t operator()(Configuration configuration) const
Hash Function operator.
Definition: Configuration.h:216