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:
XC::LoadBalancer

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...
 

Additional Inherited Members

- Protected Member Functions inherited from XC::LoadBalancer
DomainPartitionergetDomainPartitioner (void)
 Returns a pointer to the DomainPartitioner. More...
 
- Protected Attributes inherited from XC::LoadBalancer
int numReleases
 
double factorGreater
 number of releases.
 
bool disallowDisconnectedGraphs
 

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 successfull, 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: