Peano
Loading...
Searching...
No Matches
CostMetrics.h
Go to the documentation of this file.
1
// This file is part of the Peano project. For conditions of distribution and
2
// use, please see the copyright notice at www.peano-framework.org
3
#pragma once
4
5
namespace
toolbox
{
6
namespace
loadbalancing {
7
class
CostMetrics;
8
}
9
}
10
11
12
13
#include "
tarch/mpi/mpi.h
"
14
#include "
tarch/logging/Log.h
"
15
#include <string>
16
17
32
class
toolbox::loadbalancing::CostMetrics
{
33
public
:
34
CostMetrics
();
35
virtual
~CostMetrics
() =
default
;
36
40
virtual
std::string
toString
()
const
= 0;
41
42
std::string
toString
(
const
std::string& metricName)
const
;
43
53
virtual
void
waitForGlobalDataExchange
();
54
59
virtual
void
updateGlobalView
();
60
72
virtual
double
getCostOfLocalTree
(
int
spacetreeNumber)
const
= 0;
73
78
virtual
double
getCostOfLocalRank
()
const
;
79
80
virtual
double
getGlobalCost
()
const
;
81
82
virtual
int
getLightestRank
()
const
;
83
84
virtual
double
getMinimumOfMaximumRankWeights
()
const
;
85
86
protected
:
91
struct
ReductionBuffer
{
92
double
_weight
;
93
int
_rank
;
94
};
95
104
double
_localRankWeight
;
105
106
double
_globalWeight
;
107
ReductionBuffer
_lightestRank
;
108
double
_minimumOfMaximumOfRankWeights
;
109
110
#ifdef Parallel
114
MPI_Request*
_globalWeightRequest
;
115
MPI_Request*
_lightestRankRequest
;
116
MPI_Request*
_minimumOfMaximumOfRankWeightsRequest
;
117
#endif
118
119
double
_globalWeightIn
;
120
double
_globalWeightOut
;
121
122
ReductionBuffer
_lightestRankIn
;
123
ReductionBuffer
_lightestRankOut
;
124
125
double
_minimumOfMaximumOfRankWeightsIn
;
126
double
_minimumOfMaximumOfRankWeightsOut
;
127
private
:
128
static
tarch::logging::Log
_log
;
129
};
Log.h
tarch::logging::Log
Log Device.
Definition
Log.h:516
toolbox::loadbalancing::CostMetrics
Abstract cost metric.
Definition
CostMetrics.h:32
toolbox::loadbalancing::CostMetrics::getMinimumOfMaximumRankWeights
virtual double getMinimumOfMaximumRankWeights() const
Definition
CostMetrics.cpp:145
toolbox::loadbalancing::CostMetrics::CostMetrics
CostMetrics()
Definition
CostMetrics.cpp:9
toolbox::loadbalancing::CostMetrics::getLightestRank
virtual int getLightestRank() const
Definition
CostMetrics.cpp:138
toolbox::loadbalancing::CostMetrics::_minimumOfMaximumOfRankWeightsIn
double _minimumOfMaximumOfRankWeightsIn
Definition
CostMetrics.h:125
toolbox::loadbalancing::CostMetrics::~CostMetrics
virtual ~CostMetrics()=default
toolbox::loadbalancing::CostMetrics::_lightestRankOut
ReductionBuffer _lightestRankOut
Definition
CostMetrics.h:123
toolbox::loadbalancing::CostMetrics::_lightestRankIn
ReductionBuffer _lightestRankIn
Definition
CostMetrics.h:122
toolbox::loadbalancing::CostMetrics::_localRankWeight
double _localRankWeight
Weight of local rank.
Definition
CostMetrics.h:104
toolbox::loadbalancing::CostMetrics::_log
static tarch::logging::Log _log
Definition
CostMetrics.h:128
toolbox::loadbalancing::CostMetrics::getCostOfLocalRank
virtual double getCostOfLocalRank() const
Wrapper around getCostOfLocalTree().
Definition
CostMetrics.cpp:39
toolbox::loadbalancing::CostMetrics::_globalWeightIn
double _globalWeightIn
Definition
CostMetrics.h:119
toolbox::loadbalancing::CostMetrics::_lightestRankRequest
MPI_Request * _lightestRankRequest
Definition
CostMetrics.h:115
toolbox::loadbalancing::CostMetrics::_minimumOfMaximumOfRankWeights
double _minimumOfMaximumOfRankWeights
Definition
CostMetrics.h:108
toolbox::loadbalancing::CostMetrics::_globalWeightRequest
MPI_Request * _globalWeightRequest
Replicate compared to stats.
Definition
CostMetrics.h:114
toolbox::loadbalancing::CostMetrics::updateGlobalView
virtual void updateGlobalView()
Please overwrite in subclass and set the value of _localRankWeight.
Definition
CostMetrics.cpp:68
toolbox::loadbalancing::CostMetrics::_lightestRank
ReductionBuffer _lightestRank
Definition
CostMetrics.h:107
toolbox::loadbalancing::CostMetrics::_globalWeight
double _globalWeight
Definition
CostMetrics.h:106
toolbox::loadbalancing::CostMetrics::waitForGlobalDataExchange
virtual void waitForGlobalDataExchange()
Typically called by.
Definition
CostMetrics.cpp:49
toolbox::loadbalancing::CostMetrics::getCostOfLocalTree
virtual double getCostOfLocalTree(int spacetreeNumber) const =0
Query cost of one tree.
toolbox::loadbalancing::CostMetrics::_minimumOfMaximumOfRankWeightsOut
double _minimumOfMaximumOfRankWeightsOut
Definition
CostMetrics.h:126
toolbox::loadbalancing::CostMetrics::toString
virtual std::string toString() const =0
Feel free to invoke the variant below if you want.
toolbox::loadbalancing::CostMetrics::_minimumOfMaximumOfRankWeightsRequest
MPI_Request * _minimumOfMaximumOfRankWeightsRequest
Definition
CostMetrics.h:116
toolbox::loadbalancing::CostMetrics::getGlobalCost
virtual double getGlobalCost() const
Definition
CostMetrics.cpp:133
toolbox::loadbalancing::CostMetrics::_globalWeightOut
double _globalWeightOut
Definition
CostMetrics.h:120
mpi.h
toolbox
Definition
InterpolationRestriction.h:10
toolbox::loadbalancing::CostMetrics::ReductionBuffer
It is totally annoying, but it seems that MPI's maxloc and reduction are broken in some MPI implement...
Definition
CostMetrics.h:91
toolbox::loadbalancing::CostMetrics::ReductionBuffer::_rank
int _rank
Definition
CostMetrics.h:93
toolbox::loadbalancing::CostMetrics::ReductionBuffer::_weight
double _weight
Definition
CostMetrics.h:92
src
toolbox
loadbalancing
CostMetrics.h
Generated on Fri Apr 11 2025 10:18:14 for Peano by
1.10.0