AutoPas  3.0.0
Loading...
Searching...
No Matches
ConfigurationAndRankIteratorHandler.h
Go to the documentation of this file.
1
7#pragma once
8
15
16namespace autopas::utils {
25 public:
39 const std::set<ContainerOption> &containerOptions, const std::set<double> &cellSizeFactors,
40 const std::set<TraversalOption> &traversalOptions, const std::set<LoadEstimatorOption> &loadEstimatorOptions,
41 const std::set<DataLayoutOption> &dataLayoutOptions, const std::set<Newton3Option> &newton3Options,
42 const InteractionTypeOption &interactionType, const int numConfigs, const int commSize)
43 : _containers(containerOptions),
44 _cellSizeFactors(cellSizeFactors),
45 _allowedTraversalOptions(traversalOptions),
46 _allowedLoadEstimatorOptions(loadEstimatorOptions),
47 _dataLayoutOptions(dataLayoutOptions),
48 _newton3Options(newton3Options),
49 _interactionType(interactionType) {
50 reset(numConfigs, commSize);
51 }
52
59 void advanceIterators(int numConfigs, int commSize);
60
66 void reset(const int numConfigs, const int commSize);
67
77 inline void getConfigIterators(std::set<ContainerOption>::iterator &containerIt,
78 std::set<double>::iterator &cellSizeFactorIt,
79 std::set<TraversalOption>::iterator &traversalIt,
80 std::set<LoadEstimatorOption>::iterator &loadEstimatorIt,
81 std::set<DataLayoutOption>::iterator &dataLayoutIt,
82 std::set<Newton3Option>::iterator &newton3It) {
83 containerIt = _containerIt;
84 cellSizeFactorIt = _cellSizeFactorIt;
85 traversalIt = _traversalIt;
86 loadEstimatorIt = _loadEstimatorIt;
87 dataLayoutIt = _dataLayoutIt;
88 newton3It = _newton3It;
89 }
90
97 [[nodiscard]] inline int getRankIterator() const { return _rankIterator; }
98
104 [[nodiscard]] inline int getInfiniteCellSizeFactorsOffset() const { return _infiniteCellSizeFactorsOffset; }
105
111 [[nodiscard]] inline int getInfiniteCellSizeFactorsBlockSize() const { return _infiniteCellSizeFactorsBlockSize; }
112
117 [[nodiscard]] inline std::set<ContainerOption>::iterator getContainerIterator() const { return _containerIt; }
118
123 [[nodiscard]] inline std::set<double>::iterator getCellSizeFactorIterator() const { return _cellSizeFactorIt; }
124
129 [[nodiscard]] inline std::set<TraversalOption>::iterator getTraversalIterator() const { return _traversalIt; }
130
135 [[nodiscard]] inline std::set<LoadEstimatorOption>::iterator getLoadEstimatorIterator() const {
136 return _loadEstimatorIt;
137 }
138
143 [[nodiscard]] inline std::set<DataLayoutOption>::iterator getDataLayoutIterator() const { return _dataLayoutIt; }
144
149 [[nodiscard]] inline std::set<Newton3Option>::iterator getNewton3Iterator() const { return _newton3It; }
150
151 private:
155 void selectTraversalsForCurrentContainer();
156
160 void selectLoadEstimatorsForCurrentContainerAndTraversal();
161
166 inline void advanceConfigIterators();
167
168 const std::set<ContainerOption> &_containers;
169 const std::set<double> &_cellSizeFactors;
170 const std::set<TraversalOption> &_allowedTraversalOptions;
171 const std::set<LoadEstimatorOption> &_allowedLoadEstimatorOptions;
172 const std::set<DataLayoutOption> &_dataLayoutOptions;
173 const std::set<Newton3Option> &_newton3Options;
174 const InteractionTypeOption &_interactionType;
175 std::set<TraversalOption> _allowedAndApplicableTraversalOptions;
176 std::set<LoadEstimatorOption> _allowedAndApplicableLoadEstimatorOptions;
177 std::set<ContainerOption>::iterator _containerIt;
178 std::set<double>::iterator _cellSizeFactorIt;
179 std::set<TraversalOption>::iterator _traversalIt;
180 std::set<LoadEstimatorOption>::iterator _loadEstimatorIt;
181 std::set<DataLayoutOption>::iterator _dataLayoutIt;
182 std::set<Newton3Option>::iterator _newton3It;
183 int _rankIterator;
184 int _remainingBlockSize;
185 int _remainder;
186 int _infiniteCellSizeFactorsOffset;
187 int _infiniteCellSizeFactorsBlockSize;
188};
189
190} // namespace autopas::utils
Functionality needed to iterate through ranks and configurations simultaneously in an evenly distribu...
Definition: ConfigurationAndRankIteratorHandler.h:24
std::set< ContainerOption >::iterator getContainerIterator() const
Getter for containerIterator.
Definition: ConfigurationAndRankIteratorHandler.h:117
std::set< DataLayoutOption >::iterator getDataLayoutIterator() const
Getter for the DataLayoutIterator.
Definition: ConfigurationAndRankIteratorHandler.h:143
int getRankIterator() const
Getter for the rankIterator.
Definition: ConfigurationAndRankIteratorHandler.h:97
std::set< Newton3Option >::iterator getNewton3Iterator() const
Getter for the Newton3Iterator.
Definition: ConfigurationAndRankIteratorHandler.h:149
int getInfiniteCellSizeFactorsOffset() const
Getter for the number of ranks smaller than getRankIterator that have the exact same configs assigned...
Definition: ConfigurationAndRankIteratorHandler.h:104
std::set< double >::iterator getCellSizeFactorIterator() const
Getter for the CellSizeFactorIterator.
Definition: ConfigurationAndRankIteratorHandler.h:123
void reset(const int numConfigs, const int commSize)
Resets all iterators to the beginning, while keeping the containers.
Definition: ConfigurationAndRankIteratorHandler.cpp:77
void getConfigIterators(std::set< ContainerOption >::iterator &containerIt, std::set< double >::iterator &cellSizeFactorIt, std::set< TraversalOption >::iterator &traversalIt, std::set< LoadEstimatorOption >::iterator &loadEstimatorIt, std::set< DataLayoutOption >::iterator &dataLayoutIt, std::set< Newton3Option >::iterator &newton3It)
Alternative getter for all Configuration iterators.
Definition: ConfigurationAndRankIteratorHandler.h:77
std::set< TraversalOption >::iterator getTraversalIterator() const
Getter for the TraversalIterator.
Definition: ConfigurationAndRankIteratorHandler.h:129
int getInfiniteCellSizeFactorsBlockSize() const
Getter for the number of ranks in total that have the exact same configs assigned to them.
Definition: ConfigurationAndRankIteratorHandler.h:111
void advanceIterators(int numConfigs, int commSize)
Advances the rankIterator (getRankIterator()) and/or the Option iterators for a single step such that...
Definition: ConfigurationAndRankIteratorHandler.cpp:43
std::set< LoadEstimatorOption >::iterator getLoadEstimatorIterator() const
Getter for the LoadEstimatorIterator.
Definition: ConfigurationAndRankIteratorHandler.h:135
ConfigurationAndRankIteratorHandler(const std::set< ContainerOption > &containerOptions, const std::set< double > &cellSizeFactors, const std::set< TraversalOption > &traversalOptions, const std::set< LoadEstimatorOption > &loadEstimatorOptions, const std::set< DataLayoutOption > &dataLayoutOptions, const std::set< Newton3Option > &newton3Options, const InteractionTypeOption &interactionType, const int numConfigs, const int commSize)
Constructor for ConfigurationAndRankIteratorHandler.
Definition: ConfigurationAndRankIteratorHandler.h:38
In this namespace some helper classes and functions can be found used inside of AutoPas.
Definition: namespaces.h:44