changa  3.5
 All Classes Files Functions Variables Typedefs Enumerations Friends Macros Groups Pages
Protected Member Functions | Protected Attributes | List of all members
Orb3dCommon Class Reference

Common methods among Orb3d class load balancers. More...

#include <Orb3dLBCommon.h>

Inheritance diagram for Orb3dCommon:
MultistepLB_notopo MultistepNodeLB_notopo Orb3dLB_notopo

Protected Member Functions

void orbPePartition (vector< Event > *events, vector< OrbObject > &tp, int node, BaseLB::LDStats *stats)
 
void orbPartition (vector< Event > *events, OrientedBox< float > &box, int nprocs, vector< OrbObject > &tp, BaseLB::LDStats *stats, bool node_partition=false)
 Recursively partition treepieces among processors by bisecting the load in orthogonal directions. More...
 
void orbPrepare (vector< Event > *tpEvents, OrientedBox< float > &box, int numobjs, BaseLB::LDStats *stats, bool node_partition=false)
 Prepare structures for the ORB partition. More...
 
void refine (BaseLB::LDStats *stats, int numobjs)
 
int partitionRatioLoad (vector< Event > &events, float ratio, float bglp, float bgrp)
 Given a vector of Events, find a split that partitions them into two partitions with a given ratio of loads. More...
 

Protected Attributes

decltype(BaseLB::LDStats::to_proc)* mapping
 
decltype(BaseLB::LDStats::from_proc)* from
 
CkVec< float > procload
 
double maxPieceProc
 
int nextProc
 index of first processor of the group we are considering
 

Detailed Description

Common methods among Orb3d class load balancers.

Member Function Documentation

void Orb3dCommon::orbPartition ( vector< Event > *  events,
OrientedBox< float > &  box,
int  nprocs,
vector< OrbObject > &  tp,
BaseLB::LDStats *  stats,
bool  node_partition = false 
)
inlineprotected

Recursively partition treepieces among processors by bisecting the load in orthogonal directions.

Parameters
eventsArray of three (1 per dimension) Event vectors. These are separate in each dimension for easy sorting.
boxSpatial bounding box
nprocsNumber of processors over which to partition the Events. N.B. if node_partition is true, then this is the number of nodes.
tpVector of TreePiece data.
void Orb3dCommon::orbPrepare ( vector< Event > *  tpEvents,
OrientedBox< float > &  box,
int  numobjs,
BaseLB::LDStats *  stats,
bool  node_partition = false 
)
inlineprotected

Prepare structures for the ORB partition.

Parameters
tpEventsArray of 3 (1 per dimension) Event vectors.
boxReference to bounding box (set here).
numobjsNumber of tree pieces to partition.
statsData from the load balancing framework.
node_partitionAre we partitioning on nodes.
int Orb3dCommon::partitionRatioLoad ( vector< Event > &  events,
float  ratio,
float  bglp,
float  bgrp 
)
inlineprotected

Given a vector of Events, find a split that partitions them into two partitions with a given ratio of loads.

Parameters
eventsVector of Events to split
ratioTarget ratio of loads in left partition to total load.
bglpBackground load on the left processors.
bgrpBackground load on the right processors.
Returns
Starting index of right partition.

Member Data Documentation

double Orb3dCommon::maxPieceProc
protected

Take into account memory constraints by limiting the number of pieces per processor.


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