OpenLB 1.7
|
Constructs a load balancer from a given cuboid geometry using a heurist. More...
#include <heuristicLoadBalancer.h>
Public Member Functions | |
HeuristicLoadBalancer () | |
~HeuristicLoadBalancer () override | |
HeuristicLoadBalancer (CuboidGeometry3D< T > &cGeometry3d, const double ratioFullEmpty=1., const double weightEmpty=.0) | |
HeuristicLoadBalancer (CuboidGeometry2D< T > &cGeometry2d, const double ratioFullEmpty=1., const double weightEmpty=.0) | |
void | reInit (CuboidGeometry3D< T > &cGeometry3d, const double ratioFullEmpty=1., const double weightEmpty=.0) |
void | reInit (CuboidGeometry2D< T > &cGeometry2d, const double ratioFullEmpty=1., const double weightEmpty=.0) |
void | swap (HeuristicLoadBalancer< T > &loadBalancer) |
Public Member Functions inherited from olb::LoadBalancer< T > | |
LoadBalancer (int size=1) | |
Default empty constructor. | |
LoadBalancer (int size, std::map< int, int > &loc, std::vector< int > &glob, std::map< int, int > &rank) | |
Constructor accepting existing balancing. | |
LoadBalancer (int size, std::map< int, int > &loc, std::vector< int > &glob, std::map< int, int > &rank, std::map< int, Platform > &platform) | |
Constructor accepting existing heterogeneous balancing. | |
virtual | ~LoadBalancer () |
Default empty destructor. | |
void | swap (LoadBalancer< T > &loadBalancer) |
Swap method. | |
bool | isLocal (const int &glob) |
returns whether glob is on this process | |
int | loc (const int &glob) |
int | loc (int glob) const |
int | glob (int loc) const |
int | rank (const int &glob) |
int | rank (int glob) const |
int | size () const |
int | getRankSize () const |
virtual Platform | platform (int loc) const |
virtual void | setPlatform (int loc, Platform platform) |
bool | operator== (const LoadBalancer< T > &rhs) const |
equal operator | |
std::size_t | getNblock () const override |
Number of data blocks for the serializable interface. | |
std::size_t | getSerializableSize () const override |
Binary size for the serializer. | |
bool * | getBlock (std::size_t iBlock, std::size_t &sizeBlock, bool loadingMode) override |
Return a pointer to the memory of the current block and its size for the serializable interface. | |
void | print (bool multiOutput=false) const |
Public Member Functions inherited from olb::Serializable | |
virtual | ~Serializable ()=default |
template<bool includeLogOutputDir = true> | |
bool | save (std::string fileName="", const bool enforceUint=false) |
Save Serializable into file fileName | |
template<bool includeLogOutputDir = true> | |
bool | load (std::string fileName="", const bool enforceUint=false) |
Load Serializable from file fileName | |
bool | save (std::uint8_t *buffer) |
Save Serializable into buffer of length getSerializableSize | |
bool | load (const std::uint8_t *buffer) |
Load Serializable from buffer of length getSerializableSize | |
virtual void | postLoad () |
Additional Inherited Members | |
Protected Member Functions inherited from olb::BufferSerializable | |
template<typename DataType > | |
void | registerSerializable (const std::size_t iBlock, std::size_t &sizeBlock, std::size_t ¤tBlock, size_t &sizeBufferIndex, bool *&dataPtr, DataType &data, const bool loadingMode=false) |
Register Serializable object of dynamic size. | |
template<typename DataType > | |
void | registerStdVectorOfVars (const std::size_t iBlock, std::size_t &sizeBlock, std::size_t ¤tBlock, size_t &sizeBufferIndex, bool *&dataPtr, std::vector< DataType > &data, const bool loadingMode=false) |
Method for registering a std::vector<DataType> of primitive DataType (int , double , ...) | |
template<typename DataType > | |
void | registerStdVectorOfSerializablesOfConstSize (const std::size_t iBlock, std::size_t &sizeBlock, std::size_t ¤tBlock, size_t &sizeBufferIndex, bool *&dataPtr, std::vector< DataType > &data, const bool loadingMode=false) |
Method for registering a std::vector<DataType> of constant-sized Serializable | |
template<typename DataType > | |
void | registerStdVectorOfSerializables (const std::size_t iBlock, std::size_t &sizeBlock, std::size_t ¤tBlock, size_t &sizeBufferIndex, bool *&dataPtr, std::vector< DataType > &data, const bool loadingMode=false) |
Method for registering a std::vector<DataType> of dynamic-sized DataType | |
template<typename DataTypeKey , typename DataTypeValue > | |
void | registerMap (const std::size_t iBlock, std::size_t &sizeBlock, std::size_t ¤tBlock, size_t &sizeBufferIndex, bool *&dataPtr, std::map< DataTypeKey, DataTypeValue > &data, const bool loadingMode=false) |
Method for registering a std::map<DataTypeKey, DataTypeValue> of fixed-sized types (i.e. int , double ) | |
size_t | addSizeToBuffer (const std::size_t iBlock, std::size_t &sizeBlock, std::size_t ¤tBlock, size_t &sizeBufferIndex, bool *&dataPtr, const size_t data) const |
Add a size_t to the sizeBuffer in the n-th util::round and return that size_t in all successive rounds. | |
Protected Member Functions inherited from olb::Serializable | |
template<typename DataType > | |
void | registerVar (const std::size_t iBlock, std::size_t &sizeBlock, std::size_t ¤tBlock, bool *&dataPtr, const DataType &data, const size_t arrayLength=1) const |
Register primitive data types (int , double , ...) or arrays of those. | |
template<typename DataType > | |
void | registerSerializableOfConstSize (const std::size_t iBlock, std::size_t &sizeBlock, std::size_t ¤tBlock, bool *&dataPtr, DataType &data, const bool loadingMode=false) |
Register Serializable object of constant size. | |
template<typename DataType > | |
void | registerSerializablesOfConstSize (const std::size_t iBlock, std::size_t &sizeBlock, std::size_t ¤tBlock, bool *&dataPtr, DataType *data, const size_t arrayLength, const bool loadingMode=false) |
Register an array of Serializable objects of constant size. | |
Protected Attributes inherited from olb::LoadBalancer< T > | |
int | _size |
number of cuboids after shrink -1 in appropriate thread | |
std::map< int, int > | _loc |
maps global cuboid to (local) thread cuboid | |
std::vector< int > | _glob |
content is 0,1,2,...,_size | |
std::map< int, int > | _rank |
maps global cuboid number to the processing thread | |
std::map< int, Platform > | _platform |
maps global cuboid number to local platform | |
Protected Attributes inherited from olb::BufferSerializable | |
std::vector< bool * > | _dataBuffer |
Data buffer for data that has to be buffered between two getBlock() iterations. | |
std::vector< size_t > | _sizeBuffer |
std::vector of integer buffers (e.g. for std::vector size) to be buffered for the whole iteration process | |
Constructs a load balancer from a given cuboid geometry using a heurist.
cGeometry | cuboid geometry to base the load balance on |
blockGeometry | used to determine number of full and empty cells if given |
ratioFullEmpty | time it takes for full cells in relation to empty cells |
This class has a virtual method call in its destructor and should therefore not be used as a base class.
Definition at line 51 of file heuristicLoadBalancer.h.
|
inline |
Definition at line 63 of file heuristicLoadBalancer.h.
|
override |
Definition at line 60 of file heuristicLoadBalancer.hh.
olb::HeuristicLoadBalancer< T >::HeuristicLoadBalancer | ( | CuboidGeometry3D< T > & | cGeometry3d, |
const double | ratioFullEmpty = 1., | ||
const double | weightEmpty = .0 ) |
Definition at line 44 of file heuristicLoadBalancer.hh.
References olb::HeuristicLoadBalancer< T >::reInit().
olb::HeuristicLoadBalancer< T >::HeuristicLoadBalancer | ( | CuboidGeometry2D< T > & | cGeometry2d, |
const double | ratioFullEmpty = 1., | ||
const double | weightEmpty = .0 ) |
Definition at line 52 of file heuristicLoadBalancer.hh.
References olb::HeuristicLoadBalancer< T >::reInit().
void olb::HeuristicLoadBalancer< T >::reInit | ( | CuboidGeometry2D< T > & | cGeometry2d, |
const double | ratioFullEmpty = 1., | ||
const double | weightEmpty = .0 ) |
Definition at line 221 of file heuristicLoadBalancer.hh.
References olb::CuboidGeometry2D< T >::getNc(), olb::singleton::MpiManager::getRank(), olb::singleton::MpiManager::iSend(), olb::singleton::mpi(), olb::singleton::MpiManager::receive(), and olb::singleton::MpiManager::waitAll().
void olb::HeuristicLoadBalancer< T >::reInit | ( | CuboidGeometry3D< T > & | cGeometry3d, |
const double | ratioFullEmpty = 1., | ||
const double | weightEmpty = .0 ) |
Definition at line 78 of file heuristicLoadBalancer.hh.
References olb::CuboidGeometry3D< T >::getNc(), olb::singleton::MpiManager::getRank(), olb::singleton::MpiManager::iSend(), olb::singleton::mpi(), olb::singleton::MpiManager::receive(), and olb::singleton::MpiManager::waitAll().
void olb::HeuristicLoadBalancer< T >::swap | ( | HeuristicLoadBalancer< T > & | loadBalancer | ) |
Definition at line 65 of file heuristicLoadBalancer.hh.
References olb::LoadBalancer< T >::swap().