Charm++ Load Balancing Framework

Collaboration diagram for Charm++ Load Balancing Framework:

NullLB is a place holder load balancer, it does nothing but resume from atSync so that application won't hang in the case where there is no other load balancer around. More...

Data Structures

class  BaseLB
 BaseLB is the base class for all LB strategy class. More...
struct  MigrateInfo
 migration decision for an obj. More...
class  LBMigrateMsg
 message contains the migration decision from LB strategies. More...
struct  VectorMigrateInfo
class  LBVectorMigrateMsg
struct  BV_Set
class  LBInfo
class  SpanningTree
 added by Abhinav class for computing the parent and children of a processor More...
class  CentralLB
class  CLBStatsMsg
class  ComboCentLB
struct  alloc_struct
class  Comm1LB
class  ObjectRecord
class  hRecord
class  hIterator
class  ObjectHeap
class  DummyLB
class  InfoRecord
class  computeInfo
class  processorInfo
struct  VertexRecord
class  Graph
class  GreedyAgentLB
struct  graph
class  GreedyCommLB
class  GreedyLB
class  MyHmbHierarchyTree
class  HypercubeTree
class  HbmLB
class  heapRecord
class  heapIterator
class  minHeap< T >
class  maxHeap
class  MyHierarchyTree
class  ThreeLevelTree
class  FourLevelTree
class  HybridBaseLB
class  HybridLB
class  LBCommData
class  LBCommTable
class  LBDBRegistry
class  CkLBArgs
class  CkLBOptions
class  LBDBInit
class  LBPredictorFunction
class  DefaultFunction
class  LBDatabase
class  SystemLoad
struct  LDHandle
struct  _LDOMid
struct  LDOMHandle
struct  _LDObjid
struct  _LDObjKey
struct  LDObjHandle
struct  LDObjData
struct  LDObjStats
struct  _LDCommDesc
struct  LDCommData
struct  LDCallbacks
struct  LDBarrierClient
struct  LDBarrierReceiver
class  LocalBarrier
class  LBDB
class  LBMachineUtil
class  LBObj
class  LBOM
class  LBProfit
 a module which determines if a load balancing cycle is profitable More...
class  MetisLB
class  NborBaseLB
class  NLBStatsMsg
class  NeighborCommLB
class  NeighborLB
class  NullLB
 NullLB is inherited from BaseLB. More...
class  ObjGraph
class  OrbLB
class  PhasebyArrayLB
class  RandCentLB
struct  PartitionRecord
struct  PartitionList
class  RecBisectBfLB
class  RefineCommLB
class  RefineKLB
class  RefineLB
class  Refiner
class  RefinerComm
class  listNode
class  Iterator
class  Set
class  WSLB
class  WSLBStatsMsg
class  LBTopo_smp_n< ppn >
class  LBTopo_torus_nd< dimension >
class  LBTopo_itorus_nd< dimension >
class  LBTopo_imesh_nd< dimension >
class  LBTopo_complete
class  LBTopo_karytree< k >
class  LBTopoMap
class  LBTopoVec
class  LBTopology
class  LBTopo_ring
class  LBTopo_torus2d
class  LBTopo_torus3d
class  LBTopo_mesh3d
class  LBTopo_graph

Typedefs

typedef LBMigrateMsg CLBMigrateMsg
 for backward compatibility
typedef LBMigrateMsg CLBMigrateMsg
 for backward compatibility
typedef LBMigrateMsg NLBMigrateMsg
 for backward compatibility
typedef LBMigrateMsg NLBMigrateMsg
 for backward compatibility
typedef void(*) LBCreateFn ()
typedef BaseLB *(*) LBAllocFn ()
typedef void * cvoid
typedef int LDHandle
typedef _LDOMid LDOMid
typedef _LDObjid LDObjid
typedef _LDObjKey LDObjKey
typedef int LDObjIndex
typedef int LDOMIndex
typedef _LDCommDesc LDCommDesc
typedef void(*) LDMigrateFn (LDObjHandle handle, int dest)
typedef void(*) LDStatsFn (LDOMHandle h, int state)
typedef void(*) LDQueryEstLoadFn (LDOMHandle h)
typedef void(*) LDMigratedFn (void *data, LDObjHandle handle, int waitBarrier)
typedef void(*) LDStartLBFn (void *user_ptr)
typedef void(*) LDPredictFn (void *user_ptr)
typedef void(*) LDPredictModelFn (void *user_ptr, void *model)
typedef void(*) LDPredictWindowFn (void *user_ptr, void *model, int wind)
typedef void(*) LDBarrierFn (void *user_ptr)
typedef void(*) LDResumeFn (void *user_ptr)
typedef LBMigrateMsg NLBMigrateMsg
 for backward compatibility
typedef CkQ< intIntQueue
typedef LBTopo_smp_n< 1 > LBTopo_smp_n_1
typedef LBTopo_smp_n< 2 > LBTopo_smp_n_2
typedef LBTopo_smp_n< 3 > LBTopo_smp_n_3
typedef LBTopo_smp_n< 4 > LBTopo_smp_n_4
typedef LBTopo_torus_nd< 1 > LBTopo_torus_nd_1
typedef LBTopo_torus_nd< 2 > LBTopo_torus_nd_2
typedef LBTopo_torus_nd< 3 > LBTopo_torus_nd_3
typedef LBTopo_torus_nd< 4 > LBTopo_torus_nd_4
typedef LBTopo_torus_nd< 5 > LBTopo_torus_nd_5
typedef LBTopo_torus_nd< 6 > LBTopo_torus_nd_6
typedef LBTopo_torus_nd< 7 > LBTopo_torus_nd_7
typedef LBTopo_itorus_nd< 1 > LBTopo_itorus_nd_1
typedef LBTopo_itorus_nd< 2 > LBTopo_itorus_nd_2
typedef LBTopo_itorus_nd< 3 > LBTopo_itorus_nd_3
typedef LBTopo_itorus_nd< 4 > LBTopo_itorus_nd_4
typedef LBTopo_itorus_nd< 5 > LBTopo_itorus_nd_5
typedef LBTopo_itorus_nd< 6 > LBTopo_itorus_nd_6
typedef LBTopo_itorus_nd< 7 > LBTopo_itorus_nd_7
typedef LBTopo_imesh_nd< 1 > LBTopo_imesh_nd_1
typedef LBTopo_imesh_nd< 2 > LBTopo_imesh_nd_2
typedef LBTopo_imesh_nd< 3 > LBTopo_imesh_nd_3
typedef LBTopo_imesh_nd< 4 > LBTopo_imesh_nd_4
typedef LBTopo_imesh_nd< 5 > LBTopo_imesh_nd_5
typedef LBTopo_imesh_nd< 6 > LBTopo_imesh_nd_6
typedef LBTopo_imesh_nd< 7 > LBTopo_imesh_nd_7
typedef LBTopo_karytree< 2 > LBTopo_2_arytree
typedef LBTopo_karytree< 3 > LBTopo_3_arytree
typedef LBTopo_karytree< 3 > LBTopo_4_arytree
typedef LBTopology *(*) LBtopoFn (int)
typedef void *(*) LBtopoFn ()

Functions

static int i_abs (int c)
static int ObjKey (const LDObjid &oid, const int hashSize)
static unsigned int primeLargerThan (unsigned int x)
BV_SetmakeSet (int *list, int size, int max)
BV_SetmakeEmptySet (int max)
void destroySet (BV_Set *set)
void bvset_insert (BV_Set *s, int value)
int bvset_find (BV_Set *s, int value)
int bvset_size (BV_Set *s)
void bvset_enumerate (BV_Set *s, int **list, int *size)
 CpvExtern (void *, CkGridObject)
 CreateLBFunc_Def (CentralLB,"CentralLB base class")
static void getPredictedLoadWithMsg (BaseLB::LDStats *stats, int count, LBMigrateMsg *, LBInfo &info, int considerComm)
static int isMigratable (LDObjData **objData, int *len, int count, const LDCommData &commData)
void CreateCentralLB ()
void getLoadInfo (BaseLB::LDStats *stats, int count, LBInfo &info, int considerComm)
void gaussj (double **a, double *b, int n)
void Marquardt_coefficients (double *x, double *y, double *param, double **alpha, double *beta, double &chisq, LBPredictorFunction *predict)
bool Marquardt_solver (CentralLB::FutureModel *mod, int object)
LBAllocFn getLBAllocFn (char *lbname)
 CreateLBFunc_Def (ComboCentLB,"Allow multiple strategies to work serially")
void CreateComboCentLB ()
 CreateLBFunc_Def (Comm1LB,"another variation of CommLB")
void init (alloc_struct **a, graph *object_graph, int l, int b)
void CreateComm1LB ()
 CreateLBFunc_Def (DummyLB,"Dummy load balancer, like a normal one but with empty strategy")
void CreateDummyLB ()
static void CreateNoLB (void)
void initEveryLB (void)
void printPartition (Graph *g, int nodes[], int numNodes)
int intSqrt (int x)
Graphg_initGraph (int v, int e)
 Status: does not support processor avail bitvector does not support nonmigratable attrib.
void g_freeGraph (Graph *g)
void g_nextVertex (Graph *g, int v, float weight)
void g_addEdge (Graph *g, int w, float weight)
void g_finishVertex (Graph *g)
GraphgenerateRandomGraph (int numNodes)
void g_printGraph (Graph *g)
int g_numNeighbors (Graph *g, int node)
int g_getNeighbor (Graph *g, int node, int i)
float graph_weightof (Graph *g, int vertex)
 CreateLBFunc_Def (GreedyAgentLB,"always assign the heaviest obj onto lightest loaded processor taking into account the topology")
void CreateGreedyAgentLB ()
 CreateLBFunc_Def (GreedyCommLB,"Greedy algorithm which takes communication graph into account")
static void init_data (int *assign, graph *object_graph, int l, int b)
void CreateGreedyCommLB ()
BaseLBAllocateGreedyCommLB ()
 CreateLBFunc_Def (GreedyLB,"always assign the heaviest obj onto lightest loaded processor.")
void CreateGreedyLB ()
BaseLBAllocateGreedyLB ()
 CreateLBFunc_Def (HbmLB,"HybridBase load balancer")
double myabs (double x)
double mymax (double x, double y)
void CreateHbmLB ()
 CreateLBFunc_Def (HybridBaseLB,"HybridBase load balancer")
LBVectorMigrateMsgVectorStrategy (BaseLB::LDStats *stats, int count)
void CreateHybridBaseLB ()
int mymin (int x, int y)
 CreateLBFunc_Def (HybridLB,"Hybrid load balancer")
void CreateHybridLB ()
 CkpvDeclare (int, numLoadBalancers)
 num of lb created
 CkpvDeclare (int, hasNullLB)
 true if NullLB is created
 CkpvDeclare (int, lbdatabaseInited)
 true if lbdatabase is inited
void LBDefaultCreate (const char *lbname)
void LBRegisterBalancer (const char *name, LBCreateFn fn, LBAllocFn afn, const char *help, int shown)
static void createLoadBalancer (const char *lbname)
void _loadbalancerInit ()
void TurnManualLBOn ()
void TurnManualLBOff ()
void LBTurnInstrumentOn ()
void LBTurnInstrumentOff ()
void LBClearLoads ()
void LBTurnPredictorOn (LBPredictorFunction *model)
void LBTurnPredictorOn (LBPredictorFunction *model, int wind)
void LBTurnPredictorOff ()
void LBChangePredictor (LBPredictorFunction *model)
void LBSetPeriod (double second)
 PUPbytes (CkLBOptions)
 CkpvExtern (int, numLoadBalancers)
 CkpvExtern (int, hasNullLB)
 CkpvExtern (int, lbdatabaseInited)
void LBDefaultCreate (LBCreateFn f)
void _LBDBInit ()
LBDatabaseLBDatabaseObj ()
void get_avail_vector (char *bitmap)
void set_avail_vector (char *bitmap)
LDHandle LDCreate (void)
LDOMHandle LDRegisterOM (LDHandle _db, LDOMid _userID, void *_userptr, LDCallbacks _callbacks)
void * LDOMUserData (LDOMHandle &_h)
void LDRegisteringObjects (LDOMHandle _h)
void LDDoneRegisteringObjects (LDOMHandle _h)
LDObjHandle LDRegisterObj (LDOMHandle _h, LDObjid _id, void *_userData, int _migratable)
void LDUnregisterObj (LDObjHandle _h)
const LDObjHandleLDGetObjHandle (LDHandle h, int oh)
void LDObjTime (LDObjHandle &_h, double walltime, double cputime)
void LDQueryKnownObjLoad (LDObjHandle &_h, double *cpuT, double *wallT)
void * LDObjUserData (LDObjHandle &_h)
void LDDumpDatabase (LDHandle _db)
void LDNotifyMigrated (LDHandle _db, LDMigratedFn fn, void *data)
void LDAddStartLBFn (LDHandle _db, LDStartLBFn fn, void *data)
void LDRemoveStartLBFn (LDHandle _db, LDStartLBFn fn)
void LDStartLB (LDHandle _db)
void LDTurnManualLBOn (LDHandle _db)
void LDTurnManualLBOff (LDHandle _db)
void LDTurnPredictorOn (LDHandle _db, void *model)
void LDTurnPredictorOnWin (LDHandle _db, void *model, int wind)
void LDTurnPredictorOff (LDHandle _db)
void LDChangePredictor (LDHandle _db, void *model)
void LDCollectStatsOn (LDHandle _db)
void LDCollectStatsOff (LDHandle _db)
int CLDCollectingStats (LDHandle _db)
int CLDRunningObject (LDHandle _h, LDObjHandle *_o)
void LDObjectStart (const LDObjHandle &_h)
void LDObjectStop (const LDObjHandle &_h)
void LDSend (const LDOMHandle &destOM, const LDObjid &destid, unsigned int bytes, int destObjProc)
void LDMulticastSend (const LDOMHandle &destOM, LDObjid *destids, int ndests, unsigned int bytes, int nMsgs)
void LDBackgroundLoad (LDHandle _db, double *walltime, double *cputime)
void LDIdleTime (LDHandle _db, double *walltime)
void LDTotalTime (LDHandle _db, double *walltime, double *cputime)
void LDGetTime (LDHandle _db, double *total_walltime, double *total_cputime, double *idletime, double *bg_walltime, double *bg_cputime)
void LDNonMigratable (const LDObjHandle &h)
void LDMigratable (const LDObjHandle &h)
void LDAsyncMigrate (const LDObjHandle &h, CmiBool async)
void LDClearLoads (LDHandle _db)
int LDGetObjDataSz (LDHandle _db)
void LDGetObjData (LDHandle _db, LDObjData *data)
int LDGetCommDataSz (LDHandle _db)
void LDGetCommData (LDHandle _db, LDCommData *data)
int LDMigrate (LDObjHandle _h, int dest)
void LDMigrated (LDObjHandle _h, int waitBarrier)
LDBarrierClient LDAddLocalBarrierClient (LDHandle _db, LDResumeFn fn, void *data)
void LDRemoveLocalBarrierClient (LDHandle _db, LDBarrierClient h)
LDBarrierReceiver LDAddLocalBarrierReceiver (LDHandle _db, LDBarrierFn fn, void *data)
void LDRemoveLocalBarrierReceiver (LDHandle _db, LDBarrierReceiver h)
void LDAtLocalBarrier (LDHandle _db, LDBarrierClient h)
void LDLocalBarrierOn (LDHandle _db)
void LDLocalBarrierOff (LDHandle _db)
void LDResumeClients (LDHandle _db)
static void work (int iter_block, int *result)
int LDProcessorSpeed ()
void LDSetLBPeriod (LDHandle _db, double s)
double LDGetLBPeriod (LDHandle _db)
void LDQueryEstLoad (LDHandle bdb)
int LDMemusage (LDHandle _db)
CmiBool LDOMidEqual (const LDOMid &i1, const LDOMid &i2)
CmiBool LDObjIDEqual (const LDObjid &i1, const LDObjid &i2)
CmiBool _LDOMid::operator== (const struct _LDOMid &omId) const
CmiBool _LDOMid::operator!= (const struct _LDOMid &omId) const
void _LDOMid::pup (PUP::er &p)
void LDOMHandle::pup (PUP::er &p)
CmiBool _LDObjid::operator== (const struct _LDObjid &objid) const
void _LDObjid::pup (PUP::er &p)
CmiBool _LDObjKey::operator== (const _LDObjKey &obj) const
LDOMid_LDObjKey::omID ()
LDObjid_LDObjKey::objID ()
const LDOMid_LDObjKey::omID () const
const LDObjid_LDObjKey::objID () const
void _LDObjKey::pup (PUP::er &p)
const LDOMidLDObjHandle::omID () const
const LDObjidLDObjHandle::objID () const
void LDObjHandle::pup (PUP::er &p)
const LDOMHandleLDObjData::omHandle () const
const LDOMidLDObjData::omID () const
const LDObjidLDObjData::objID () const
const LDObjidLDObjData::id () const
void LDObjData::pup (PUP::er &p)
void LDObjStats::pup (PUP::er &p)
char & _LDCommDesc::get_type ()
char _LDCommDesc::get_type () const
int _LDCommDesc::proc () const
void _LDCommDesc::setProc (int pe)
int _LDCommDesc::lastKnown () const
LDObjKey_LDCommDesc::get_destObj ()
LDObjKey const & _LDCommDesc::get_destObj () const
LDObjKey_LDCommDesc::get_destObjs (int &len)
void _LDCommDesc::init_objmsg (LDOMid &omid, LDObjid &objid, int destObjProc)
void _LDCommDesc::init_mcastmsg (LDOMid &omid, LDObjid *objid, int len)
CmiBool _LDCommDesc::operator== (const _LDCommDesc &obj) const
_LDCommDesc_LDCommDesc::operator= (const _LDCommDesc &c)
void _LDCommDesc::pup (PUP::er &p)
int LDCommData::from_proc () const
int LDCommData::recv_type () const
void LDCommData::pup (PUP::er &p)
void LDCommData::clearHash ()
void LBBalance (void *param)
void LBCollectStatsOn (void)
void LBCollectStatsOff (void)
void LDMessage (LDObjHandle from, LDOMid toOM, LDObjid *toID, int bytes)
void LDEstObjLoad (LDObjHandle h, double load)
 PUPbytes (LDHandle) inline void LDOMid
 PUPmarshall (LDOMid)
 PUPmarshall (LDObjid)
 PUPmarshall (LDObjKey)
 PUPmarshall (LDObjStats)
 PUPmarshall (LDOMHandle)
 PUPmarshall (LDObjHandle)
 PUPmarshall (LDObjData)
 PUPmarshall (LDCommDesc) inline void LDCommData
static void handler (char *bit_map)
void manager_init (void)
 Cluster Manager Code, Accpets external bit vectors and then feeds it into the loadbalancer so that programs can shrink and expand.
 CreateLBFunc_Def (MetisLB,"Use Metis(tm) to partition object graph")
static void printStats (int count, int numobjs, double *cputimes, int **comm, int *map)
void METIS_PartGraphRecursive (int *, int *, int *, int *, int *, int *, int *, int *, int *, int *, int *)
void METIS_PartGraphKway (int *, int *, int *, int *, int *, int *, int *, int *, int *, int *, int *)
void METIS_PartGraphVKway (int *, int *, int *, int *, int *, int *, int *, int *, int *, int *, int *)
void METIS_WPartGraphRecursive (int *, int *, int *, int *, int *, int *, int *, int *, float *, int *, int *, int *)
void METIS_WPartGraphKway (int *, int *, int *, int *, int *, int *, int *, int *, float *, int *, int *, int *)
void METIS_mCPartGraphRecursive (int *, int *, int *, int *, int *, int *, int *, int *, int *, int *, int *, int *)
void METIS_mCPartGraphKway (int *, int *, int *, int *, int *, int *, int *, int *, int *, int *, int *, int *, int *)
void CreateMetisLB ()
BaseLBAllocateMetisLB ()
void CreateNborBaseLB ()
 CreateLBFunc_Def (NeighborCommLB,"The neighborhood load balancer with communication")
void CreateNeighborCommLB ()
 CreateLBFunc_Def (NeighborLB,"The neighborhood load balancer")
void CreateNeighborLB ()
void CreateNullLB (void)
static void migrationDone (envelope *env)
static void lbinit (void)
static void lbprocinit (void)
static void staticStartLB (void *data)
 CreateLBFunc_Def (OrbLB,"partition objects based on coordinates")
void CreateOrbLB ()
BaseLBAllocateOrbLB (void)
 CreateLBFunc_Def (PhasebyArrayLB,"Load balancer which balances many arrays together, specifically for CPAIMD")
void CreatePhasebyArrayLB ()
 CreateLBFunc_Def (RandCentLB,"Assign objects to processors randomly")
int chooseProc (int count)
void CreateRandCentLB ()
 CreateLBFunc_Def (RecBisectBfLB,"Recursive partitioning with Breadth first enumeration")
void CreateRecBisectBfLB ()
BaseLBAllocateRecBisectBfLB ()
 CreateLBFunc_Def (RefineCommLB,"Average load among processors by moving objects away from overloaded processor, communication aware")
void CreateRefineCommLB ()
BaseLBAllocateRefineCommLB ()
 CreateLBFunc_Def (RefineKLB,"Move objects away from overloaded processor to reach average")
void CreateRefineKLB ()
BaseLBAllocateRefineKLB ()
 CreateLBFunc_Def (RefineLB,"Move objects away from overloaded processor to reach average")
void CreateRefineLB ()
BaseLBAllocateRefineLB ()
 CreateLBFunc_Def (WSLB,"Workstation load balancer")
void CreateWSLB ()
virtual int LBTopo_smp_n::max_neighbors ()
virtual void LBTopo_smp_n::neighbors (int mype, int *_n, int &nb)
int LBTopo_smp_n::get_hop_count (int src, int dest)
 LBTOPO_MACRO (LBTopo_smp_n_1)
 LBTOPO_MACRO (LBTopo_smp_n_2)
 LBTOPO_MACRO (LBTopo_smp_n_3)
 LBTOPO_MACRO (LBTopo_smp_n_4)
 LBTOPO_MACRO (LBTopo_ring)
 LBTOPO_MACRO (LBTopo_torus2d)
static int checkuniq (int *arr, int nb, int val)
 LBTOPO_MACRO (LBTopo_torus3d)
 LBTOPO_MACRO (LBTopo_mesh3d)
int LBTopo_torus_nd::GetNeighborID (int ProcessorID, int number)
 LBTopo_torus_nd::LBTopo_torus_nd (int p)
 LBTopo_torus_nd::~LBTopo_torus_nd ()
virtual int LBTopo_torus_nd::max_neighbors ()
virtual void LBTopo_torus_nd::neighbors (int mype, int *_n, int &nb)
virtual int LBTopo_torus_nd::get_dimension ()
virtual bool LBTopo_torus_nd::get_processor_coordinates (int processor_id, int *processor_coordinates)
virtual bool