AutoPas  3.0.0
Loading...
Searching...
No Matches
ActiveHarmony.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <chrono>
10#include <cstdio>
11#include <cstdlib>
12#include <string>
13#include <thread>
14#include <vector>
15
24
25#ifdef AUTOPAS_ENABLE_HARMONY
26#include "hclient.h"
27#endif
28
29namespace autopas {
30
38 public:
52 ActiveHarmony(const InteractionTypeOption &interactionType, const std::set<ContainerOption> &allowedContainerOptions,
53 const NumberSet<double> &allowedCellSizeFactors,
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,
59 AutoPas_MPI_Comm comm);
60
61 ~ActiveHarmony() override;
62
63 TuningStrategyOption getOptionType() const override;
64
65 void addEvidence(const Configuration &configuration, const Evidence &evidence) override;
66
67 bool optimizeSuggestions(std::vector<Configuration> &configQueue,
68 const EvidenceCollection &evidenceCollection) override;
69
74 bool searchSpaceIsTrivial() const;
75
80 bool searchSpaceIsEmpty() const;
81
82 bool needsDomainSimilarityStatistics() const override;
83
84 bool reset(size_t iteration, size_t tuningPhase, std::vector<Configuration> &configQueue,
85 const autopas::EvidenceCollection &evidenceCollection) override;
86
87 private:
88#ifdef AUTOPAS_ENABLE_HARMONY
92 hdesc_t *hdesc = nullptr;
96 htask_t *htask = nullptr;
97#else
98 using hdef_t = void *;
99#endif
100
101 const InteractionTypeOption _interactionType;
102
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;
110
111 size_t _tuningPhase{0};
112 bool _mpiDivideAndConquer;
113 AutoPas_MPI_Comm _comm;
114 bool _nonLocalServer;
115
119 void resetHarmony();
120
124 Configuration fetchConfiguration();
125
129 void invalidateConfiguration();
130
138 template <class OptionClass>
139 void configureTuningParameter(hdef_t *hdef, const char *name, const std::set<OptionClass> &options);
140
148 template <class OptionClass>
149 OptionClass fetchTuningParameter(const char *name, const std::set<OptionClass> &options);
150
151 void rejectConfiguration(const autopas::Configuration &configuration, bool indefinitely) override;
152
153 void setupTuningParameters(int commSize, hdef_t *hdef);
154
155 static constexpr int cellSizeSamples = 100;
156
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";
163};
164
165} // namespace autopas
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