25#ifdef AUTOPAS_ENABLE_HARMONY
52 ActiveHarmony(
const InteractionTypeOption &interactionType,
const std::set<ContainerOption> &allowedContainerOptions,
54 const std::set<TraversalOption> &allowedTraversalOptions,
55 const std::set<LoadEstimatorOption> &allowedLoadEstimatorOptions,
56 const std::set<DataLayoutOption> &allowedDataLayoutOptions,
57 const std::set<Newton3Option> &allowedNewton3Options,
58 const std::set<VectorizationPatternOption> &allowedVecPatternOptions,
bool mpiDivideAndConquer,
84 bool reset(
size_t iteration,
size_t tuningPhase, std::vector<Configuration> &configQueue,
88#ifdef AUTOPAS_ENABLE_HARMONY
92 hdesc_t *hdesc =
nullptr;
96 htask_t *htask =
nullptr;
98 using hdef_t =
void *;
101 const InteractionTypeOption _interactionType;
103 std::set<ContainerOption> _allowedContainerOptions;
104 std::unique_ptr<NumberSet<double>> _allowedCellSizeFactors;
105 std::set<TraversalOption> _allowedTraversalOptions;
106 std::set<LoadEstimatorOption> _allowedLoadEstimatorOptions;
107 std::set<DataLayoutOption> _allowedDataLayoutOptions;
108 std::set<Newton3Option> _allowedNewton3Options;
109 std::set<VectorizationPatternOption> _allowedVecPatterns;
111 size_t _tuningPhase{0};
112 bool _mpiDivideAndConquer;
114 bool _nonLocalServer;
129 void invalidateConfiguration();
138 template <
class OptionClass>
139 void configureTuningParameter(hdef_t *hdef,
const char *name,
const std::set<OptionClass> &options);
148 template <
class OptionClass>
149 OptionClass fetchTuningParameter(
const char *name,
const std::set<OptionClass> &options);
153 void setupTuningParameters(
int commSize, hdef_t *hdef);
155 static constexpr int cellSizeSamples = 100;
157 static constexpr const char *traversalOptionName =
"traversalOption";
158 static constexpr const char *loadEstimatorOptionName =
"loadEstimatorOption";
159 static constexpr const char *dataLayoutOptionName =
"dataLayoutOption";
160 static constexpr const char *cellSizeFactorsName =
"cellSizeFactor";
161 static constexpr const char *newton3OptionName =
"newton3Option";
162 static constexpr const char *vecPatternOptionName =
"vectorPattern";
Interface to the Active Harmony (AH) tuning framework.
Definition: ActiveHarmony.h:37
bool searchSpaceIsTrivial() const
Indicate if the search space contains only one configuration.
Definition: ActiveHarmony.cpp:273
bool searchSpaceIsEmpty() const
Indicate if the search space contains any configurations.
Definition: ActiveHarmony.cpp:284
TuningStrategyOption getOptionType() const override
Get this object's associated TuningStrategyOption type.
Definition: ActiveHarmony.cpp:344
bool reset(size_t iteration, size_t tuningPhase, std::vector< Configuration > &configQueue, const autopas::EvidenceCollection &evidenceCollection) override
Reset all internal parameters to the beginning of a new tuning phase.
Definition: ActiveHarmony.cpp:196
bool optimizeSuggestions(std::vector< Configuration > &configQueue, const EvidenceCollection &evidenceCollection) override
Optimizes the queue of configurations to process.
Definition: ActiveHarmony.cpp:131
bool needsDomainSimilarityStatistics() const override
Indicate whether the strategy needs domain similarity statistics.
Definition: ActiveHarmony.cpp:342
void addEvidence(const Configuration &configuration, const Evidence &evidence) override
Notifies the strategy about empirically collected information for the given configuration.
Definition: ActiveHarmony.cpp:60
Class containing multiple options that form an algorithm configuration for the pairwise iteration.
Definition: Configuration.h:26
Class to manage all evidence.
Definition: EvidenceCollection.h:24
Helper class that associates a measurement with the iteration when it was taken.
Definition: Evidence.h:15
Virtual class describing a finite or infinite set of numbers.
Definition: NumberSet.h:22
Interface for tuning strategies for the auto tuner.
Definition: TuningStrategyInterface.h:23
This is the main namespace of AutoPas.
Definition: AutoPasDecl.h:34
AutoPas_MPI_Comm
Dummy for MPI_Comm.
Definition: WrapMPI.h:113