changa 3.5
|
Multistep load balancer using Space Filling Curve. More...
#include <MultistepLB_SFC.h>
Classes | |
class | SFCObject |
Public Member Functions | |
MultistepLB_SFC (const CkLBOptions &) | |
MultistepLB_SFC (CkMigrateMessage *m) | |
void | work (BaseLB::LDStats *stats) |
Implement load balancing: store loads and determine active processors and objects, sort by SFC, then divide up among processors. | |
void | work2 (BaseLB::LDStats *stats) |
SFC load balance. | |
void | sfcPrepare (std::vector< SFCObject > &tp_array, int nObjs, BaseLB::LDStats *stats, bool node_partition=false) |
Prepare structures for the ORB partition. | |
void | sfcPartition (int nProcs, std::vector< SFCObject > &tp, BaseLB::LDStats *stats, bool node_partition=false) |
Partition treepieces among processors by dividing the SFC as evenly as possible. | |
void | pup (PUP::er &p) |
Multistep load balancer using Space Filling Curve.
This balancer recognizes different "phases" (called rungs in other parts of the code), and uses loads based on measurements of the previous calculation at the same phase. For large phases, (i.e., when many particles are active, the TreePieces are divided among the processors using a Space Filling Curve based on the centroids of the TreePieces.
void MultistepLB_SFC::sfcPartition | ( | int | nProcs, |
std::vector< SFCObject > & | tp, | ||
BaseLB::LDStats * | stats, | ||
bool | node_partition = false ) |
Partition treepieces among processors by dividing the SFC as evenly as possible.
nprocs | Number of processors over which to partition the pieces. N.B. if node_partition is true, then this is the number of nodes. |
tp | Vector of TreePiece data. |
stats | Load balance data |
void MultistepLB_SFC::sfcPrepare | ( | std::vector< SFCObject > & | tp_array, |
int | nObjs, | ||
BaseLB::LDStats * | stats, | ||
bool | node_partition = false ) |
Prepare structures for the ORB partition.
tp_array | Reference to Vector of Objects representing TreePieces. |
nObjs | Number of tree pieces to partition. |
stats | Data from the load balancing framework. |
node_partition | Are we partitioning on nodes. |
void MultistepLB_SFC::work | ( | BaseLB::LDStats * | stats | ) |
Implement load balancing: store loads and determine active processors and objects, sort by SFC, then divide up among processors.
stats | The Load Balancer statistics object. |