Go to the source code of this file.
Data Structures | |
class | Vertex_helper |
Class to contain additional data about the vertices in object graph. More... | |
class | BQueue |
Class to handle the boundaries of child partitions. More... | |
Functions | |
void | RecursiveBiPart (ObjGraph *, vector< Vertex * > &, int, int) |
void | adjustqueues (ObjGraph *, BQueue *, BQueue *, vector< Vertex * > &, vector< Vertex * > &, int *, int) |
void | adjustgain (ObjGraph *, vector< Vertex * > &, BQueue *) |
void | RefineBoundary (ObjGraph *, vector< Vertex * > &, vector< Vertex * > &, BQueue *, BQueue *, int, int, int, double, double, double) |
int | modifypartitions (ObjGraph *, vector< Vertex * > &, vector< Vertex * > &, BQueue *, BQueue *, int, int) |
void | swapQ1toQ2 (ObjGraph *, BQueue *, BQueue *, int) |
Vertex * | removeinSwap (ObjGraph *, BQueue *, BQueue *, int) |
Vertex * | removePtr (vector< Vertex * > &, int) |
CreateLBFunc_Def (RecBipartLB,"Algorithm for load balacing based on recursive bipartitioning of object graph") | |
Variables | |
int | quietModeRequested |
int | level |
double | TOTALLOAD |
vector< Vertex_helper * > | vhelpers |
int | numparts |
int | peno |
ProcArray * | parray |
This strategy does a recursive bipartition of the object graph and the processor graph. The objects are divided based on the loads in case of odd number of processors. Recursive bi-partitioning is done by a breadth-first traversal until you have the required load in one group.
At each recursive biparititioning, the boundaries are refined to minimize the edge cut. Vertices are moved across the boundary to see if the edge cut reduces while trying to maintain proportionate load in both partitions.
Definition in file RecBipartLB.C.