ALL 0.9.3
A Loadbalacing Library
|
#include <ALL_LB.hpp>
Public Member Functions | |
LB (const int dim, const T g) | |
virtual | ~LB ()=default |
destructor | |
virtual void | balance (const int step)=0 |
abstract definition of the balancing method | |
virtual int | getDimension () |
double | getEfficiency () |
virtual W | getEstimatedEfficiency ()=0 |
virtual const T | getGamma () |
virtual const std::vector< T > & | getMinDomainSize () |
virtual std::vector< int > & | getNeighbors ()=0 |
std::vector< T > & | getNeighborVertices () |
int | getNVertices () |
virtual std::vector< Point< T > > & | getPrevVertices () |
virtual const std::vector< T > & | getSysSize () |
virtual std::vector< Point< T > > & | getVertices () |
virtual std::vector< W > & | getWork () |
virtual void | setAdditionalData (const void *data)=0 |
virtual void | setCommunicator (const MPI_Comm comm) |
virtual void | setDimension (const int d) |
virtual void | setGamma (const T g) |
virtual void | setMinDomainSize (const std::vector< T > &minSize) |
virtual void | setSysSize (const std::vector< T > &newSysSize) |
virtual void | setup ()=0 |
abstract definition of the setup method | |
virtual void | setVertices (const std::vector< Point< T > > &vertices_in) |
virtual void | setWork (const std::vector< W > &w) |
virtual void | setWork (const W w) |
Protected Member Functions | |
void | resizeVertices (const int newSize) |
Protected Attributes | |
int | dimension |
dimension of the used vertices | |
T | gamma |
correction factor | |
std::vector< int > | global_dims |
dimensions of the global process grid | |
MPI_Comm | globalComm |
used MPI communicator | |
std::vector< int > | local_coords |
cartesian coordinates of the local domain in the process grid | |
int | localRank |
local rank in the used MPI communicator | |
std::vector< T > | minSize |
std::vector< T > | neighborVertices |
vertices describing neighboring domains | |
std::vector< int > | periodicity |
periodicity of the MPI communicator / system | |
std::vector< Point< T > > | prevVertices |
original vertices before previous balancing step | |
std::vector< T > | sysSize |
(orthogonal) system size | |
std::vector< Point< T > > | vertices |
local vertices after previous balancing step | |
std::vector< W > | work |
local work | |
T | data for vertices and related data |
W | data for work and related data |
Definition at line 43 of file ALL_LB.hpp.
|
inline |
constructor for the basic load-balancing class, sets up parameters required by all balancing methods
[in] | dim | dimension of the vertices used |
[in] | g | correction factor for the computation of shifts |
Definition at line 49 of file ALL_LB.hpp.
|
pure virtual |
abstract definition of the balancing method
Implemented in ALL::ForceBased_LB< T, W >, ALL::Histogram_LB< T, W >, ALL::Staggered_LB< T, W >, ALL::Tensor_LB< T, W >, ALL::TensorMax_LB< T, W >, and ALL::Voronoi_LB< T, W >.
|
inlinevirtual |
method to get the dimension of the vertices
Definition at line 99 of file ALL_LB.hpp.
|
inline |
method to get the current LB efficiency with the given work distribution
Definition at line 182 of file ALL_LB.hpp.
|
pure virtual |
method to get an estimated LB efficiency after the balance step (currently only implemented in ALL::HISTOGRAM!)
Implemented in ALL::ForceBased_LB< T, W >, ALL::Histogram_LB< T, W >, ALL::Staggered_LB< T, W >, ALL::Tensor_LB< T, W >, and ALL::Voronoi_LB< T, W >.
|
inlinevirtual |
method to get the correction value currently used
Definition at line 107 of file ALL_LB.hpp.
|
inlinevirtual |
method to get the minimum domain size the balancing methods have to obey
Definition at line 129 of file ALL_LB.hpp.
|
pure virtual |
abstract definition of the method to get the neighbors of the local domain
Implemented in ALL::ForceBased_LB< T, W >, ALL::Histogram_LB< T, W >, ALL::Staggered_LB< T, W >, ALL::Tensor_LB< T, W >, and ALL::Voronoi_LB< T, W >.
|
inline |
method to provide a list of vertices describing the neighboring domains currently only implemented for VORONOI, as a means to get the anchor points of the surrounding domains
Definition at line 201 of file ALL_LB.hpp.
|
inline |
method the get the number of vertices stored for the local domain
Definition at line 168 of file ALL_LB.hpp.
|
inlinevirtual |
method to get the original vertices before the last balancing step
Definition at line 155 of file ALL_LB.hpp.
|
inlinevirtual |
method to get the currently stored system size
Definition at line 139 of file ALL_LB.hpp.
|
inlinevirtual |
method to get result vertices
Definition at line 148 of file ALL_LB.hpp.
|
inlinevirtual |
method to get the currently stored work for the local process
Definition at line 144 of file ALL_LB.hpp.
|
inlineprotected |
method the resize the vertex list
[in] | new_size | the new size of the vertex list |
Definition at line 234 of file ALL_LB.hpp.
|
pure virtual |
method to set undefined method specific data, which is not shared between different methods but needs to be set by a unified interface
[in] | data | the data be passed to the balancing method |
Implemented in ALL::Histogram_LB< T, W >.
|
inlinevirtual |
method to set the MPI communicator to be used by the balancing method
[in] | comm | the MPI communicator to be used |
Definition at line 159 of file ALL_LB.hpp.
|
inlinevirtual |
method to set the dimension of the vertices
[in] | d | the dimension to be used |
Definition at line 88 of file ALL_LB.hpp.
|
inlinevirtual |
method to set the correction value gamma
[in] | g | the correction value to use |
Definition at line 103 of file ALL_LB.hpp.
|
inlinevirtual |
method to set the minimum domain size in each dimension
[in] | minSize | the minimum size of a domain in all dimensions |
Definition at line 123 of file ALL_LB.hpp.
|
inlinevirtual |
method to set the (orthogonal) size of the system
[in] | sysSize | system size in all dimensions |
Definition at line 133 of file ALL_LB.hpp.
|
pure virtual |
abstract definition of the setup method
Implemented in ALL::ForceBased_LB< T, W >, ALL::Histogram_LB< T, W >, ALL::Staggered_LB< T, W >, ALL::Tensor_LB< T, W >, and ALL::Voronoi_LB< T, W >.
|
inlinevirtual |
method to update the vertices used for the balancing step, overwrites old set of vertices
[in] | vertices_in | vector containg the new vertices to be used |
Definition at line 76 of file ALL_LB.hpp.
|
inlinevirtual |
method to set a multi-dimensional work for the local domain
[in] | w | vector containing all the dimensions of the work to be used for the local domain |
Definition at line 112 of file ALL_LB.hpp.
|
inlinevirtual |
method to set a scalar work for the local domain
[in] | w | value containing the work to be used for the local domain |
Definition at line 116 of file ALL_LB.hpp.
|
protected |
dimension of the used vertices
Definition at line 208 of file ALL_LB.hpp.
|
protected |
correction factor
Definition at line 206 of file ALL_LB.hpp.
|
protected |
dimensions of the global process grid
Definition at line 225 of file ALL_LB.hpp.
|
protected |
used MPI communicator
Definition at line 210 of file ALL_LB.hpp.
|
protected |
cartesian coordinates of the local domain in the process grid
Definition at line 227 of file ALL_LB.hpp.
|
protected |
local rank in the used MPI communicator
Definition at line 212 of file ALL_LB.hpp.
|
protected |
minimum domain size
Definition at line 215 of file ALL_LB.hpp.
|
protected |
vertices describing neighboring domains
Definition at line 231 of file ALL_LB.hpp.
|
protected |
periodicity of the MPI communicator / system
Definition at line 229 of file ALL_LB.hpp.
original vertices before previous balancing step
Definition at line 223 of file ALL_LB.hpp.
|
protected |
(orthogonal) system size
Definition at line 217 of file ALL_LB.hpp.
local vertices after previous balancing step
Definition at line 221 of file ALL_LB.hpp.
|
protected |
local work
Definition at line 219 of file ALL_LB.hpp.