12 double loadBalancingQuality,
14 bool assumePeriodicBoundaryConditions,
15 int maxNumberOfTreesThroughoutInitialDistribution,
19 _loadBalancingQuality(loadBalancingQuality),
20 _minSizeOfTree(minSizeOfTree),
21 _assumePeriodicBoundaryConditions(assumePeriodicBoundaryConditions),
22 _maxNumberOfTreesThroughoutInitialDistribution( maxNumberOfTreesThroughoutInitialDistribution ),
23 _maxNumberOfTrees( maxNumberOfTrees ),
43 if (value==UseNumberOfThreads) {
45 }
else if (value==UseTwiceTheNumberOfThreads) {
63 return translateSetMaxNumberOfTreesIntoRealNumberOfTrees(_maxNumberOfTreesThroughoutInitialDistribution);
65 return translateSetMaxNumberOfTreesIntoRealNumberOfTrees(_maxNumberOfTrees);
71 return _loadBalancingQuality;
81 return _assumePeriodicBoundaryConditions
85 return _minSizeOfTree;
91 std::ostringstream msg;
93 <<
"lb-quality=" << _loadBalancingQuality
94 <<
",min-size-of-tree=" << _minSizeOfTree
95 <<
",max-no-of-trees-throughout-distribution=" << _maxNumberOfTreesThroughoutInitialDistribution
96 <<
",max-no-of-trees=" << _maxNumberOfTrees
#define assertion2(expr, param0, param1)
virtual bool makeSplitDependOnMemory(toolbox::loadbalancing::State state) override
Use the operating system's memory queries to get the memory out and to veto too many local splits.
virtual int getMinTreeSize(toolbox::loadbalancing::State state) override
If we do the initial distribution in-between ranks, then there should be no such thing as a min tree ...
int translateSetMaxNumberOfTreesIntoRealNumberOfTrees(int value) const
Return how many trees to use if value is picked by user.
static tarch::logging::Log _log
virtual std::string toString() const override
const int _maxNumberOfTreesThroughoutInitialDistribution
const int _maxNumberOfTrees
virtual int getMaxLocalTreesPerRank(toolbox::loadbalancing::State state) override
Constraint on the number of trees per rank.
virtual peano4::SplitInstruction::Mode getMode(toolbox::loadbalancing::State state) override
virtual double getWorstCaseBalancingRatio(toolbox::loadbalancing::State state) override
Control when to balance between ranks.
LoadBalancingConfiguration(double loadBalancingQuality=0.9, int minSizeOfTree=0, bool assumePeriodicBoundaryConditions=false, int maxNumberOfTreesThroughoutInitialDistribution=UseNumberOfThreads, int maxNumberOfTrees=UseTwiceTheNumberOfThreads, peano4::SplitInstruction::Mode mode=peano4::SplitInstruction::Mode::BottomUp)
Configure load balancing.
int getNumberOfRanks() const
static Rank & getInstance()
This operation returns the singleton instance.
static Core & getInstance()
int getNumberOfThreads() const
Returns the number of threads that is used.