xc
Public Member Functions | List of all members
XC::SwapHeavierToLighterNeighbours Class Reference

A SwapHeavierToLighterNeighbours is an object used to balance a PartitionedDomain. More...

#include <SwapHeavierToLighterNeighbours.h>

Inheritance diagram for XC::SwapHeavierToLighterNeighbours:
Inheritance graph
[legend]
Collaboration diagram for XC::SwapHeavierToLighterNeighbours:
Collaboration graph
[legend]

Public Member Functions

 SwapHeavierToLighterNeighbours ()
 Default constructor.
 
 SwapHeavierToLighterNeighbours (double factorGreater, int numReleases)
 Constructor. More...
 
virtual int balance (Graph &theWeightedGraph)
 For numRelease times the Vertices of theWeightedGraph are iterated through. More...
 
- Public Member Functions inherited from XC::LoadBalancer
 LoadBalancer (void)
 Default constructor.
 
 LoadBalancer (double factGreater, int releases, bool disallowDisconnected=true)
 Constructor. More...
 
virtual void setLinks (DomainPartitioner &thePartitioner)
 Sets the pointer to the DomainPartitioner object associated with the LoadBalancer to point to thePartitioner. More...
 
- Public Member Functions inherited from CommandEntity
 CommandEntity (CommandEntity *owr=nullptr)
 Default constructor.
 
CommandEntityOwner (void)
 Return a pointer to the object owner.
 
const CommandEntityOwner (void) const
 Return un puntero al objeto propietario de ESTE.
 
const StandardOutputWrappergetStandardOutputWrapper (void) const
 Return the regular output stream wrapper.
 
StandardOutputWrappergetStandardOutputWrapper (void)
 Return the regular output stream wrapper.
 
const std::string & getLogFileName (void) const
 Returns log file name.
 
void setLogFileName (const std::string &)
 Sets log file name.
 
const std::string & getErrFileName (void) const
 Returns err file name.
 
void setErrFileName (const std::string &)
 Sets error file name.
 
const std::string & getOutputFileName (void) const
 Returns regular output file name.
 
void setOutputFileName (const std::string &)
 Sets regular output file name.
 
boost::python::object evalPy (boost::python::object dict, const std::string &)
 Return the Python object that results from evaluating the argument.
 
boost::python::object execPy (boost::python::object dict, const std::string &)
 Return the Python objects that results from executing the code in the string argument.
 
boost::python::object execFilePy (boost::python::object dict, const std::string &)
 Return the Python object that results from executing the code in the file.
 
- Public Member Functions inherited from EntityWithProperties
 EntityWithProperties (EntityWithProperties *owr=nullptr)
 Default constructor.
 
virtual bool operator== (const EntityWithProperties &) const
 Comparison operator.
 
void clearPyProps (void)
 Clear python properties map.
 
bool hasPyProp (const std::string &)
 Returns true if property exists.
 
boost::python::object getPyProp (const std::string &str)
 Return the Python object with the name being passed as parameter.
 
void setPyProp (std::string str, boost::python::object val)
 Sets/appends a value tho the Python object's dictionary.
 
void copyPropsFrom (const EntityWithProperties &)
 Copy the properties from the argument.
 
boost::python::list getPropNames (void) const
 Return the names of the object properties weightings.
 
const PythonDict & getPropertiesDict (void) const
 Return a std::map container with the properties of the object.
 
boost::python::dict getPyDict (void) const
 Return a Python dictionary containing the object members values.
 
void setPyDict (const boost::python::dict &)
 Set the values of the object members from a Python dictionary.
 
- Public Member Functions inherited from EntityWithOwner
 EntityWithOwner (EntityWithOwner *owr=nullptr)
 Default constructor.
 
 EntityWithOwner (const EntityWithOwner &)
 Copy constructor.
 
EntityWithOwneroperator= (const EntityWithOwner &)
 Assignment operator.
 
virtual bool operator== (const EntityWithOwner &) const
 Comparison operator.
 
virtual ~EntityWithOwner (void)
 Virtual destructor.
 
virtual std::string getClassName (void) const
 Returns demangled class name.
 
void set_owner (EntityWithOwner *owr)
 Assigns the owner of the object.
 
EntityWithOwnerOwner (void)
 
const EntityWithOwnerOwner (void) const
 

Additional Inherited Members

- Public Types inherited from EntityWithProperties
typedef std::map< std::string, boost::python::object > PythonDict
 
- Static Public Member Functions inherited from CommandEntity
static void resetStandardOutput (void)
 Reset the standard output streams to its defaults buffers.
 
- Static Public Member Functions inherited from EntityWithOwner
static int getVerbosityLevel (void)
 Get the value of the verbosity level.
 
static void setVerbosityLevel (const int &)
 Set the value of the verbosity level.
 
- Protected Member Functions inherited from XC::LoadBalancer
DomainPartitionergetDomainPartitioner (void)
 Returns a pointer to the DomainPartitioner. More...
 
- Protected Member Functions inherited from CommandEntity
template<class T >
void string_to (T &, const std::string &) const
 
- Static Protected Member Functions inherited from CommandEntity
static CommandEntityentcmd_cast (boost::any &data)
 
- Protected Attributes inherited from XC::LoadBalancer
int numReleases
 
double factorGreater
 number of releases.
 
bool disallowDisconnectedGraphs
 
- Static Protected Attributes inherited from EntityWithOwner
static int verbosity = 1
 Object that owns THIS ONE. More...
 

Detailed Description

A SwapHeavierToLighterNeighbours is an object used to balance a PartitionedDomain.

A SwapHeavierToLighterNeighbours is an object used to balance a PartitionedDomain. It does this by shedding the boundary vertices on the heaviest loaded partition (subdomain). It will go thought the weigted partition graph and shed load from a heavier to its lighter neighbours if the ratio between the two is greater than a certain percent. It repaets this process a number of times.

Constructor & Destructor Documentation

◆ SwapHeavierToLighterNeighbours()

XC::SwapHeavierToLighterNeighbours::SwapHeavierToLighterNeighbours ( double  fG,
int  rels 
)

Constructor.

Sets the parameters used in the balance() method.

Parameters
fGfactor greater.
relsnumber of releases.

Member Function Documentation

◆ balance()

int XC::SwapHeavierToLighterNeighbours::balance ( Graph theWeightedGraph)
virtual

For numRelease times the Vertices of theWeightedGraph are iterated through.

For each Vertex, \(i\), the weight of the Vertex is compared to those of it's adjacent Vertices, \(other\), (this is done by looping through the adjacency ID of the Vertex), if the vertex weight is {factorGreater} times greater than the other Vertices load then {swapBoundary(i, other)} is invoked on the DomainPartitioner. Returns \(0\) if successful, otherwise a negative number and a warning message are returned if either no link has been set to the DomainPartitioner or swapBoundary() returns a negative number.

Implements XC::LoadBalancer.


The documentation for this class was generated from the following files: